~hazmat/launchpad-work-items-tracker/cdo-austin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
import datetime
from testtools import TestCase
import report_tools


class FillTemplateTests(TestCase):

    def test_finds_template(self):
        output = report_tools.fill_template("test.html", dict(data="foo"))
        self.assertEqual("Testing foo\n", output)


class WeekdaysBetweenTests(TestCase):

    def test_start_after_end(self):
        start = datetime.date(2011, 02, 17)
        end = datetime.date(2011, 02, 16)
        self.assertEqual(0, report_tools.weekdays_between(start, end))

    def test_start_equals_end(self):
        start = datetime.date(2011, 02, 16)
        end = datetime.date(2011, 02, 16)
        self.assertEqual(0, report_tools.weekdays_between(start, end))

    def test_one_day_before_thursday(self):
        # Wednesday
        start = datetime.date(2011, 02, 16)
        # Thursday
        end = datetime.date(2011, 02, 17)
        self.assertEqual(1, report_tools.weekdays_between(start, end))

    def test_one_day_before_saturday(self):
        # Friday
        start = datetime.date(2011, 02, 18)
        # Saturday
        end = datetime.date(2011, 02, 19)
        self.assertEqual(1, report_tools.weekdays_between(start, end))

    def test_one_day_before_sunday(self):
        # Saturday
        start = datetime.date(2011, 02, 19)
        # Sunday
        end = datetime.date(2011, 02, 20)
        self.assertEqual(0, report_tools.weekdays_between(start, end))

    def test_one_day_before_monday(self):
        # Sunday
        start = datetime.date(2011, 02, 20)
        # Monday
        end = datetime.date(2011, 02, 21)
        self.assertEqual(0, report_tools.weekdays_between(start, end))

    def test_two_days_before_monday(self):
        # Saturday
        start = datetime.date(2011, 02, 19)
        # Monday
        end = datetime.date(2011, 02, 21)
        self.assertEqual(0, report_tools.weekdays_between(start, end))

    def test_three_days_before_monday(self):
        # Friday
        start = datetime.date(2011, 02, 18)
        # Monday
        end = datetime.date(2011, 02, 21)
        self.assertEqual(1, report_tools.weekdays_between(start, end))

    def test_one_day_before_tuesday(self):
        # Monday
        start = datetime.date(2011, 02, 21)
        # Tuesday
        end = datetime.date(2011, 02, 22)
        self.assertEqual(1, report_tools.weekdays_between(start, end))

    def test_sunday_to_saturday(self):
        # Sunday
        start = datetime.date(2011, 02, 13)
        # Saturday
        end = datetime.date(2011, 02, 19)
        self.assertEqual(5, report_tools.weekdays_between(start, end))

    def test_saturday_to_saturday(self):
        # Saturday
        start = datetime.date(2011, 02, 12)
        # Next Saturday
        end = datetime.date(2011, 02, 19)
        self.assertEqual(5, report_tools.weekdays_between(start, end))

    def test_monday_to_saturday(self):
        # Monday
        start = datetime.date(2011, 02, 14)
        # Saturday
        end = datetime.date(2011, 02, 19)
        self.assertEqual(5, report_tools.weekdays_between(start, end))

    def test_thursday_to_tuesday(self):
        # Thursday
        start = datetime.date(2011, 02, 17)
        # Next tuesday
        end = datetime.date(2011, 02, 22)
        # 3 = Thursday, Friday, Monday
        self.assertEqual(3, report_tools.weekdays_between(start, end))

    def test_thirteen_days_to_tuesday(self):
        # Wednesday
        start = datetime.date(2011, 02, 9)
        # Next, next tuesday
        end = datetime.date(2011, 02, 22)
        # 4 for Wednesday, Thursday, Friday, Monday
        # + 5 for the whole week
        # = 9
        self.assertEqual(9, report_tools.weekdays_between(start, end))


class DurationElapsedTests(TestCase):

    def test_start_date_after_end_date(self):
        start = datetime.date(2011, 02, 9)
        end = datetime.date(2011, 02, 8)
        current = end
        self.assertEqual(
            100, report_tools.duration_elapsed(start, end, current))

    def test_start_date_equals_end_date(self):
        start = datetime.date(2011, 02, 9)
        end = start
        current = end
        self.assertEqual(
            100, report_tools.duration_elapsed(start, end, current))

    def test_current_date_after_end_date(self):
        start = datetime.date(2011, 02, 9)
        end = datetime.date(2011, 02, 10)
        current = datetime.date(2011, 02, 11)
        self.assertEqual(
            100, report_tools.duration_elapsed(start, end, current))

    def test_current_date_equals_end_date(self):
        start = datetime.date(2011, 02, 9)
        end = datetime.date(2011, 02, 10)
        current = end
        self.assertEqual(
            100, report_tools.duration_elapsed(start, end, current))

    def test_start_date_after_current_date(self):
        start = datetime.date(2011, 02, 9)
        end = datetime.date(2011, 02, 10)
        current = datetime.date(2011, 02, 8)
        self.assertEqual(
            0, report_tools.duration_elapsed(start, end, current))

    def test_start_date_equals_current_date(self):
        start = datetime.date(2011, 02, 9)
        end = datetime.date(2011, 02, 10)
        current = start
        self.assertEqual(
            0, report_tools.duration_elapsed(start, end, current))

    def test_percentage_computed(self):
        start = datetime.date(2011, 02, 9)
        end = datetime.date(2011, 02, 11)
        current = datetime.date(2011, 02, 10)
        self.assertEqual(
            50, report_tools.duration_elapsed(start, end, current))


def test_suite():
    from unittest import TestLoader
    loader = TestLoader()
    suite = loader.loadTestsFromName(__name__)
    suite.addTests(loader.loadTestsFromName("lpworkitems.tests.test_collect"))
    suite.addTests(loader.loadTestsFromName("lpworkitems.tests.test_error_collector"))
    suite.addTests(loader.loadTestsFromName("lpworkitems.tests.test_factory"))
    suite.addTests(loader.loadTestsFromName("lpworkitems.tests.test_fake_launchpad"))
    suite.addTests(loader.loadTestsFromName("lpworkitems.tests.test_models"))
    return suite