def test_base_with_trailing_slash(self): """Build URLs with a base with a trailing slash.""" href = trac.web.href.Href('/base/') self.assertEqual('/base', href()) self.assertEqual('/base', href('/')) self.assertEqual('/base/sub', href('sub')) self.assertEqual('/base/sub', href('/sub/')) self.assertEqual('/base/path/to/file/', href + '/path/to/file/') self.assertEqual('/base/path/to/file', href + 'path/to/file') self.assertEqual('/base', href + '')
def test_params_subclasses(self): """Parameters passed using subclasses of dict, list and tuple.""" class MyDict(dict): pass class MyList(list): pass class MyTuple(tuple): pass href = trac.web.href.Href('/base') self.assertEqual('/base?param=test¶m=other', href(param=MyList(['test', 'other']))) self.assertEqual('/base?param=test¶m=other', href(param=MyTuple(['test', 'other']))) assert href(MyDict(param='value', other='other value')) in [ '/base?param=value&other=other+value', '/base?other=other+value¶m=value'] self.assertEqual('/base?param=value&other=other+value', href(MyList([('param', 'value'), ('other', 'other value')]))) self.assertEqual('/base?param=value&other=other+value', href(MyTuple([('param', 'value'), ('other', 'other value')])))
def test_empty_base(self): """Build URLs with an empty base.""" href = trac.web.href.Href('') self.assertEqual('/', href()) self.assertEqual('/', href('/')) self.assertEqual('/sub', href('sub')) self.assertEqual('/sub', href('/sub/')) self.assertEqual('/sub/other', href('sub', 'other')) self.assertEqual('/sub/other', href('sub', None, 'other')) self.assertEqual('/sub//other', href('sub', '', 'other')) # ??? self.assertEqual('/with%20special%26chars', href('with special&chars')) assert href('page', param='value', other='other value', more=None) in [ '/page?param=value&other=other+value', '/page?other=other+value¶m=value'] self.assertEqual('/page?param=multiple¶m=values', href('page', param=['multiple', 'values'])) self.assertEqual('/path/to/file/', href + '/path/to/file/') self.assertEqual('/path/to/file', href + 'path/to/file') self.assertEqual('/', href + '')
def test_empty_base(self): """Build URLs with an empty base.""" href = trac.web.href.Href('') # The two following href calls don't result in a valid local URL. # This is relied upon by existing code (see #8153). self.assertEqual('', href()) self.assertEqual('', href('/')) self.assertEqual('/sub', href('sub')) self.assertEqual('/sub', href('/sub/')) self.assertEqual('/sub/other', href('sub', 'other')) self.assertEqual('/sub/other', href('sub', None, 'other')) self.assertEqual('/sub//other', href('sub', '', 'other')) # ??? self.assertEqual('/with%20special%26chars', href('with special&chars')) assert href('page', param='value', other='other value', more=None) in [ '/page?param=value&other=other+value', '/page?other=other+value¶m=value'] self.assertEqual('/page?param=multiple¶m=values', href('page', param=['multiple', 'values'])) self.assertEqual('/path/to/file/', href + '/path/to/file/') self.assertEqual('/path/to/file', href + 'path/to/file') self.assertEqual('/', href + '')
def test_non_empty_base(self): """Build URLs with a non-empty base.""" href = trac.web.href.Href('/base') self.assertEqual('/base', href()) self.assertEqual('/base', href('/')) self.assertEqual('/base/sub', href('sub')) self.assertEqual('/base/sub', href('/sub/')) self.assertEqual('/base/sub/other', href('sub', 'other')) self.assertEqual('/base/sub/other', href('sub', None, 'other')) self.assertEqual('/base/sub/other', href('sub', '', 'other')) self.assertEqual('/base/sub/other', href('sub', '', '', 'other')) self.assertEqual('/base/sub/other', href('', 'sub', 'other')) self.assertEqual('/base/sub/other/', href('sub', 'other', '')) self.assertEqual('/base/with%20special%26chars', href('with special&chars')) assert href('page', param='value', other='other value', more=None) in [ '/base/page?param=value&other=other+value', '/base/page?other=other+value¶m=value'] self.assertEqual('/base/page?param=multiple¶m=values', href('page', param=['multiple', 'values'])) self.assertEqual('/base/path/to/file/', href + '/path/to/file/') self.assertEqual('/base/path/to/file', href + 'path/to/file') self.assertEqual('/base', href + '')