14
14
# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
from model_mommy import mommy
17
from model_mommy.recipe import Recipe, seq
17
18
from ci_utils.tastypie.test import TastypieTestCase
19
from project.models import SourcePackage
18
20
from ticket.models import (get_enum_title, SubTicketWorkflowStep,
19
21
SubTicketWorkflowStepStatus, TicketWorkflowStep,
20
22
TicketWorkflowStepStatus)
24
sourcepackage_recipe = Recipe(SourcePackage, name=seq('foobar'))
23
27
class TicketFullReadAPITest(TastypieTestCase):
26
30
super(TicketFullReadAPITest, self).setUp('/api/v1')
27
31
self.ticket = mommy.make('Ticket')
28
self.sourcepackage = mommy.make('SourcePackage')
32
self.sourcepackage = sourcepackage_recipe.make()
29
33
self.spu = mommy.make('SourcePackageUpload',
30
34
sourcepackage=self.sourcepackage)
31
35
self.subticket = mommy.make('SubTicket', ticket=self.ticket,
32
36
source_package_upload=self.spu)
33
self.artifact = mommy.make('Artifact', subticket=self.subticket)
37
self.artifact_1 = mommy.make('TicketArtifact', ticket=self.ticket)
38
self.artifact_2 = mommy.make('SubTicketArtifact',
39
subticket=self.subticket)
36
41
def test_get_fullticket_api(self):
37
42
obj = self.getResource('fullticket/')
38
43
self.assertEqual(obj['objects'][0], {
39
u'status': get_enum_title(self.ticket.status,
40
TicketWorkflowStepStatus),
41
u'current_workflow_step': get_enum_title(
42
self.ticket.current_workflow_step, TicketWorkflowStep),
44
u'added_binaries': self.ticket.added_binaries,
46
u'resource_uri': u'/api/v1/fullticketartifact/{0}/'.format(
48
u'type': unicode(self.artifact_1.type),
49
u'id': self.artifact_1.pk,
50
u'reference': unicode(self.artifact_1.reference),
51
u'name': unicode(self.artifact_1.name)}],
52
u'status': unicode(get_enum_title(self.ticket.status,
53
TicketWorkflowStepStatus)),
54
u'current_workflow_step': unicode(get_enum_title(
55
self.ticket.current_workflow_step, TicketWorkflowStep)),
43
56
u'description': unicode(self.ticket.description),
44
57
u'title': unicode(self.ticket.title),
46
u'status': get_enum_title(self.subticket.status,
47
SubTicketWorkflowStepStatus),
48
u'current_workflow_step': get_enum_title(
59
u'status': unicode(get_enum_title(self.subticket.status,
60
SubTicketWorkflowStepStatus)),
61
u'current_workflow_step': unicode(get_enum_title(
49
62
self.subticket.current_workflow_step,
50
SubTicketWorkflowStep),
63
SubTicketWorkflowStep)),
52
u'resource_uri': u'/api/v1/fullartifact/{0}/'.format(
54
u'type': unicode(self.artifact.type),
55
u'id': self.artifact.pk,
56
u'reference': unicode(self.artifact.reference),
57
u'name': unicode(self.artifact.name)}],
66
u'/api/v1/fullsubticketartifact/{0}/'.format(
68
u'type': unicode(self.artifact_2.type),
69
u'id': self.artifact_2.pk,
70
u'reference': unicode(self.artifact_2.reference),
71
u'name': unicode(self.artifact_2.name)}],
58
72
u'assignee': unicode(self.subticket.assignee),
59
73
u'source_package_upload': {
60
74
u'version': unicode(self.spu.version),
78
92
u'resource_uri': u'/api/v1/fullticket/{0}/'.format(self.ticket.pk),
79
93
u'updated': unicode(self.ticket.updated.strftime(
80
94
"%Y-%m-%dT%H:%M:%S.%f")),
81
u'added_binaries': self.ticket.added_binaries,
82
95
u'removed_binaries': self.ticket.removed_binaries,
85
def test_get_fullartifact_api(self):
86
obj = self.getResource('fullartifact/')
87
self.assertEqual(obj['objects'][0], {
88
u'resource_uri': u'/api/v1/fullartifact/{0}/'.format(
90
u'type': unicode(self.artifact.type),
91
u'id': self.artifact.pk,
92
u'reference': unicode(self.artifact.reference),
93
u'name': unicode(self.artifact.name),
98
def test_get_fullticketartifact_api(self):
99
obj = self.getResource('fullticketartifact/')
100
self.assertEqual(obj['objects'][0], {
101
u'resource_uri': u'/api/v1/fullticketartifact/{0}/'.format(
103
u'type': unicode(self.artifact_1.type),
104
u'id': self.artifact_1.pk,
105
u'reference': unicode(self.artifact_1.reference),
106
u'name': unicode(self.artifact_1.name),
109
def test_get_fullsubticketartifact_api(self):
110
obj = self.getResource('fullsubticketartifact/')
111
self.assertEqual(obj['objects'][0], {
112
u'resource_uri': u'/api/v1/fullsubticketartifact/{0}/'.format(
114
u'type': unicode(self.artifact_2.type),
115
u'id': self.artifact_2.pk,
116
u'reference': unicode(self.artifact_2.reference),
117
u'name': unicode(self.artifact_2.name),
96
120
def test_get_fullsubticket_api(self):
97
121
obj = self.getResource('fullsubticket/')
98
122
self.assertEqual(obj['objects'][0], {
99
u'status': get_enum_title(self.subticket.status,
100
SubTicketWorkflowStepStatus),
101
u'current_workflow_step': get_enum_title(
123
u'status': unicode(get_enum_title(self.subticket.status,
124
SubTicketWorkflowStepStatus)),
125
u'current_workflow_step': unicode(get_enum_title(
102
126
self.subticket.current_workflow_step,
103
SubTicketWorkflowStep),
127
SubTicketWorkflowStep)),
105
u'resource_uri': u'/api/v1/fullartifact/{0}/'.format(
107
u'type': unicode(self.artifact.type),
108
u'id': self.artifact.pk,
109
u'reference': unicode(self.artifact.reference),
110
u'name': unicode(self.artifact.name)}],
129
u'resource_uri': u'/api/v1/fullsubticketartifact/{0}/'.format(
131
u'type': unicode(self.artifact_2.type),
132
u'id': self.artifact_2.pk,
133
u'reference': unicode(self.artifact_2.reference),
134
u'name': unicode(self.artifact_2.name)}],
111
135
u'assignee': unicode(self.subticket.assignee),
112
136
u'source_package_upload': {
113
137
u'version': unicode(self.spu.version),
140
164
'Ticket', current_workflow_step=int(TicketWorkflowStep.QUEUED))
141
165
self.ticket_4 = mommy.make(
142
166
'Ticket', current_workflow_step=int(TicketWorkflowStep.COMPLETED))
143
self.sourcepackage = mommy.make('SourcePackage')
167
self.sourcepackage = sourcepackage_recipe.make()
144
168
self.spu = mommy.make('SourcePackageUpload',
145
169
sourcepackage=self.sourcepackage)
146
170
self.subticket_1 = mommy.make('SubTicket', ticket=self.ticket_1,
147
171
source_package_upload=self.spu)
148
self.artifact_1 = mommy.make('Artifact', subticket=self.subticket_1)
172
self.artifact_1 = mommy.make('SubTicketArtifact',
173
subticket=self.subticket_1)
149
174
self.subticket_2 = mommy.make('SubTicket', ticket=self.ticket_2,
150
175
source_package_upload=self.spu)
151
self.artifact_2 = mommy.make('Artifact', subticket=self.subticket_2)
176
self.artifact_2 = mommy.make('SubTicketArtifact',
177
subticket=self.subticket_2)
152
178
self.subticket_3 = mommy.make('SubTicket', ticket=self.ticket_3,
153
179
source_package_upload=self.spu)
154
self.artifact_3 = mommy.make('Artifact', subticket=self.subticket_3)
180
self.artifact_3 = mommy.make('SubTicketArtifact',
181
subticket=self.subticket_3)
155
182
self.subticket_4 = mommy.make('SubTicket', ticket=self.ticket_4,
156
183
source_package_upload=self.spu)
157
self.artifact_4 = mommy.make('Artifact', subticket=self.subticket_4)
184
self.artifact_4 = mommy.make('SubTicketArtifact',
185
subticket=self.subticket_4)
159
187
def test_queued_ticket_next(self):
160
188
obj = self.getResource('next/')