from estimationtools.workloadchart import WorkloadChart from genshi.builder import tag from trac.test import EnvironmentStub, Mock, MockPerm from trac.ticket.model import Ticket from trac.web.href import Href import unittest class WorkloadChartTestCase(unittest.TestCase): def setUp(self): self.env = EnvironmentStub(default_data = True) self.env.config.set('ticket-custom', 'hours_remaining', 'text') self.env.config.set('estimation-tools', 'estimation_field', 'hours_remaining') self.req = Mock(href = Href('/'), abs_href = Href('http://www.example.com/'), perm = MockPerm(), authname='anonymous', tz='') self.formatter = Mock(req=self.req) def _insert_ticket(self, estimation, owner): ticket = Ticket(self.env) ticket['summary'] = 'Test Ticket' ticket['owner'] = owner ticket['hours_remaining'] = estimation ticket['milestone'] = 'milestone1' return ticket.insert() def test_basic(self): workload_chart = WorkloadChart(self.env) self._insert_ticket('10', 'A') self._insert_ticket('20', 'B') self._insert_ticket('30', 'C') result = workload_chart.expand_macro(self.formatter, "", "milestone=milestone1") # remaining days will vary if unittest is run on workday or weekend... Ignore... result = str(result).replace('0+workdays+left', '1+workdays+left') self.assertEqual(result, 'Workload Chart (client)') def test_invalid_value(self): workload_chart = WorkloadChart(self.env) self._insert_ticket('10', 'A') self._insert_ticket('10', 'B') self._insert_ticket('10', 'B') self._insert_ticket('30', 'C') self._insert_ticket('xxx', 'D') result = workload_chart.expand_macro(self.formatter, "", "milestone=milestone1") # remaining days will vary if unittest is run on workday or weekend... Ignore... result = str(result).replace('0+workdays+left', '1+workdays+left') self.assertEqual(result, 'Workload Chart (client)') def test_username_obfuscation(self): workload_chart = WorkloadChart(self.env) self._insert_ticket('10', 'user@example.org') result = workload_chart.expand_macro(self.formatter, "", "milestone=milestone1") self.failUnless("&chl=user%40%E2%80%A6+10h&" in str(result))