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

« back to all changes in this revision

Viewing changes to ivle/webapp/urls/test_router.py

  • Committer: William Grant
  • Date: 2009-07-04 08:52:18 UTC
  • 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-20090704085218-4gkzcqn43qfr3bdy
Test deep views (views with names consisting of multiple segments).

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
        self.subject = subject
26
26
        self.year = year
27
27
        self.semester = semester
 
28
        self.projects = {}
 
29
 
 
30
    def add_project(self, project):
 
31
        assert project.offering is self
 
32
        self.projects[project.name] = project
28
33
 
29
34
class OfferingFiles(object):
30
35
    def __init__(self, offering):
35
40
        self.offering = offeringfiles.offering
36
41
        self.path = path
37
42
 
 
43
class Project(object):
 
44
    def __init__(self, offering, name):
 
45
        self.offering = offering
 
46
        self.name = name
 
47
 
38
48
 
39
49
class View(object):
40
50
    def __init__(self, context):
64
74
class OfferingFileIndex(View):
65
75
    pass
66
76
 
 
77
class ProjectIndex(View):
 
78
    pass
 
79
 
 
80
class OfferingAddProject(View):
 
81
    pass
 
82
 
67
83
 
68
84
def root_to_subject(root, name):
69
85
    return root.subjects.get(name)
77
93
def offering_files_to_file(offeringfiles, *path):
78
94
    return OfferingFile(offeringfiles, path)
79
95
 
 
96
def offering_to_project(offering, name):
 
97
    return offering.projects.get(name)
 
98
 
80
99
def subject_url(subject):
81
100
    return (ROOT, subject.name)
82
101
 
86
105
def offering_files_url(offeringfiles):
87
106
    return (offeringfiles.offering, '+files')
88
107
 
 
108
def project_url(project):
 
109
    return (project.offering, ('+projects', project.name))
89
110
 
90
111
class BaseTest(object):
91
112
    def setUp(self):
111
132
        r.subjects['info3'].add_offering(Offering(self.r.subjects['info3'],
112
133
                                         2009, 1))
113
134
 
 
135
        # A normal project...
 
136
        r.subjects['info1'].offerings[(2009, 1)].add_project(
 
137
            Project(r.subjects['info1'].offerings[(2009, 1)], 'p1')
 
138
            )
 
139
 
 
140
        # And one conflicting with a deep view, just to be nasty.
 
141
        r.subjects['info1'].offerings[(2009, 1)].add_project(
 
142
            Project(r.subjects['info1'].offerings[(2009, 1)], '+new')
 
143
            )
 
144
 
114
145
class TestResolution(BaseTest):
115
146
    def setUp(self):
116
147
        super(TestResolution, self).setUp()
120
151
        self.rtr.add_forward(Subject, None, subject_to_offering, 2)
121
152
        self.rtr.add_forward(Offering, '+files', offering_to_files, 0)
122
153
        self.rtr.add_forward(OfferingFiles, None, offering_files_to_file, INF)
 
154
        self.rtr.add_forward(Offering, '+projects', offering_to_project, 1)
123
155
        self.rtr.add_view(Subject, '+index', SubjectIndex, viewset='browser')
124
156
        self.rtr.add_view(Subject, '+edit', SubjectEdit, viewset='browser')
125
157
        self.rtr.add_view(Offering, '+index', OfferingIndex, viewset='browser')
128
160
                          viewset='browser')
129
161
        self.rtr.add_view(OfferingFile, '+index', OfferingFileIndex,
130
162
                          viewset='browser')
 
163
        self.rtr.add_view(Project, '+index', ProjectIndex, viewset='browser')
 
164
        self.rtr.add_view(Offering, ('+projects', '+new'), OfferingAddProject,
 
165
                          viewset='browser')
131
166
 
132
167
    def testOneRoute(self):
133
168
        assert_equal(self.rtr.resolve('/info1'),
243
278
          (self.r.subjects['info1'].offerings[(2009, 1)], OfferingAPIIndex, ())
244
279
          )
245
280
 
 
281
    def testDeepView(self):
 
282
        assert_equal(self.rtr.resolve('/info1/2009/1/+projects/+new'),
 
283
             (self.r.subjects['info1'].offerings[(2009, 1)],
 
284
              OfferingAddProject, ())
 
285
             )
 
286
 
 
287
    def testNamedRouteWithDeepView(self):
 
288
        assert_equal(self.rtr.resolve('/info1/2009/1/+projects/p1'),
 
289
             (self.r.subjects['info1'].offerings[(2009, 1)].projects['p1'],
 
290
              ProjectIndex, ())
 
291
             )
 
292
 
 
293
 
246
294
class TestGeneration(BaseTest):
247
295
    def setUp(self):
248
296
        super(TestGeneration, self).setUp()