FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

even more tests · python-webuntis/python-webuntis@3a2f5aa · GitHub

Repository navigation

Commit 3a2f5aa

Browse files
committed
even more tests
1 parent cd973cf commit 3a2f5aa

4 files changed

Lines changed: 130 additions & 11 deletions

File tree

‎tests/test_objects.py‎

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ def test_hashes(self):
3434
assert r1 == r2
3535
assert hash(r1) == hash(r2)
3636

37+
def test_str(self):
38+
r1 = self.Result(data={u'id': 124}, session=object())
39+
assert str(r1) == u"{u'id': 124}" or str(r1) == u"{'id': 124}"
40+
r2 = self.Result(data={u'name': "abc"}, session=object())
41+
assert str(r2) == u'abc'
42+
43+
def test_repr(self):
44+
r1 = self.Result(data={u'id': 124}, session=object())
45+
assert repr(r1) == u"Result({u'id': 124})" or repr(r1) == u"Result({'id': 124})"
3746

3847
class ListResultTests(WebUntisTestCase):
3948
Result = webuntis.objects.ListResult
@@ -63,6 +72,16 @@ class CustomListResult(self.Result):
6372
assert {u'id': res.id, u'value': res.value} in r
6473
self.assert_strict_equal(res.id, raw[u'id'])
6574

75+
s = str(r);
76+
assert "'val': 3" in s
77+
assert "'id': 2" in s
78+
s = repr(r);
79+
assert "'val': 3" in s
80+
assert "'id': 2" in s
81+
assert 'CustomListResult' in s
82+
assert 'CustomItem' in s
83+
84+
6685
def test_filter(self):
6786
class CustomItem(webuntis.objects.ListItem):
6887
@self.lazyproperty
@@ -310,3 +329,95 @@ def test_basics(self):
310329
self.assertEqual(x[0].timeUnits[2].end, datetime.time(9, 40))
311330

312331

332+
class PeriodTestsData(WebUntisTestCase):
333+
def test_data(self):
334+
sess = object()
335+
klasse1 = webuntis.objects.KlassenObject(
336+
data={u'id': 2, u'name': u'1A'},
337+
session=sess)
338+
teacher1 = webuntis.objects.TeacherObject(
339+
data={u'id': 3, u'name': u'Hans Gans'},
340+
session=sess)
341+
teacher2 = webuntis.objects.TeacherObject(
342+
data={u'id': 7, u'name': u'Daniel Duesentrieb'},
343+
session=sess)
344+
subject1 = webuntis.objects.SubjectObject(
345+
data={u'id': 4, u'name': u'Math'},
346+
session=sess
347+
)
348+
room1 = webuntis.objects.RoomObject(
349+
data={u'id': 5, u'name': u'PHY', u'longName': u'Physics lab'},
350+
session=object()
351+
)
352+
room2 = webuntis.objects.RoomObject(
353+
data={u'id': 8, u'name': u'TS'},
354+
session=sess
355+
)
356+
357+
class StubSession(object):
358+
def klassen(self, *args, **kw):
359+
return webuntis.objects.KlassenList(
360+
[klasse1], session=sess)
361+
362+
def teachers(self, *args, **kw):
363+
return webuntis.objects.TeacherList(
364+
[teacher1, teacher2], session=sess)
365+
366+
def subjects(self, *args, **kw):
367+
return webuntis.objects.SubjectList(
368+
[subject1], session=sess)
369+
370+
def rooms(self, *args, **kw):
371+
return webuntis.objects.RoomList(
372+
[room1, room2], session=sess)
373+
374+
p = webuntis.objects.PeriodObject(
375+
data={
376+
u'id': 1,
377+
u'kl': [{"id": 2}],
378+
u'te': [{"id": 3, u'orgid': 7}],
379+
u'su': [{"id": 4}],
380+
u'ro': [{"id": 5, u'orgid': 8}],
381+
},
382+
session=StubSession()
383+
)
384+
self.assertEqual(p.klassen[0].name, u'1A')
385+
self.assertEqual(p.teachers[0].name, u'Hans Gans')
386+
self.assertEqual(p.subjects[0].name, u'Math')
387+
self.assertEqual(p.rooms[0].name, u'PHY')
388+
389+
self.assertEqual(p.original_teachers[0].name, u'Daniel Duesentrieb')
390+
self.assertEqual(len(p.original_teachers), 1)
391+
392+
# without orgid
393+
p = webuntis.objects.PeriodObject(
394+
data={
395+
u'id': 1,
396+
u'kl': [{"id": 2}],
397+
u'te': [{"id": 3}],
398+
u'su': [{"id": 4}],
399+
u'ro': [{"id": 5}],
400+
},
401+
session=StubSession()
402+
)
403+
self.assertEqual(len(p.original_teachers), 0)
404+
self.assertEqual(len(p.original_rooms), 0)
405+
406+
407+
class SubstitutionTests(WebUntisTestCase):
408+
def test_substitution(self):
409+
s = webuntis.objects.SubstitutionObject(
410+
data={
411+
u'reschedule': {u'date': u'20170304', u'startTime': u'1002', u'endTime': u'1101'},
412+
u'type': u'reason',
413+
},
414+
session=object()
415+
)
416+
417+
self.assertEqual(s.type, u'reason')
418+
start = s.reschedule_start
419+
self.assertEqual(start.date(), datetime.date(2017, 3, 4))
420+
# TODO: hour: fails for travis, but is ok here ;-(( removed for now
421+
self.assertEqual(start.time().minute, 2)
422+
end = s.reschedule_end
423+
self.assertEqual(end.time().minute, 1)

