~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/publisher/test_publisher.py

  • Committer: William Grant
  • Date: 2009-07-30 08:50:35 UTC
  • mfrom: (1297 ivle)
  • mto: (1294.4.2 ui-the-third)
  • mto: This revision was merged to the branch mainline in revision 1353.
  • Revision ID: grantw@unimelb.edu.au-20090730085035-np5s9ghrgymmya8b
MergeĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
class Root(object):
7
7
    def __init__(self):
8
8
        self.subjects = {}
9
 
        self.users = {}
10
9
 
11
10
    def add_subject(self, subject):
12
11
        self.subjects[subject.name] = subject
13
12
 
14
 
    def add_user(self, user):
15
 
        self.users[user.login] = user
16
 
 
17
 
class User(object):
18
 
    def __init__(self, login):
19
 
        self.login = login
20
 
 
21
13
class Subject(object):
22
14
    def __init__(self, name, code):
23
15
        self.name = name
61
53
class RootIndex(View):
62
54
    pass
63
55
 
64
 
class UserServeView(View):
65
 
    pass
66
 
 
67
56
class SubjectIndex(View):
68
57
    pass
69
58
 
94
83
class OfferingAddProject(View):
95
84
    pass
96
85
 
97
 
class OfferingWorksheets(View):
98
 
    pass
99
 
 
100
 
class OfferingWorksheetMarks(View):
101
 
    pass
102
 
 
103
 
class OfferingWorksheetCSVMarks(View):
104
 
    pass
105
 
 
106
 
def root_to_subject_or_user(root, name):
107
 
    if name.startswith('~'):
108
 
        return root.users.get(name[1:])
 
86
def root_to_subject(root, name):
109
87
    return root.subjects.get(name)
110
88
 
111
89
def subject_to_offering(subject, year, semester):
137
115
        r = Root()
138
116
        self.r = r
139
117
 
140
 
        # A user would be nice.
141
 
        r.add_user(User('jsmith'))
142
 
 
143
118
        # Give us some subjects...
144
119
        r.add_subject(Subject('info1', '600151'))
145
120
        r.add_subject(Subject('info2', '600152'))
174
149
        super(TestResolution, self).setUp()
175
150
        self.rtr = Publisher(root=self.r, viewset='browser')
176
151
        self.rtr.add_set_switch('api', 'api')
177
 
        self.rtr.add_forward(Root, None, root_to_subject_or_user, 1)
 
152
        self.rtr.add_forward(Root, None, root_to_subject, 1)
178
153
        self.rtr.add_forward(Subject, None, subject_to_offering, 2)
179
154
        self.rtr.add_forward(Offering, '+files', offering_to_files, 0)
180
155
        self.rtr.add_forward(OfferingFiles, None, offering_files_to_file, INF)
181
156
        self.rtr.add_forward(Offering, '+projects', offering_to_project, 1)
182
 
        self.rtr.add_view(User, None, UserServeView, viewset='browser')
183
157
        self.rtr.add_view(Subject, '+index', SubjectIndex, viewset='browser')
184
158
        self.rtr.add_view(Subject, '+edit', SubjectEdit, viewset='browser')
185
159
        self.rtr.add_view(Offering, '+index', OfferingIndex, viewset='browser')
193
167
                          viewset='browser')
194
168
        self.rtr.add_view(Offering, ('+projects', '+index'), OfferingProjects,
195
169
                          viewset='browser')
196
 
        self.rtr.add_view(Offering, ('+worksheets', '+index'),
197
 
                          OfferingWorksheets, viewset='browser')
198
 
        self.rtr.add_view(Offering, ('+worksheets', '+marks', '+index'),
199
 
                          OfferingWorksheetMarks, viewset='browser')
200
 
        self.rtr.add_view(Offering, ('+worksheets', '+marks', 'marks.csv'),
201
 
                          OfferingWorksheetCSVMarks, viewset='browser')
202
170
 
203
171
    def testOneRoute(self):
204
172
        assert_equal(self.rtr.resolve('/info1'),
326
294
              OfferingProjects, ())
327
295
             )
328
296
 
329
 
    def testAnotherDefaultDeepView(self):
330
 
        assert_equal(self.rtr.resolve('/info1/2009/1/+worksheets'),
331
 
             (self.r.subjects['info1'].offerings[(2009, 1)],
332
 
              OfferingWorksheets, ())
333
 
             )
334
 
 
335
 
    def testReallyDeepView(self):
336
 
        assert_equal(
337
 
             self.rtr.resolve('/info1/2009/1/+worksheets/+marks/marks.csv'),
338
 
             (self.r.subjects['info1'].offerings[(2009, 1)],
339
 
              OfferingWorksheetCSVMarks, ())
340
 
             )
341
 
 
342
 
    def testDefaultReallyDeepView(self):
343
 
        assert_equal(self.rtr.resolve('/info1/2009/1/+worksheets/+marks'),
344
 
             (self.r.subjects['info1'].offerings[(2009, 1)],
345
 
              OfferingWorksheetMarks, ())
346
 
             )
347
 
 
348
297
    def testNamedRouteWithDeepView(self):
349
298
        assert_equal(self.rtr.resolve('/info1/2009/1/+projects/p1'),
350
299
             (self.r.subjects['info1'].offerings[(2009, 1)].projects['p1'],
351
300
              ProjectIndex, ())
352
301
             )
353
302
 
354
 
    def testNullPathView(self):
355
 
        """Verify that views can be placed immediately under an object.
356
 
 
357
 
        There are some cases in which it is useful for a view with a
358
 
        subpath to exist immediately under an object, with no name.
359
 
        """
360
 
        assert_equal(self.rtr.resolve('/~jsmith/foo/bar'),
361
 
             (self.r.users['jsmith'], UserServeView, ('foo', 'bar')))
362
 
 
363
 
    def testTrailingSlashResolvesToDefaultView(self):
364
 
        assert_equal(
365
 
             self.rtr.resolve('/info1/2009/1/'),
366
 
             (self.r.subjects['info1'].offerings[(2009, 1)],
367
 
              OfferingIndex, ())
368
 
             )
369
 
 
370
 
    def testTrailingSlashResolvesToDeepDefaultView(self):
371
 
        assert_equal(
372
 
             self.rtr.resolve('/info1/2009/1/+worksheets/+marks/'),
373
 
             (self.r.subjects['info1'].offerings[(2009, 1)],
374
 
              OfferingWorksheetMarks, ())
375
 
             )
376
 
 
377
 
    def testSubpathIndicatesTrailingSlash(self):
378
 
        assert_equal(
379
 
             self.rtr.resolve('/info1/2009/1/+index/'),
380
 
             (self.r.subjects['info1'].offerings[(2009, 1)],
381
 
              OfferingIndex, ('',))
382
 
             )
383
303
 
384
304
class TestGeneration(BaseTest):
385
305
    def setUp(self):
496
416
    def setUp(self):
497
417
        super(TestErrors, self).setUp()
498
418
        self.rtr = Publisher(root=self.r)
499
 
        self.rtr.add_forward(Root, None, root_to_subject_or_user, 1)
 
419
        self.rtr.add_forward(Root, None, root_to_subject, 1)
500
420
        self.rtr.add_forward(Subject, '+foo', lambda s: s.name + 'foo', 0)
501
421
        self.rtr.add_forward(Subject, None, subject_to_offering, 2)
502
422
        self.rtr.add_reverse(Subject, subject_url)