示例#1
0
    def test_basic(self):
        api = Route('/api', 'Api',
            users = Route('/users', 'User.All',
                one = Route('/{uid}', 'User.One', uid=Int(),
                    posts = Route('/posts', 'UserPosts.All')),
                few = Route('/{uids}', 'User.Few', uids=Ints())),
            posts = Route('/posts', 'Post.All',
                few = Route('/{uids}', 'User.Few', uids=Ints()),
                one = Route('/{uid}', 'Post.One', uid=Int()),
            ))


        self.assertEqual(api.reverse(),
                         '/api')
        self.assertEqual(api.reverse('users'),
                         '/api/users')
        self.assertEqual(api.reverse('users.one', uid=123),
                         '/api/users/123')
        self.assertEqual(api.reverse('users.one.posts', uid=123),
                         '/api/users/123/posts')
        self.assertEqual(api.reverse('users.few', uids=(123, 456)),
                         '/api/users/123;456')
        self.assertEqual(api.reverse('users', uid=123),
                         '/api/users?uid=123')


        self.assertEqual(api.resolve('/api'),
                        ('Api', {}))
        self.assertEqual(api.resolve('/api/users'),
                        ('User.All', {}))
        self.assertEqual(api.resolve('/api/users/123'),
                        ('User.One', {'uid': 123}))
        self.assertEqual(api.resolve('/api/users/123;456'),
                        ('User.Few', {'uids': (123, 456)}))