‎tests/test_session.py‎

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,20 @@ def test_lastImportTime(self):
249249
li = s.lastImportTime()
250250
assert type(li) is webuntis.objects.TimeStampObject
251251

252-
#def test_substitutions(self):
253-
# s = webuntis.Session(**stub_session_parameters)
254-
# with self.noop_result_mock('getSubstitutions'):
255-
# sl = s.substitutions(datetime.datetime(), datetime.datetime())
256-
# assert type(sl) is webuntis.objects.SubstitutionList
252+
def test_substitutions(self):
253+
s = webuntis.Session(**stub_session_parameters)
254+
255+
def getSubstitutions(url, jsondata, headers):
256+
return {'result': []}
257257

258+
with mock_results({'getSubstitutions': getSubstitutions }):
259+
start = 20120303
260+
end = 20120304
261+
st = s.substitutions(start=start, end=end)
262+
assert type(st) is webuntis.objects.SubstitutionList
263+
264+
def test_timegridUnits(self):
265+
s = webuntis.Session(**stub_session_parameters)
266+
with self.noop_result_mock('getTimegridUnits'):
267+
st = s.timegridUnits()
268+
assert type(st) is webuntis.objects.TimegridObject

‎webuntis/objects.py‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
:license: BSD, see LICENSE for more details.
66
'''
77
import datetime
8-
98
from webuntis.utils import datetime_utils, lazyproperty, \
109
timetable_utils
1110

@@ -354,7 +353,7 @@ def original_teachers(self):
354353
def original_rooms(self):
355354
''' Support for original rooms '''
356355
try:
357-
return self._session.rooms(from_cache=True).filter(id=set([te[u'orgid'] for te in self._data[u'ro']]))
356+
return self._session.rooms(from_cache=True).filter(id=set([ro[u'orgid'] for ro in self._data[u'ro']]))
358357
except:
359358
pass
360359
return []
@@ -593,7 +592,6 @@ def period_codes(self):
593592
for data in self._data[u'codes']
594593
]
595594

596-
597595
class TimeStampObject(Result):
598596
'''Information about last change of data -- timestamp (given in milliseconds)'''
599597

@@ -609,7 +607,7 @@ def date(self):
609607

610608
class SubstitutionObject(PeriodObject):
611609

612-
#@lazyproperty
610+
@lazyproperty
613611
def type(self):
614612
'''type of substitution
615613
cancel cancellation
@@ -679,4 +677,3 @@ def timeUnits(self):
679677

680678
class TimegridObject(ListResult):
681679
_itemclass = TimegridDayObject
682-

‎webuntis/session.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ def substitutions(self, start, end, departmentId=0):
310310

311311

312312
@result_wrapper
313-
def TimegridUnits(self):
313+
def timegridUnits(self):
314314
return objects.TimegridObject, 'getTimegridUnits', {}
315315

316316

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL