otrs-somconnexio 0.4.4__py2.py3-none-any.whl → 0.7.3__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. otrs_somconnexio/client.py +110 -42
  2. otrs_somconnexio/exceptions.py +44 -11
  3. otrs_somconnexio/otrs_models/abstract_article.py +3 -0
  4. otrs_somconnexio/otrs_models/adsl_data.py +7 -37
  5. otrs_somconnexio/otrs_models/adsl_dynamic_fields.py +5 -4
  6. otrs_somconnexio/otrs_models/adsl_ticket.py +9 -5
  7. otrs_somconnexio/otrs_models/configurations/changes/__init__.py +0 -0
  8. otrs_somconnexio/otrs_models/configurations/changes/add_data.py +13 -0
  9. otrs_somconnexio/otrs_models/configurations/changes/change_email.py +16 -0
  10. otrs_somconnexio/otrs_models/configurations/changes/change_iban.py +8 -0
  11. otrs_somconnexio/otrs_models/configurations/changes/change_owner.py +19 -0
  12. otrs_somconnexio/otrs_models/configurations/changes/change_pack.py +6 -0
  13. otrs_somconnexio/otrs_models/configurations/changes/change_shared_bond.py +7 -0
  14. otrs_somconnexio/otrs_models/configurations/changes/change_tariff.py +29 -0
  15. otrs_somconnexio/otrs_models/configurations/changes/change_tariff_adsl.py +20 -0
  16. otrs_somconnexio/otrs_models/configurations/changes/change_tariff_fiber.py +11 -0
  17. otrs_somconnexio/otrs_models/configurations/provision/__init__.py +0 -0
  18. otrs_somconnexio/otrs_models/configurations/{adsl_ticket.py → provision/adsl_ticket.py} +2 -2
  19. otrs_somconnexio/otrs_models/configurations/{fiber_ticket.py → provision/fiber_ticket.py} +6 -3
  20. otrs_somconnexio/otrs_models/configurations/provision/mobile_ticket.py +44 -0
  21. otrs_somconnexio/otrs_models/configurations/provision/router_4G_ticket.py +8 -0
  22. otrs_somconnexio/otrs_models/configurations/provision/switchboard_ticket.py +10 -0
  23. otrs_somconnexio/otrs_models/configurations/querys/__init__.py +0 -0
  24. otrs_somconnexio/otrs_models/configurations/querys/check_coverage.py +16 -0
  25. otrs_somconnexio/otrs_models/configurations/querys/we_call_you.py +26 -0
  26. otrs_somconnexio/otrs_models/coverage/adsl.py +1 -1
  27. otrs_somconnexio/otrs_models/coverage/asociatel_fiber.py +6 -0
  28. otrs_somconnexio/otrs_models/coverage/mm_fiber.py +7 -0
  29. otrs_somconnexio/otrs_models/coverage/orange_fiber.py +5 -0
  30. otrs_somconnexio/otrs_models/coverage/vdf_fiber.py +8 -0
  31. otrs_somconnexio/otrs_models/coverage_article.py +20 -4
  32. otrs_somconnexio/otrs_models/coverage_ticket.py +1 -0
  33. otrs_somconnexio/otrs_models/customer_data.py +15 -3
  34. otrs_somconnexio/otrs_models/customer_user.py +3 -9
  35. otrs_somconnexio/otrs_models/fiber_data.py +17 -33
  36. otrs_somconnexio/otrs_models/fiber_dynamic_fields.py +58 -4
  37. otrs_somconnexio/otrs_models/fiber_ticket.py +9 -5
  38. otrs_somconnexio/otrs_models/internet_data.py +79 -0
  39. otrs_somconnexio/otrs_models/internet_dynamic_fields.py +65 -26
  40. otrs_somconnexio/otrs_models/mobile_data.py +49 -5
  41. otrs_somconnexio/otrs_models/mobile_dynamic_fields.py +50 -8
  42. otrs_somconnexio/otrs_models/mobile_ticket.py +20 -4
  43. otrs_somconnexio/otrs_models/process_ticket/internet.py +40 -97
  44. otrs_somconnexio/otrs_models/process_ticket/mobile.py +63 -43
  45. otrs_somconnexio/otrs_models/process_ticket/process_ticket.py +74 -0
  46. otrs_somconnexio/otrs_models/providers.py +4 -3
  47. otrs_somconnexio/otrs_models/provision_article.py +7 -5
  48. otrs_somconnexio/otrs_models/provision_dynamic_fields.py +76 -11
  49. otrs_somconnexio/otrs_models/provision_ticket.py +52 -28
  50. otrs_somconnexio/otrs_models/responsible_data.py +6 -0
  51. otrs_somconnexio/otrs_models/router_4G_data.py +8 -0
  52. otrs_somconnexio/otrs_models/router_4G_dynamic_fields.py +9 -0
  53. otrs_somconnexio/otrs_models/router_4G_ticket.py +26 -0
  54. otrs_somconnexio/otrs_models/service.py +41 -12
  55. otrs_somconnexio/otrs_models/switchboard_data.py +58 -0
  56. otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py +94 -0
  57. otrs_somconnexio/otrs_models/switchboard_header_data.py +18 -0
  58. otrs_somconnexio/otrs_models/switchboard_header_dynamic_fields.py +80 -0
  59. otrs_somconnexio/otrs_models/switchboard_header_ticket.py +30 -0
  60. otrs_somconnexio/otrs_models/switchboard_ticket.py +35 -0
  61. otrs_somconnexio/otrs_models/telecom_company.py +69 -69
  62. otrs_somconnexio/otrs_models/ticket_factory.py +34 -11
  63. otrs_somconnexio/otrs_models/ticket_types/__init__.py +0 -0
  64. otrs_somconnexio/otrs_models/ticket_types/add_data_ticket.py +36 -0
  65. otrs_somconnexio/otrs_models/ticket_types/base_change_tariff_ba_ticket.py +23 -0
  66. otrs_somconnexio/otrs_models/ticket_types/base_change_ticket.py +33 -0
  67. otrs_somconnexio/otrs_models/ticket_types/base_customer_ticket.py +24 -0
  68. otrs_somconnexio/otrs_models/ticket_types/base_ticket.py +147 -0
  69. otrs_somconnexio/otrs_models/ticket_types/change_email_ticket.py +40 -0
  70. otrs_somconnexio/otrs_models/ticket_types/change_iban_ticket.py +39 -0
  71. otrs_somconnexio/otrs_models/ticket_types/change_owner_ticket.py +132 -0
  72. otrs_somconnexio/otrs_models/ticket_types/change_pack_not_shared_data.py +36 -0
  73. otrs_somconnexio/otrs_models/ticket_types/change_personal_email_ticket.py +31 -0
  74. otrs_somconnexio/otrs_models/ticket_types/change_shared_bond_ticket.py +35 -0
  75. otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_landline_ticket.py +30 -0
  76. otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_out_landline_ticket.py +30 -0
  77. otrs_somconnexio/otrs_models/ticket_types/change_tariff_adsl_ticket.py +42 -0
  78. otrs_somconnexio/otrs_models/ticket_types/change_tariff_fiber_ticket.py +43 -0
  79. otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket.py +87 -0
  80. otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_mobile_pack.py +51 -0
  81. otrs_somconnexio/otrs_models/ticket_types/change_tariff_ticket_shared_bonds.py +22 -0
  82. otrs_somconnexio/otrs_models/ticket_types/check_coverage_ticket.py +52 -0
  83. otrs_somconnexio/otrs_models/ticket_types/we_call_you_ticket.py +53 -0
  84. otrs_somconnexio/otrs_models/vf_provisioning_article.py +4 -2
  85. otrs_somconnexio/responses/ticket_creation.py +5 -4
  86. otrs_somconnexio/services/activate_change_tarriff_mobile_tickets.py +13 -0
  87. otrs_somconnexio/services/base_get_ticket_by_number.py +22 -0
  88. otrs_somconnexio/services/change_to_confirm_ticket.py +45 -0
  89. otrs_somconnexio/services/get_mobile_related_tickets.py +11 -0
  90. otrs_somconnexio/services/get_sharing_data_mobile_tickets.py +65 -0
  91. otrs_somconnexio/services/get_ticket_title.py +26 -0
  92. otrs_somconnexio/services/mapping_mobile_minutes.py +5 -5
  93. otrs_somconnexio/services/mapping_services.py +8 -6
  94. otrs_somconnexio/services/move_sharing_data_mobile_tickets.py +13 -0
  95. otrs_somconnexio/services/search_tickets_mobile_change_tariff.py +25 -0
  96. otrs_somconnexio/services/search_tickets_service.py +57 -0
  97. otrs_somconnexio/services/set_SIM_recieved_mobile_ticket.py +107 -0
  98. otrs_somconnexio/services/set_SIM_returned_mobile_ticket.py +37 -0
  99. otrs_somconnexio/services/set_fiber_contract_code_mobile_ticket.py +21 -0
  100. otrs_somconnexio/services/unblock_mobile_pack_ticket.py +48 -0
  101. otrs_somconnexio/services/update_process_ticket_with_coverage_tickets_info_service.py +10 -10
  102. otrs_somconnexio/services/update_ticket_DF.py +18 -0
  103. otrs_somconnexio/services/update_ticket_with_provider_info.py +2 -3
  104. otrs_somconnexio/user_management_client/client.py +15 -27
  105. otrs_somconnexio/user_management_client/user_management_response.py +2 -3
  106. {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/METADATA +19 -4
  107. otrs_somconnexio-0.7.3.dist-info/RECORD +202 -0
  108. {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/WHEEL +1 -1
  109. tests/data/otrs_raw_responses.py +12 -6
  110. tests/integration/test_change_customer_language.py +14 -19
  111. tests/integration/test_ticket_factory.py +383 -106
  112. tests/integration/test_update_ticket_with_coverage_data.py +53 -27
  113. tests/otrs_models/common_helper.py +9 -0
  114. tests/otrs_models/configuration/changes/__init__.py +0 -0
  115. tests/otrs_models/configuration/changes/test_change_tariff_ticket.py +91 -0
  116. tests/otrs_models/configuration/provision/__init__.py +0 -0
  117. tests/otrs_models/configuration/provision/test_adsl_ticket.py +30 -0
  118. tests/otrs_models/configuration/provision/test_fiber_ticket.py +32 -0
  119. tests/otrs_models/configuration/provision/test_mobile_ticket.py +62 -0
  120. tests/otrs_models/process_ticket/test_internet_process_ticket.py +54 -60
  121. tests/otrs_models/process_ticket/test_mobile_process_ticket.py +56 -33
  122. tests/otrs_models/test_abstract_article.py +3 -2
  123. tests/otrs_models/test_adsl_data.py +11 -4
  124. tests/otrs_models/test_adsl_dynamic_fields.py +217 -100
  125. tests/otrs_models/test_adsl_ticket.py +78 -83
  126. tests/otrs_models/test_coverage_article.py +9 -7
  127. tests/otrs_models/test_coverage_ticket.py +4 -2
  128. tests/otrs_models/test_customer_user.py +23 -20
  129. tests/otrs_models/test_fiber_data.py +20 -4
  130. tests/otrs_models/test_fiber_dynamic_fields.py +458 -134
  131. tests/otrs_models/test_fiber_ticket.py +113 -79
  132. tests/otrs_models/test_mobile_data.py +14 -3
  133. tests/otrs_models/test_mobile_dynamic_fields.py +335 -74
  134. tests/otrs_models/test_mobile_paused_ticket.py +35 -0
  135. tests/otrs_models/test_mobile_ticket.py +82 -96
  136. tests/otrs_models/test_provision_article.py +49 -0
  137. tests/otrs_models/test_router_4G_data.py +43 -0
  138. tests/otrs_models/test_router_4G_dynamic_fields.py +619 -0
  139. tests/otrs_models/test_router_4G_ticket.py +135 -0
  140. tests/otrs_models/test_service.py +58 -14
  141. tests/otrs_models/test_switchboard_data.py +37 -0
  142. tests/otrs_models/test_switchboard_dynamic_fields.py +197 -0
  143. tests/otrs_models/test_switchboard_header_data.py +18 -0
  144. tests/otrs_models/test_switchboard_header_dynamic_fields.py +119 -0
  145. tests/otrs_models/test_switchboard_header_ticket.py +127 -0
  146. tests/otrs_models/test_switchboard_ticket.py +147 -0
  147. tests/otrs_models/test_telecom_company.py +16 -16
  148. tests/otrs_models/test_ticket_factory.py +73 -16
  149. tests/otrs_models/test_vf_provisioning_article.py +6 -5
  150. tests/otrs_models/ticket_types/__init__.py +0 -0
  151. tests/otrs_models/ticket_types/test_add_data.py +79 -0
  152. tests/otrs_models/ticket_types/test_change_email.py +163 -0
  153. tests/otrs_models/ticket_types/test_change_iban.py +82 -0
  154. tests/otrs_models/ticket_types/test_change_owner.py +277 -0
  155. tests/otrs_models/ticket_types/test_change_pack_not_shared_data.py +77 -0
  156. tests/otrs_models/ticket_types/test_change_personal_email.py +81 -0
  157. tests/otrs_models/ticket_types/test_change_tariff.py +435 -0
  158. tests/otrs_models/ticket_types/test_change_tariff_adsl_landline.py +115 -0
  159. tests/otrs_models/ticket_types/test_change_tariff_adsl_out_landline.py +115 -0
  160. tests/otrs_models/ticket_types/test_change_tariff_fiber.py +175 -0
  161. tests/otrs_models/ticket_types/test_change_tariff_mobile_pack.py +151 -0
  162. tests/otrs_models/ticket_types/test_change_tariff_shared_bonds.py +65 -0
  163. tests/otrs_models/ticket_types/test_check_coverage.py +106 -0
  164. tests/otrs_models/ticket_types/test_shared_bond.py +80 -0
  165. tests/otrs_models/ticket_types/test_we_call_you.py +108 -0
  166. tests/responses/test_ticket_creation.py +4 -4
  167. tests/services/test_activate_change_tariff_mobile_tickets.py +45 -0
  168. tests/services/test_change_to_confirm_ticket.py +80 -0
  169. tests/services/test_get_mobile_related_tickets.py +39 -0
  170. tests/services/test_get_sharing_data_mobile_tickets.py +127 -0
  171. tests/services/test_mapping_mobile_minutes.py +8 -8
  172. tests/services/{test_mappint_services.py → test_mapping_services.py} +9 -9
  173. tests/services/test_move_sharing_data_mobile_tickets.py +43 -0
  174. tests/services/test_search_tickets_mobile_change_tariff.py +84 -0
  175. tests/services/test_search_tickets_service.py +166 -0
  176. tests/services/test_set_SIM_recieved_mobile_ticket_service.py +211 -0
  177. tests/services/test_set_SIM_returned_mobile_ticket_service.py +59 -0
  178. tests/services/test_set_fiber_contract_code_mobile_ticket_service.py +47 -0
  179. tests/services/test_unblock_mobile_pack_ticket.py +224 -0
  180. tests/services/test_update_process_ticket_with_VF_provisioning.py +15 -14
  181. tests/services/test_update_process_ticket_with_coverage_tickets_info_service.py +22 -10
  182. tests/services/test_update_ticket_with_provider_info.py +16 -15
  183. tests/user_management_client/test_client.py +41 -58
  184. tests/user_management_client/test_user_management_response.py +13 -26
  185. otrs_somconnexio/otrs_models/configurations/mobile_ticket.py +0 -17
  186. otrs_somconnexio/otrs_models/coverage/mm_fibre.py +0 -7
  187. otrs_somconnexio/otrs_models/coverage/vdf_fibre.py +0 -8
  188. otrs_somconnexio-0.4.4.dist-info/RECORD +0 -95
  189. tests/otrs_models/configuration/test_adsl_ticket.py +0 -45
  190. tests/otrs_models/configuration/test_fiber_ticket.py +0 -45
  191. tests/otrs_models/configuration/test_mobile_ticket.py +0 -45
  192. {otrs_somconnexio-0.4.4.dist-info → otrs_somconnexio-0.7.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,163 @@
1
+
2
+
3
+
4
+ from otrs_somconnexio.otrs_models.configurations.changes.change_email import ChangeEmailContractsConfiguration
5
+ from otrs_somconnexio.otrs_models.ticket_types.change_email_ticket import ChangeEmailTicket
6
+
7
+ username = "7456787G"
8
+ customer_code = "1234"
9
+
10
+ class TestCaseChangeEmailTicket:
11
+ def test_create(self, mocker):
12
+ OTRSClientMock = mocker.patch(
13
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.OTRSClient",
14
+ return_value=mocker.Mock(),
15
+ )
16
+ TicketMock = mocker.patch(
17
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Ticket",
18
+ return_value=mocker.Mock(),
19
+ ) # noqa
20
+ ArticleMock = mocker.patch(
21
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Article",
22
+ return_value=mocker.Mock(),
23
+ ) # noqa
24
+ DynamicFieldMock = mocker.patch(
25
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.DynamicField",
26
+ return_value=mocker.Mock(),
27
+ ) # noqa
28
+ UUIDMock = mocker.patch(
29
+ "otrs_somconnexio.otrs_models.ticket_types.base_change_ticket.uuid", spec=["uuid4"]
30
+ ) # noqa
31
+ UUIDMock.uuid4.return_value = "UUID-token"
32
+
33
+ expected_ticket_data = {
34
+ "Title": ChangeEmailContractsConfiguration.subject,
35
+ "QueueID": ChangeEmailContractsConfiguration.queue_id,
36
+ "State": ChangeEmailTicket._get_state(self),
37
+ "Type": ChangeEmailTicket._get_type(self),
38
+ "Priority": ChangeEmailTicket._get_priority(self),
39
+ "CustomerUser": customer_code,
40
+ "CustomerID": customer_code,
41
+ "Service": False,
42
+ }
43
+ expected_message = "-"
44
+ expected_article_data = {
45
+ "Subject": ChangeEmailContractsConfiguration.subject,
46
+ "Body": expected_message,
47
+ }
48
+
49
+ fields_dict = {
50
+ "new_value": "newemail@email.coop",
51
+ "scope": "some",
52
+ "selected_subscriptions": ["1254"],
53
+ "language": "ca_ES",
54
+ }
55
+
56
+ ChangeEmailTicket(
57
+ username,
58
+ customer_code,
59
+ fields_dict,
60
+ ).create()
61
+
62
+ TicketMock.assert_called_once_with(expected_ticket_data)
63
+ ArticleMock.assert_called_once_with(expected_article_data)
64
+ expected_df_calls = [
65
+ mocker.call(
66
+ "ProcessManagementProcessID", ChangeEmailContractsConfiguration.process_id
67
+ ), # noqa
68
+ mocker.call(
69
+ "ProcessManagementActivityID",
70
+ ChangeEmailContractsConfiguration.activity_id,
71
+ ), # noqa
72
+ mocker.call("IDOV", UUIDMock.uuid4.return_value),
73
+ mocker.call("refOdooContract", "1254"),
74
+ mocker.call("nouEmail", "newemail@email.coop"),
75
+ mocker.call("flagContracts", True),
76
+ mocker.call("idioma", "ca_ES"),
77
+ ]
78
+ for call in DynamicFieldMock.mock_calls:
79
+ assert call in expected_df_calls
80
+
81
+ OTRSClientMock.return_value.create_otrs_process_ticket.assert_called_once_with( # noqa
82
+ TicketMock.return_value,
83
+ article=ArticleMock.return_value,
84
+ dynamic_fields=[mocker.ANY for c in expected_df_calls],
85
+ attachments=None,
86
+ )
87
+
88
+ def test_create_scope_all(self, mocker):
89
+ OTRSClientMock = mocker.patch(
90
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.OTRSClient",
91
+ return_value=mocker.Mock(),
92
+ )
93
+ TicketMock = mocker.patch(
94
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Ticket",
95
+ return_value=mocker.Mock(),
96
+ ) # noqa
97
+ ArticleMock = mocker.patch(
98
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Article",
99
+ return_value=mocker.Mock(),
100
+ ) # noqa
101
+ DynamicFieldMock = mocker.patch(
102
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.DynamicField",
103
+ return_value=mocker.Mock(),
104
+ ) # noqa
105
+ UUIDMock = mocker.patch(
106
+ "otrs_somconnexio.otrs_models.ticket_types.base_change_ticket.uuid", spec=["uuid4"]
107
+ ) # noqa
108
+ UUIDMock.uuid4.return_value = "UUID-token"
109
+
110
+ expected_ticket_data = {
111
+ "Title": ChangeEmailContractsConfiguration.subject,
112
+ "QueueID": ChangeEmailContractsConfiguration.queue_id,
113
+ "State": ChangeEmailTicket._get_state(self),
114
+ "Type": ChangeEmailTicket._get_type(self),
115
+ "Priority": ChangeEmailTicket._get_priority(self),
116
+ "CustomerUser": customer_code,
117
+ "CustomerID": customer_code,
118
+ "Service": False,
119
+ }
120
+ expected_message = "-"
121
+ expected_article_data = {
122
+ "Subject": ChangeEmailContractsConfiguration.subject,
123
+ "Body": expected_message,
124
+ }
125
+
126
+ fields_dict = {
127
+ "new_value": "newemail@email.coop",
128
+ "scope": "all",
129
+ "selected_subscriptions": ["111", "222"],
130
+ "language": "ca_ES",
131
+ }
132
+
133
+ ChangeEmailTicket(
134
+ username,
135
+ customer_code,
136
+ fields_dict,
137
+ ).create()
138
+
139
+ TicketMock.assert_called_once_with(expected_ticket_data)
140
+ ArticleMock.assert_called_once_with(expected_article_data)
141
+ expected_df_calls = [
142
+ mocker.call(
143
+ "ProcessManagementProcessID", ChangeEmailContractsConfiguration.process_id
144
+ ), # noqa
145
+ mocker.call(
146
+ "ProcessManagementActivityID",
147
+ ChangeEmailContractsConfiguration.activity_id,
148
+ ), # noqa
149
+ mocker.call("IDOV", UUIDMock.uuid4.return_value),
150
+ mocker.call("refOdooContract", "111;222"),
151
+ mocker.call("nouEmail", fields_dict["new_value"]),
152
+ mocker.call("flagContracts", True),
153
+ mocker.call("idioma", "ca_ES"),
154
+ ]
155
+ for call in DynamicFieldMock.mock_calls:
156
+ assert call in expected_df_calls
157
+
158
+ OTRSClientMock.return_value.create_otrs_process_ticket.assert_called_once_with( # noqa
159
+ TicketMock.return_value,
160
+ article=ArticleMock.return_value,
161
+ dynamic_fields=[mocker.ANY for c in expected_df_calls],
162
+ attachments=None,
163
+ )
@@ -0,0 +1,82 @@
1
+
2
+
3
+
4
+ from otrs_somconnexio.otrs_models.configurations.changes.change_iban import ChangeIbanTicketConfiguration
5
+ from otrs_somconnexio.otrs_models.ticket_types.change_iban_ticket import ChangeIbanTicket
6
+
7
+
8
+ class TestCaseChangeIbanTicket:
9
+ def test_create(self, mocker):
10
+ username = "7456787G"
11
+ customer_code = "1234"
12
+ OTRSClientMock = mocker.patch(
13
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.OTRSClient",
14
+ return_value=mocker.Mock(),
15
+ )
16
+ TicketMock = mocker.patch(
17
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Ticket",
18
+ return_value=mocker.Mock(),
19
+ ) # noqa
20
+ ArticleMock = mocker.patch(
21
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Article",
22
+ return_value=mocker.Mock(),
23
+ ) # noqa
24
+ DynamicFieldMock = mocker.patch(
25
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.DynamicField",
26
+ return_value=mocker.Mock(),
27
+ ) # noqa
28
+ UUIDMock = mocker.patch(
29
+ "otrs_somconnexio.otrs_models.ticket_types.base_change_ticket.uuid", spec=["uuid4"]
30
+ ) # noqa
31
+ UUIDMock.uuid4.return_value = "UUID-token"
32
+
33
+ expected_ticket_data = {
34
+ "Title": ChangeIbanTicketConfiguration.subject,
35
+ "QueueID": ChangeIbanTicketConfiguration.queue_id,
36
+ "State": ChangeIbanTicket._get_state(self),
37
+ "Type": ChangeIbanTicket._get_type(self),
38
+ "Priority": ChangeIbanTicket._get_priority(self),
39
+ "CustomerUser": customer_code,
40
+ "CustomerID": customer_code,
41
+ "Service": False,
42
+ }
43
+ expected_message = "-"
44
+ expected_article_data = {
45
+ "Subject": ChangeIbanTicketConfiguration.subject,
46
+ "Body": expected_message,
47
+ }
48
+
49
+ fields_dict = {
50
+ "new_value": "ES6621000418401234567891",
51
+ "scope": "all",
52
+ "selected_subscriptions": ["1254"],
53
+ "language": "ca_ES"
54
+ }
55
+
56
+ ChangeIbanTicket(username, customer_code,
57
+ fields_dict,
58
+ ).create()
59
+
60
+ TicketMock.assert_called_once_with(expected_ticket_data)
61
+ ArticleMock.assert_called_once_with(expected_article_data)
62
+ expected_df_calls = [
63
+ mocker.call("nouIBAN", fields_dict["new_value"]),
64
+ mocker.call(
65
+ "ProcessManagementProcessID", ChangeIbanTicketConfiguration.process_id
66
+ ), # noqa
67
+ mocker.call(
68
+ "ProcessManagementActivityID",
69
+ ChangeIbanTicketConfiguration.activity_id
70
+ ), # noqa
71
+ mocker.call("IDOV", UUIDMock.uuid4.return_value),
72
+ mocker.call("refOdooContract", "1254"),
73
+ mocker.call("idioma", "ca_ES"),
74
+ ]
75
+ for call in DynamicFieldMock.mock_calls:
76
+ assert call in expected_df_calls
77
+ OTRSClientMock.return_value.create_otrs_process_ticket.assert_called_once_with( # noqa
78
+ TicketMock.return_value,
79
+ article=ArticleMock.return_value,
80
+ dynamic_fields=[mocker.ANY for c in expected_df_calls],
81
+ attachments=None,
82
+ )
@@ -0,0 +1,277 @@
1
+ from otrs_somconnexio.otrs_models.configurations.changes.change_owner import (
2
+ ChangeOwnerConfiguration,
3
+ ChangeOwnerTicketConfiguration,
4
+ ChangeOwnerPackTicketConfiguration,
5
+ )
6
+ from otrs_somconnexio.otrs_models.ticket_types.change_owner_ticket import (
7
+ ChangeOwnerTicket,
8
+ ChangeOwnerPackTicket,
9
+ )
10
+
11
+
12
+ class TestCaseChangeOwnerTicket:
13
+ fields_dict_create = {
14
+ "new_value": "email@email",
15
+ "selected_subscriptions": ["123"],
16
+ "language": "ca_ES",
17
+ "scope": "some",
18
+ "docs": [{"content": "content", "file_type": "type", "file_name": "name"}],
19
+ }
20
+
21
+ common_fields_dict_update = {
22
+ "role_new_owner": "role",
23
+ "legal_entity": "entity",
24
+ "name_new_owner": "name",
25
+ "vat_new_owner": "vat",
26
+ "email_new_owner": "email",
27
+ "iban_new_owner": "iban",
28
+ "next_owner_docs": [
29
+ {"content": "content", "file_type": "type", "file_name": "name"}
30
+ ],
31
+ }
32
+
33
+ new_user_fields_dict_update = {
34
+ "lang": "lang",
35
+ "phone_contact": "666666666",
36
+ "address_street_contact": "carrer",
37
+ "address_city_contact": "ciutat",
38
+ "address_zip_code_contact": "46870",
39
+ "address_state_contact": "AL",
40
+ "is_new_user": True,
41
+ }
42
+
43
+ def _get_common_calls_update(self, mocker):
44
+ return [
45
+ mocker.call("enviatOdooOV", True),
46
+ mocker.call("situacioNovaTitular", "role"),
47
+ mocker.call("definicioNovaTitular", "entity"),
48
+ mocker.call("nomSoci", "name"),
49
+ mocker.call("NIFNIENovaTitular", "vat"),
50
+ mocker.call("correuElectronic", "email"),
51
+ mocker.call("IBAN", "iban"),
52
+ ]
53
+
54
+ def _get_new_user_calls_update(self, mocker):
55
+ return [
56
+ mocker.call("idiomaNovaTitular", "lang"),
57
+ mocker.call("telefonContacte", "666666666"),
58
+ mocker.call("adrecaNovaTitular", "carrer"),
59
+ mocker.call("localitatNovaTitular", "ciutat"),
60
+ mocker.call("cpNovaTitular", "46870"),
61
+ mocker.call("codiProvinciaServei", "AL"),
62
+ ]
63
+
64
+ def _get_calls_create(
65
+ self,
66
+ mocker,
67
+ config=ChangeOwnerTicketConfiguration,
68
+ ):
69
+ return [
70
+ mocker.call("ProcessManagementProcessID", config.process_id),
71
+ mocker.call(
72
+ "ProcessManagementActivityID",
73
+ config.activity_id,
74
+ ),
75
+ mocker.call("IDOV", "UUID-token"),
76
+ mocker.call("idioma", "ca_ES"),
77
+ mocker.call("nouEmail", "email@email"),
78
+ ]
79
+
80
+ def _execute_and_assert_create(
81
+ self,
82
+ mocker,
83
+ fields_dict,
84
+ calls,
85
+ config=ChangeOwnerTicketConfiguration,
86
+ target=ChangeOwnerTicket,
87
+ ):
88
+ username = "7456787G"
89
+ customer_code = "1234"
90
+ expected_article_data = {
91
+ "Subject": config.subject,
92
+ "Body": config.body,
93
+ }
94
+
95
+ OTRSClientMock = mocker.patch(
96
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.OTRSClient",
97
+ return_value=mocker.Mock(),
98
+ )
99
+ OTRSClientMock.return_value.create_otrs_process_ticket.return_value = (
100
+ mocker.Mock(spec=["id"])
101
+ )
102
+ OTRSClientMock.return_value.create_otrs_process_ticket.return_value.id = "1"
103
+
104
+ TicketMock = mocker.patch(
105
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Ticket",
106
+ return_value=mocker.Mock(),
107
+ )
108
+ ArticleMock = mocker.patch(
109
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Article",
110
+ return_value=mocker.Mock(),
111
+ )
112
+ AttachmentMock = mocker.patch(
113
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Attachment",
114
+ return_value=mocker.Mock(),
115
+ )
116
+ DynamicFieldMock = mocker.patch(
117
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.DynamicField",
118
+ return_value=mocker.Mock(),
119
+ )
120
+ UUIDMock = mocker.patch(
121
+ "otrs_somconnexio.otrs_models.ticket_types.base_change_ticket.uuid",
122
+ spec=["uuid4"],
123
+ )
124
+ UUIDMock.uuid4.return_value = "UUID-token"
125
+
126
+ expected_ticket_data = {
127
+ "Title": config.subject,
128
+ "QueueID": config.queue_id,
129
+ "State": config.state,
130
+ "Type": config.type,
131
+ "Priority": config.priority,
132
+ "CustomerUser": customer_code,
133
+ "CustomerID": customer_code,
134
+ "Service": False,
135
+ }
136
+
137
+ ticket = target(username, customer_code, fields_dict).create()
138
+
139
+ TicketMock.assert_called_once_with(expected_ticket_data)
140
+ ArticleMock.assert_called_once_with(expected_article_data)
141
+ AttachmentMock.assert_called_once_with(
142
+ {"Content": "content", "ContentType": "type", "Filename": "name"}
143
+ )
144
+ DynamicFieldMock.assert_has_calls(calls)
145
+
146
+ OTRSClientMock.return_value.create_otrs_process_ticket.assert_called_once_with(
147
+ TicketMock.return_value,
148
+ article=ArticleMock.return_value,
149
+ dynamic_fields=[mocker.ANY for call in calls],
150
+ attachments=[AttachmentMock.return_value],
151
+ )
152
+ assert ticket.id == "1"
153
+
154
+ def _execute_and_assert_update(
155
+ self, mocker, fields_dict, calls, target=ChangeOwnerTicket
156
+ ):
157
+ ticket_id = "1234"
158
+ username = None
159
+ customer_code = None
160
+ expected_article_data = {
161
+ "Subject": ChangeOwnerConfiguration.update_subject,
162
+ "Body": ChangeOwnerConfiguration.update_body,
163
+ }
164
+
165
+ OTRSClientMock = mocker.patch(
166
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.OTRSClient",
167
+ return_value=mocker.Mock(),
168
+ )
169
+ DynamicFieldMock = mocker.patch(
170
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.DynamicField",
171
+ return_value=mocker.Mock(),
172
+ )
173
+ AttachmentMock = mocker.patch(
174
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Attachment",
175
+ return_value=mocker.Mock(),
176
+ )
177
+ ArticleMock = mocker.patch(
178
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Article",
179
+ return_value=mocker.Mock(),
180
+ )
181
+
182
+ ticket = target(username, customer_code, fields_dict)
183
+ ticket.update(ticket_id)
184
+
185
+ AttachmentMock.assert_called_once_with(
186
+ {"Content": "content", "ContentType": "type", "Filename": "name"}
187
+ )
188
+ ArticleMock.assert_called_once_with(expected_article_data)
189
+ DynamicFieldMock.assert_has_calls(calls)
190
+ OTRSClientMock.return_value.client.ticket_update.assert_called_once_with(
191
+ ticket_id,
192
+ article=ArticleMock.return_value,
193
+ dynamic_fields=[mocker.ANY for call in calls],
194
+ State=None,
195
+ attachments=[AttachmentMock.return_value],
196
+ )
197
+
198
+ def test_create_some(self, mocker):
199
+ fields_dict = self.fields_dict_create
200
+ calls = self._get_calls_create(mocker)
201
+ calls.insert(4, mocker.call("refOdooContract", "123"))
202
+
203
+ self._execute_and_assert_create(mocker, fields_dict, calls)
204
+
205
+ def test_create_pack(self, mocker):
206
+ fields_dict = self.fields_dict_create
207
+ calls = self._get_calls_create(mocker, ChangeOwnerPackTicketConfiguration)
208
+ calls.insert(4, mocker.call("refOdooContract", "123"))
209
+
210
+ self._execute_and_assert_create(
211
+ mocker,
212
+ fields_dict,
213
+ calls,
214
+ ChangeOwnerPackTicketConfiguration,
215
+ ChangeOwnerPackTicket,
216
+ )
217
+
218
+ def test_create_all(self, mocker):
219
+ fields_dict = self.fields_dict_create
220
+ fields_dict["scope"] = "all"
221
+ fields_dict["selected_subscriptions"] = ["123", "321"]
222
+ calls = self._get_calls_create(mocker)
223
+ calls.insert(4, mocker.call("refOdooContract", "123;321"))
224
+
225
+ self._execute_and_assert_create(mocker, fields_dict, calls)
226
+
227
+ def test_update_new_owner_already_user(self, mocker):
228
+ fields_dict = self.common_fields_dict_update
229
+ calls = self._get_common_calls_update(mocker)
230
+ self._execute_and_assert_update(mocker, fields_dict, calls)
231
+
232
+ def test_update_new_owner_new_user_partner(self, mocker):
233
+ fields_dict = {
234
+ **self.common_fields_dict_update,
235
+ **self.new_user_fields_dict_update,
236
+ **{
237
+ "is_new_partner": True,
238
+ "iban_new_partner": "iban",
239
+ "pays_in_ten_terms": "0",
240
+ },
241
+ }
242
+ calls = (
243
+ self._get_common_calls_update(mocker)
244
+ + self._get_new_user_calls_update(mocker)
245
+ + [
246
+ mocker.call("IBANaportacio", "iban"),
247
+ mocker.call("fraccionarPagament", "0"),
248
+ ]
249
+ )
250
+ self._execute_and_assert_update(mocker, fields_dict, calls)
251
+
252
+ def test_update_new_owner_new_user_sponsorship(self, mocker):
253
+ fields_dict = {
254
+ **self.common_fields_dict_update,
255
+ **self.new_user_fields_dict_update,
256
+ **{
257
+ "is_new_sponsorship": True,
258
+ "sponsor_vat": "vat",
259
+ "sponsor_code": "code",
260
+ },
261
+ }
262
+ calls = (
263
+ self._get_common_calls_update(mocker)
264
+ + self._get_new_user_calls_update(mocker)
265
+ + [
266
+ mocker.call("NIFNIESoci", "vat"),
267
+ mocker.call("codiApadrinament", "code"),
268
+ ]
269
+ )
270
+ self._execute_and_assert_update(mocker, fields_dict, calls)
271
+
272
+ def test_update_pack(self, mocker):
273
+ fields_dict = self.common_fields_dict_update
274
+ calls = self._get_common_calls_update(mocker)
275
+ self._execute_and_assert_update(
276
+ mocker, fields_dict, calls, target=ChangeOwnerPackTicket
277
+ )
@@ -0,0 +1,77 @@
1
+ from otrs_somconnexio.otrs_models.configurations.changes.change_pack import (
2
+ ChangePackNotSharedDataTicketConfiguration,
3
+ )
4
+ from otrs_somconnexio.otrs_models.ticket_types.change_pack_not_shared_data import (
5
+ ChangePackNotSharedDataTicket,
6
+ )
7
+
8
+ username = "7456787G"
9
+ customer_code = "1234"
10
+
11
+
12
+ class TestCaseChangePackNotSharedDataTicket:
13
+ def test_create(self, mocker):
14
+ OTRSClientMock = mocker.patch(
15
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.OTRSClient",
16
+ return_value=mocker.Mock(),
17
+ )
18
+ TicketMock = mocker.patch(
19
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Ticket",
20
+ return_value=mocker.Mock(),
21
+ )
22
+ ArticleMock = mocker.patch(
23
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Article",
24
+ return_value=mocker.Mock(),
25
+ )
26
+ DynamicFieldMock = mocker.patch(
27
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.DynamicField",
28
+ return_value=mocker.Mock(),
29
+ )
30
+
31
+ expected_ticket_data = {
32
+ "Title": ChangePackNotSharedDataTicketConfiguration.subject,
33
+ "QueueID": ChangePackNotSharedDataTicketConfiguration.queue_id,
34
+ "State": ChangePackNotSharedDataTicket._get_state(self),
35
+ "Type": ChangePackNotSharedDataTicket._get_type(self),
36
+ "Priority": ChangePackNotSharedDataTicket._get_priority(self),
37
+ "CustomerUser": customer_code,
38
+ "CustomerID": customer_code,
39
+ "Service": ChangePackNotSharedDataTicketConfiguration.service,
40
+ }
41
+ expected_article_data = {
42
+ "Subject": ChangePackNotSharedDataTicketConfiguration.subject,
43
+ "Body": "-",
44
+ }
45
+
46
+ fields_dict = {
47
+ "selected_subscriptions": ["111", "222"],
48
+ "fiber_without_landline": True,
49
+ }
50
+
51
+ ChangePackNotSharedDataTicket(
52
+ username,
53
+ customer_code,
54
+ fields_dict,
55
+ ).create()
56
+
57
+ TicketMock.assert_called_once_with(expected_ticket_data)
58
+ ArticleMock.assert_called_once_with(expected_article_data)
59
+ calls = [
60
+ mocker.call(
61
+ "ProcessManagementProcessID",
62
+ ChangePackNotSharedDataTicketConfiguration.process_id,
63
+ ),
64
+ mocker.call(
65
+ "ProcessManagementActivityID",
66
+ ChangePackNotSharedDataTicketConfiguration.activity_id,
67
+ ),
68
+ mocker.call("refOdooContract", "111;222"),
69
+ mocker.call("fibraSenseFix", "1"),
70
+ ]
71
+ DynamicFieldMock.assert_has_calls(calls)
72
+ OTRSClientMock.return_value.create_otrs_process_ticket.assert_called_once_with( # noqa
73
+ TicketMock.return_value,
74
+ article=ArticleMock.return_value,
75
+ dynamic_fields=[mocker.ANY for call in calls],
76
+ attachments=None,
77
+ )
@@ -0,0 +1,81 @@
1
+
2
+
3
+ from otrs_somconnexio.otrs_models.configurations.changes.change_email import ChangeEmailPersonalConfiguration
4
+ from otrs_somconnexio.otrs_models.ticket_types.change_personal_email_ticket import ChangePersonalEmailTicket
5
+
6
+
7
+ class TestCaseChangePersonalEmail:
8
+ def test_create(self, mocker):
9
+ username = "7456787G"
10
+ customer_code = "1234"
11
+ OTRSClientMock = mocker.patch(
12
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.OTRSClient",
13
+ return_value=mocker.Mock(),
14
+ )
15
+ TicketMock = mocker.patch(
16
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Ticket",
17
+ return_value=mocker.Mock(),
18
+ ) # noqa
19
+ ArticleMock = mocker.patch(
20
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.Article",
21
+ return_value=mocker.Mock(),
22
+ ) # noqa
23
+ DynamicFieldMock = mocker.patch(
24
+ "otrs_somconnexio.otrs_models.ticket_types.base_ticket.DynamicField",
25
+ return_value=mocker.Mock(),
26
+ ) # noqa
27
+ UUIDMock = mocker.patch(
28
+ "otrs_somconnexio.otrs_models.ticket_types.change_personal_email_ticket.uuid",
29
+ spec=["uuid4"],
30
+ ) # noqa
31
+ UUIDMock.uuid4.return_value = "UUID-token"
32
+
33
+ expected_ticket_data = {
34
+ "Title": ChangeEmailPersonalConfiguration.subject,
35
+ "QueueID": ChangeEmailPersonalConfiguration.queue_id,
36
+ "State": ChangePersonalEmailTicket._get_state(self),
37
+ "Type": ChangePersonalEmailTicket._get_type(self),
38
+ "Priority": ChangePersonalEmailTicket._get_priority(self),
39
+ "CustomerUser": customer_code,
40
+ "CustomerID": customer_code,
41
+ "Service": False,
42
+ }
43
+ expected_article_data = {
44
+ "Subject": ChangeEmailPersonalConfiguration.subject,
45
+ "Body": "-",
46
+ }
47
+
48
+ fields_dict = {
49
+ "email": "fakeemail@email.coop",
50
+ }
51
+
52
+ ChangePersonalEmailTicket(
53
+ username,
54
+ customer_code,
55
+ fields_dict,
56
+ ).create()
57
+
58
+ TicketMock.assert_called_once_with(expected_ticket_data)
59
+ ArticleMock.assert_called_once_with(expected_article_data)
60
+
61
+ expected_df_calls = [
62
+ mocker.call(
63
+ "ProcessManagementProcessID", "Process-b4243866849bc5c0c292f18100fad9d3"
64
+ ), # noqa
65
+ mocker.call(
66
+ "ProcessManagementActivityID",
67
+ "Activity-8cc76400ded45e7b408f6d3e0267a2c6",
68
+ ), # noqa
69
+ mocker.call("flagPartner", True),
70
+ mocker.call("nouEmail", fields_dict["email"]),
71
+ mocker.call("IDOV", UUIDMock.uuid4.return_value),
72
+ ]
73
+ for call in DynamicFieldMock.mock_calls:
74
+ assert call in expected_df_calls
75
+
76
+ OTRSClientMock.return_value.create_otrs_process_ticket.assert_called_once_with( # noqa
77
+ TicketMock.return_value,
78
+ article=ArticleMock.return_value,
79
+ dynamic_fields=[mocker.ANY for call in expected_df_calls],
80
+ attachments=None,
81
+ )