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

« back to all changes in this revision

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

  • Committer: Matt Giuca
  • Date: 2010-03-22 06:05:32 UTC
  • Revision ID: matt.giuca@gmail.com-20100322060532-5365361xrx9mh32v
Changed database.py get_svn_url to take a req; include the req.user.login in the Subversion URL. This allows you to check out repositories without separately supplying the IVLE URL (as Subversion won't ask for a username by default). Also removed --username= from the lecturer project view, as it's redundant now. This fixes Launchpad bug #543936.

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 = {}
9
10
 
10
11
    def add_subject(self, subject):
11
12
        self.subjects[subject.name] = subject
12
13
 
 
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
 
13
21
class Subject(object):
14
22
    def __init__(self, name, code):
15
23
        self.name = name
53
61
class RootIndex(View):
54
62
    pass
55
63
 
 
64
class UserServeView(View):
 
65
    pass
 
66
 
56
67
class SubjectIndex(View):
57
68
    pass
58
69
 
83
94
class OfferingAddProject(View):
84
95
    pass
85
96
 
86
 
def root_to_subject(root, name):
 
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:])
87
109
    return root.subjects.get(name)
88
110
 
89
111
def subject_to_offering(subject, year, semester):
115
137
        r = Root()
116
138
        self.r = r
117
139
 
 
140
        # A user would be nice.
 
141
        r.add_user(User('jsmith'))
 
142
 
118
143
        # Give us some subjects...
119
144
        r.add_subject(Subject('info1', '600151'))
120
145
        r.add_subject(Subject('info2', '600152'))
149
174
        super(TestResolution, self).setUp()
150
175
        self.rtr = Publisher(root=self.r, viewset='browser')
151
176
        self.rtr.add_set_switch('api', 'api')
152
 
        self.rtr.add_forward(Root, None, root_to_subject, 1)
 
177
        self.rtr.add_forward(Root, None, root_to_subject_or_user, 1)
153
178
        self.rtr.add_forward(Subject, None, subject_to_offering, 2)
154
179
        self.rtr.add_forward(Offering, '+files', offering_to_files, 0)
155
180
        self.rtr.add_forward(OfferingFiles, None, offering_files_to_file, INF)
156
181
        self.rtr.add_forward(Offering, '+projects', offering_to_project, 1)
 
182
        self.rtr.add_view(User, None, UserServeView, viewset='browser')
157
183
        self.rtr.add_view(Subject, '+index', SubjectIndex, viewset='browser')
158
184
        self.rtr.add_view(Subject, '+edit', SubjectEdit, viewset='browser')
159
185
        self.rtr.add_view(Offering, '+index', OfferingIndex, viewset='browser')
167
193
                          viewset='browser')
168
194
        self.rtr.add_view(Offering, ('+projects', '+index'), OfferingProjects,
169
195
                          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')
170
202
 
171
203
    def testOneRoute(self):
172
204
        assert_equal(self.rtr.resolve('/info1'),
294
326
              OfferingProjects, ())
295
327
             )
296
328
 
 
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
 
297
348
    def testNamedRouteWithDeepView(self):
298
349
        assert_equal(self.rtr.resolve('/info1/2009/1/+projects/p1'),
299
350
             (self.r.subjects['info1'].offerings[(2009, 1)].projects['p1'],
300
351
              ProjectIndex, ())
301
352
             )
302
353
 
 
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
 
303
363
 
304
364
class TestGeneration(BaseTest):
305
365
    def setUp(self):
416
476
    def setUp(self):
417
477
        super(TestErrors, self).setUp()
418
478
        self.rtr = Publisher(root=self.r)
419
 
        self.rtr.add_forward(Root, None, root_to_subject, 1)
 
479
        self.rtr.add_forward(Root, None, root_to_subject_or_user, 1)
420
480
        self.rtr.add_forward(Subject, '+foo', lambda s: s.name + 'foo', 0)
421
481
        self.rtr.add_forward(Subject, None, subject_to_offering, 2)
422
482
        self.rtr.add_reverse(Subject, subject_url)