1
2
3
4
5
6
7
8
9
10
11
12
13
14 import unittest
15 from datetime import datetime, timedelta
16
17 from trac.test import EnvironmentStub, MockRequest, locale_en
18 from trac.timeline.web_ui import TimelineModule
19 from trac.util.datefmt import (
20 datetime_now, format_date, format_datetime, format_time,
21 get_date_format_hint, pretty_timedelta, utc,
22 )
23 from trac.util.html import plaintext
24 from trac.web.chrome import Chrome
25
26
28
33
36
41
48
54
60
62 t = datetime_now(utc) - timedelta(days=1)
63 label = 'on %s at %s' % \
64 (format_date(t, locale=locale_en, tzinfo=utc),
65 format_time(t, locale=locale_en, tzinfo=utc))
66 self.assertEqual(label, self._format_chrome(t, 'absolute', False))
67 self.assertEqual(label, self._format_timeline(t, 'absolute', False))
68
74
76 t = datetime(2014, 1, 28, 2, 30, 44, 0, utc)
77 label = 'at 2014-01-28T02:30:44Z'
78 self.req.lc_time = 'iso8601'
79 self.assertEqual(label, self._format_chrome(t, 'absolute', False))
80 self.assertEqual(label, self._format_timeline(t, 'absolute', False))
81
83 t = datetime(2014, 1, 28, 2, 30, 44, 0, utc)
84 label = '2014-01-28T02:30:44Z'
85 self.req.lc_time = 'iso8601'
86 self.assertEqual(label, self._format_chrome(t, 'absolute', True))
87 self.assertEqual(label, self._format_timeline(t, 'absolute', True))
88
89
91
94
97
111
122
124 self.env.config.set('trac', 'show_email_addresses', 'enabled')
125 self.env.known_users.append(('blah', 'Blah user', '[email protected]'))
126 req = MockRequest(self.env, path_info='/timeline',
127 args={'format': 'rss'})
128 rv = TimelineModule(self.env).process_request(req)
129 self.assertEqual('timeline.rss', rv[0])
130 author = u'jöé'
131 event = ('mock', datetime_now(utc), author, None)
132 rv[1]['events'] = [
133 {'kind': event[0], 'date': event[1], 'author': event[2],
134 'data': event[3], 'event': event, 'provider': None,
135 'dateuid': '42', 'render': lambda field, context: 'mock'},
136 ]
137 output = Chrome(self.env).render_template(req, rv[0], rv[1], rv[2])
138 if not output.startswith('<?xml version="1.0"?>'):
139 raise AssertionError('Missing <?xml?> in %r' % output)
140 dc_creator = '<dc:creator>%s</dc:creator>' % author.encode('utf-8')
141 if dc_creator not in output:
142 raise AssertionError('Missing %r in %r' % (dc_creator, output))
143
144
150
151 if __name__ == '__main__':
152 unittest.main(defaultTest='suite')
153