155 self.assertRaises(urltree.URLError, self.label.build, dict(test=None)) |
155 self.assertRaises(urltree.URLError, self.label.build, dict(test=None)) |
156 |
156 |
157 def test_build_default (self) : |
157 def test_build_default (self) : |
158 self.assertEqual(self.label_default_0.build_default({}), (True, "0")) |
158 self.assertEqual(self.label_default_0.build_default({}), (True, "0")) |
159 self.assertEqual(self.label_default_1.build_default({}), (True, "1")) |
159 self.assertEqual(self.label_default_1.build_default({}), (True, "1")) |
|
160 self.assertEqual(self.label_default_0.build_default(dict(test=0)), (True, "0")) |
160 |
161 |
161 def test_build_nonedefault (self) : |
162 def test_build_nonedefault (self) : |
162 self.assertEqual(self.label_default_1.build_default(dict(test=None)), (True, "1")) |
163 self.assertEqual(self.label_default_1.build_default(dict(test=None)), (True, "1")) |
163 |
164 |
164 def test_build_value (self) : |
165 def test_build_value (self) : |
165 self.assertEqual(self.label.build_default(dict(test=0)), (False, "0")) |
166 self.assertEqual(self.label.build_default(dict(test=0)), (False, "0")) |
166 self.assertEqual(self.label.build_default(dict(test=1)), (False, "1")) |
167 self.assertEqual(self.label.build_default(dict(test=1)), (False, "1")) |
167 self.assertEqual(self.label_default_0.build_default(dict(test=1)), (False, "1")) |
168 self.assertEqual(self.label_default_0.build_default(dict(test=1)), (False, "1")) |
168 self.assertEqual(self.label_default_0.build_default(dict(test=0)), (False, "0")) |
|
169 |
169 |
170 def test_str (self) : |
170 def test_str (self) : |
171 self.assertEqual(str(self.label), "{test:int}") |
171 self.assertEqual(str(self.label), "{test:int}") |
172 self.assertEqual(str(self.label_default_0), "{test:int=0}") |
172 self.assertEqual(str(self.label_default_0), "{test:int=0}") |
173 self.assertEqual(str(self.label_default_1), "{test:int=1}") |
173 self.assertEqual(str(self.label_default_1), "{test:int=1}") |
291 self.assertEquals(set(url.query_args), set(qargs)) |
291 self.assertEquals(set(url.query_args), set(qargs)) |
292 |
292 |
293 # right qargs values |
293 # right qargs values |
294 for key, value in qargs.iteritems() : |
294 for key, value in qargs.iteritems() : |
295 self.assertEquals(url.query_args[key], value) |
295 self.assertEquals(url.query_args[key], value) |
296 |
296 |
|
297 # __init__ |
297 def test_label_path_empty (self) : |
298 def test_label_path_empty (self) : |
298 self._test_label_path("", urltree.EmptyLabel()) |
299 self._test_label_path("", urltree.EmptyLabel()) |
299 |
300 |
300 def test_label_path_root (self) : |
301 def test_label_path_root (self) : |
301 self._test_label_path("/", urltree.EmptyLabel()) |
302 self._test_label_path("/", urltree.EmptyLabel()) |
422 def test_execute_qarg_override_ignore (self) : |
424 def test_execute_qarg_override_ignore (self) : |
423 self.assertEqual(self._test_execute("/{foo}", dict(foo=("x1", False)), dict(foo="x2")), dict(foo="x1")) |
425 self.assertEqual(self._test_execute("/{foo}", dict(foo=("x1", False)), dict(foo="x2")), dict(foo="x1")) |
424 |
426 |
425 def test_execute_qarg_override_ok (self) : |
427 def test_execute_qarg_override_ok (self) : |
426 self.assertEqual(self._test_execute("/{foo=x1}", dict(foo=("x1", True)), dict(foo="x2")), dict(foo="x2")) |
428 self.assertEqual(self._test_execute("/{foo=x1}", dict(foo=("x1", True)), dict(foo="x2")), dict(foo="x2")) |
427 |
429 |
|
430 # build |
|
431 class dummyrequest_page : |
|
432 def __init__ (self, page_prefix) : |
|
433 self.page_prefix = page_prefix |
|
434 |
|
435 def _test_build (self, mask, url, **args) : |
|
436 self.assertEquals(self.config(mask, None).build(self.dummyrequest_page("/index.cgi"), **args), "/index.cgi" + url) |
|
437 |
|
438 def _test_build_fails (self, err, mask, **args) : |
|
439 self.assertRaises(err, self.config(mask, None).build, self.dummyrequest_page("/index.cgi"), **args) |
|
440 |
|
441 def test_build_empty (self) : |
|
442 self._test_build("/", "/") |
|
443 |
|
444 def test_build_static (self) : |
|
445 self._test_build("/foo", "/foo") |
|
446 |
|
447 def test_build_simple (self) : |
|
448 self._test_build("/foo/{bar}", "/foo/x", bar="x") |
|
449 |
|
450 def test_build_multi (self) : |
|
451 self._test_build("/foo/{bar}/{quux}", "/foo/x/y", bar="x", quux="y") |
|
452 |
|
453 def test_build_missing (self) : |
|
454 self._test_build_fails(urltree.URLError, "/foo/{bar}/{quux}", bar="x") |
|
455 |
|
456 def test_build_unknown (self) : |
|
457 self._test_build_fails(urltree.URLError, "/foo/{bar}/{quux}", bar="x", quux="y", frob="???") |
|
458 |
|
459 def test_build_long (self) : |
|
460 self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x/y", bar="x", quux="y") |
|
461 |
|
462 def test_build_short (self) : |
|
463 self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x", quux="b") |
|
464 |
|
465 def test_build_with_none (self) : |
|
466 self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x", quux=None) |
|
467 |
|
468 def test_build_default (self) : |
|
469 self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x") |
|
470 |
|
471 def test_build_qargs (self) : |
|
472 self._test_build("/foo/{bar}/?quux", "/foo/x?quux=a", bar="x", quux="a") |
|
473 |
|
474 def test_build_qargs_default (self) : |
|
475 self._test_build("/foo/{bar}/?quux", "/foo/x?quux=a", bar="x", quux="a") |
|
476 |
|
477 # XXX: this just becomes ...?quux=['a', 'b'] like from str(list) |
|
478 # def test_build_qargs_multi_invalid (self) : |
|
479 # self.assertRaises(urltree.URLError, self.config("/foo/{bar}/?quux", None).build, self.dummyrequest_page("/index.cgi"), bar="x", quux=["a", "b"]) |
|
480 |
|
481 def test_build_qargs_multi_list (self) : |
|
482 self._test_build("/foo/{bar}/?quux:list", "/foo/x?quux=a&quux=b", bar="x", quux=["a", "b"]) |
|
483 |
|
484 def test_build_qargs_none (self) : |
|
485 self._test_build("/foo/{bar}/?quux", "/foo/x", bar="x", quux=None) |
|
486 |
|
487 |
|
488 |