Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# PyCharm related files
venv/
.idea
build/
vbbpy.egg-info/
.pytest_cache/
6 changes: 3 additions & 3 deletions vbbpy/main.py → main.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from vbbpy import classes
from vbbpy import connections, station

def getDeparturesFromStation(time):

testStation = classes.Station("")
testStation = station.Station("")
testStation.getProducts()
testStation.getLines()

Expand All @@ -15,7 +15,7 @@ def getDeparturesFromStation(time):

def main():

testJourneys = classes.Connections("", "")
testJourneys = connections.Connections("", "")
testJourneys.getConnections()

for j in testJourneys.routes:
Expand Down
12 changes: 6 additions & 6 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from setuptools import setup

setup(
name='vbbpy',
version='1.0.0',
description='A python wrapper for the VBB REST-API',
author='Colum31',
packages=['vbbpy'], # would be the same as name
install_requires=['requests', 'datetime'] #external packages acting as dependencies
name='vbbpy',
version='1.1.0',
description='A python wrapper for the VBB REST-API',
author='Colum31',
packages=['vbbpy'], # would be the same as name
install_requires=['requests', 'datetime'] # external packages acting as dependencies
)
7 changes: 3 additions & 4 deletions vbbpy/stationId.py → stationId.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
# Author Colum31, 24.2.2022

import sys
from vbbpy import classes
from vbbpy.classes import Modes

from vbbpy import station


def main():
Expand All @@ -14,8 +14,7 @@ def main():
print("usage: {} [Station name]".format(sys.argv[0]))
sys.exit(1)

apiResponse = classes.makeStationsRequest(sys.argv[1], Modes.STATIONS_QUERY, fuzzy=True, completion=True)
resultList = classes.parseStationResponse(apiResponse.json(), None, Modes.STATIONS_QUERY)
resultList = station.Station.queryStations(sys.argv[1])

if resultList is None:
return 1
Expand Down
61 changes: 6 additions & 55 deletions tests/test_helperFunctions.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from unittest import TestCase
from vbbpy import classes
import datetime
from unittest import TestCase

from vbbpy import vbbHelper


def gen_timestring(i):
Expand Down Expand Up @@ -30,7 +31,7 @@ def test_hourMinuteString(self):
"2020-11-23T01:31:01+02:00": "01:31", "2020-11-23T01:31:01": "01:31"}

for data in testData.items():
self.assertEqual(data[1], classes.getDateTimeHourMinuteString(data[0]),
self.assertEqual(data[1], vbbHelper.VbbHelper.getDateTimeHourMinuteString(data[0]),
"returned not correct hourMinute string!")

def test_minutesToDepartures(self):
Expand All @@ -41,57 +42,7 @@ def test_minutesToDepartures(self):
:return: None
"""
for i in range(20):
self.assertEqual(i, classes.getMinutesToDepartures(gen_timestring(i), 0),
self.assertEqual(i, vbbHelper.VbbHelper.getMinutesToDepartures(gen_timestring(i), 0),
"returned wrong amount of minutes (without delay)")
self.assertEqual(2 * i, classes.getMinutesToDepartures(gen_timestring(i), i * 60),
self.assertEqual(2 * i, vbbHelper.VbbHelper.getMinutesToDepartures(gen_timestring(i), i * 60),
"returned wrong amount of minutes (with delay)")

def test_parseStationRequest_emptyResponse(self):
"""
Tests if parseStationRequests returns None, if the response is empty.

:return: None
"""

testData = "{}"
self.assertEqual(None, classes.parseStationResponse(testData, None, classes.Modes.STATIONS_ID),
"expected to return None on empty response")
self.assertEqual(None, classes.parseStationResponse(testData, None, classes.Modes.STATIONS_QUERY),
"expected to return None on empty response")

def test_parseStationRequest_stationQuery_parse_id_name(self):
"""
Tests if parseStationRequests correctly parses name and id of response in Query mode.

:return: None
"""

testSet1 = {"id": "12345", "name": "test1"}
testSet2 = {"id": "67890", "name": "test2"}

testSetComplete = {testSet1["id"]: testSet1, testSet2["id"]: testSet2}

results = classes.parseStationResponse(testSetComplete, None, classes.Modes.STATIONS_QUERY)

if type(results) is not list:
self.fail("Expected to return a list")

self.assertEqual(len(testSetComplete), len(results), "Expected to have as many results as test data sets")

for result in results:

resId = result.stationId
name = result.name

dataSet = testSetComplete.get(resId)

if dataSet is None:
self.fail("Did not find data in test set")

if dataSet["id"] is not resId:
self.fail("rid of data does not match test data")

if dataSet["name"] is not name:
self.fail("name of data does not match test data")

testSetComplete.pop(resId)
17 changes: 17 additions & 0 deletions tests/test_station.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from unittest import TestCase
from vbbpy import station, modes


class StationClass(TestCase):

def test_parseStationRequest_emptyResponse(self):
"""
Tests if parseStationRequests returns None, if the response is empty.

:return: None
"""

testStation = station.Station("", getName=False)
testData = "{}"
self.assertEqual(None, testStation.parseStationResponse(testData, None, modes.Modes.STATIONS_ID),
"expected to return None on empty response")
1 change: 0 additions & 1 deletion vbbpy/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
from vbbpy import classes
Loading