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,135 @@
1
+ # coding: utf-8
2
+ import unittest
3
+ from mock import Mock, patch
4
+
5
+ from otrs_somconnexio.otrs_models.router_4G_ticket import Router4GTicket
6
+ from otrs_somconnexio.otrs_models.configurations.provision.router_4G_ticket import (
7
+ Router4GTicketConfiguration,
8
+ )
9
+
10
+
11
+ class Router4GTicketTestCase(unittest.TestCase):
12
+ def setUp(self):
13
+ self.responsible_data = Mock(spec=["email"])
14
+
15
+ @patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
16
+ def test_build_ticket(self, MockTicket):
17
+ customer_data = Mock(spec=["id"])
18
+ service_data = Mock(spec=["order_id", "technology"])
19
+
20
+ expected_ticket_arguments = {
21
+ "Title": "Ticket#{} - Només 4G".format(service_data.order_id),
22
+ "Type": Router4GTicketConfiguration.type,
23
+ "QueueID": Router4GTicketConfiguration.queue_id,
24
+ "State": Router4GTicketConfiguration.state,
25
+ "SLA": False,
26
+ "Service": False,
27
+ "Priority": Router4GTicketConfiguration.priority,
28
+ "CustomerUser": customer_data.id,
29
+ "CustomerID": customer_data.id,
30
+ "Responsible": self.responsible_data.email,
31
+ }
32
+
33
+ Router4GTicket(
34
+ service_data, customer_data, self.responsible_data
35
+ )._build_ticket()
36
+ MockTicket.assert_called_with(expected_ticket_arguments)
37
+
38
+ @patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
39
+ def test_build_article(self, MockInternetArticle):
40
+ customer_data = Mock(spec=[])
41
+ service_data = Mock(spec=["order_id", "technology"])
42
+
43
+ mock_internet_article = MockInternetArticle.return_value
44
+
45
+ Router4GTicket(
46
+ service_data, customer_data, self.responsible_data
47
+ )._build_article()
48
+
49
+ MockInternetArticle.assert_called_with(
50
+ service_data.technology, service_data.order_id, "4G"
51
+ )
52
+ mock_internet_article.call.assert_called_once()
53
+
54
+ @patch("otrs_somconnexio.otrs_models.router_4G_ticket.Router4GDynamicFields")
55
+ def test_build_dynamic_fields(self, MockRouter4GDynamicFields):
56
+ customer_data = Mock(spec=[])
57
+ service_data = Mock(spec=["order_id"])
58
+
59
+ mock_internet_dynamic_fields = MockRouter4GDynamicFields.return_value
60
+
61
+ Router4GTicket(
62
+ service_data, customer_data, self.responsible_data
63
+ )._build_dynamic_fields()
64
+
65
+ MockRouter4GDynamicFields.assert_called_with(
66
+ service_data,
67
+ customer_data,
68
+ Router4GTicketConfiguration.process_id,
69
+ Router4GTicketConfiguration.activity_id,
70
+ )
71
+ mock_internet_dynamic_fields.all.assert_called_once()
72
+
73
+ @patch("otrs_somconnexio.otrs_models.provision_ticket.OTRSClient")
74
+ def test_create(self, MockOTRSClient):
75
+ customer_data = Mock(
76
+ spec=[
77
+ "id",
78
+ "first_name",
79
+ "name",
80
+ "vat_number",
81
+ "has_active_contracts",
82
+ "language",
83
+ ]
84
+ )
85
+ service_data = Mock(
86
+ spec=[
87
+ "order_id",
88
+ "iban",
89
+ "email",
90
+ "previous_service",
91
+ "contact_phone",
92
+ "phone_number",
93
+ "previous_provider",
94
+ "previous_owner_vat",
95
+ "previous_owner_name",
96
+ "previous_owner_surname",
97
+ "previous_contract_address",
98
+ "previous_contract_phone",
99
+ "service_address",
100
+ "service_city",
101
+ "service_zip",
102
+ "service_subdivision",
103
+ "service_subdivision_code",
104
+ "shipment_address",
105
+ "shipment_city",
106
+ "shipment_zip",
107
+ "shipment_subdivision",
108
+ "notes",
109
+ "activation_notes",
110
+ "adsl_coverage",
111
+ "mm_fiber_coverage",
112
+ "asociatel_fiber_coverage",
113
+ "orange_fiber_coverage",
114
+ "vdf_fiber_coverage",
115
+ "type",
116
+ "product",
117
+ "previous_internal_provider",
118
+ "technology",
119
+ "sales_team",
120
+ "confirmed_documentation",
121
+ ]
122
+ )
123
+
124
+ mock_otrs_client = Mock(spec=["create_otrs_process_ticket"])
125
+ mock_otrs_client.create_otrs_process_ticket.return_value.id = 123
126
+ mock_otrs_client.create_otrs_process_ticket.return_value.number = "#123"
127
+ MockOTRSClient.return_value = mock_otrs_client
128
+
129
+ ticket = Router4GTicket(service_data, customer_data, self.responsible_data)
130
+ ticket.create()
131
+
132
+ mock_otrs_client.create_otrs_process_ticket.assert_called_once()
133
+
134
+ self.assertEqual(ticket.id, 123)
135
+ self.assertEqual(ticket.number, "#123")
@@ -9,12 +9,11 @@ from tests.data.otrs_raw_responses import OTRSTicketGetResponse
9
9
 
10
10
 
11
11
  class ServiceTestCase(unittest.TestCase):
12
-
13
12
  def test_mobile_coverage(self):
14
13
  """
15
14
  All the mobile services have coverage.
16
15
  """
17
- OTRSTicketGetResponse['DynamicField'] = [
16
+ OTRSTicketGetResponse["DynamicField"] = [
18
17
  {"Name": "TecDelServei", "Value": "Mobil"},
19
18
  ]
20
19
 
@@ -26,7 +25,7 @@ class ServiceTestCase(unittest.TestCase):
26
25
  """
27
26
  If the agents haven't checked the coverage yet, the coberturaADSL field is still empty
28
27
  """
29
- OTRSTicketGetResponse['DynamicField'] = [
28
+ OTRSTicketGetResponse["DynamicField"] = [
30
29
  {"Name": "TecDelServei", "Value": "ADSL"},
31
30
  {"Name": "coberturaADSL", "Value": None},
32
31
  ]
@@ -36,7 +35,7 @@ class ServiceTestCase(unittest.TestCase):
36
35
  self.assertTrue(service.has_coverage())
37
36
 
38
37
  def test_adsl_without_coverage(self):
39
- OTRSTicketGetResponse['DynamicField'] = [
38
+ OTRSTicketGetResponse["DynamicField"] = [
40
39
  {"Name": "TecDelServei", "Value": "ADSL"},
41
40
  {"Name": "coberturaADSL", "Value": "NoServei"},
42
41
  ]
@@ -46,7 +45,7 @@ class ServiceTestCase(unittest.TestCase):
46
45
  self.assertFalse(service.has_coverage())
47
46
 
48
47
  def test_adsl100_without_coverage(self):
49
- OTRSTicketGetResponse['DynamicField'] = [
48
+ OTRSTicketGetResponse["DynamicField"] = [
50
49
  {"Name": "TecDelServei", "Value": "ADSL+100min"},
51
50
  {"Name": "coberturaADSL", "Value": "NoServei"},
52
51
  ]
@@ -56,7 +55,7 @@ class ServiceTestCase(unittest.TestCase):
56
55
  self.assertFalse(service.has_coverage())
57
56
 
58
57
  def test_adsl1000_without_coverage(self):
59
- OTRSTicketGetResponse['DynamicField'] = [
58
+ OTRSTicketGetResponse["DynamicField"] = [
60
59
  {"Name": "TecDelServei", "Value": "ADSL+1000min"},
61
60
  {"Name": "coberturaADSL", "Value": "NoServei"},
62
61
  ]
@@ -66,7 +65,7 @@ class ServiceTestCase(unittest.TestCase):
66
65
  self.assertFalse(service.has_coverage())
67
66
 
68
67
  def test_adsl_has_coverage(self):
69
- OTRSTicketGetResponse['DynamicField'] = [
68
+ OTRSTicketGetResponse["DynamicField"] = [
70
69
  {"Name": "TecDelServei", "Value": "ADSL"},
71
70
  {"Name": "coberturaADSL", "Value": "24M"},
72
71
  ]
@@ -76,7 +75,7 @@ class ServiceTestCase(unittest.TestCase):
76
75
  self.assertTrue(service.has_coverage())
77
76
 
78
77
  def test_adsl100_has_coverage(self):
79
- OTRSTicketGetResponse['DynamicField'] = [
78
+ OTRSTicketGetResponse["DynamicField"] = [
80
79
  {"Name": "TecDelServei", "Value": "ADSL+100min"},
81
80
  {"Name": "coberturaADSL", "Value": "24M"},
82
81
  ]
@@ -86,7 +85,7 @@ class ServiceTestCase(unittest.TestCase):
86
85
  self.assertTrue(service.has_coverage())
87
86
 
88
87
  def test_adsl1000_has_coverage(self):
89
- OTRSTicketGetResponse['DynamicField'] = [
88
+ OTRSTicketGetResponse["DynamicField"] = [
90
89
  {"Name": "TecDelServei", "Value": "ADSL+1000min"},
91
90
  {"Name": "coberturaADSL", "Value": "24M"},
92
91
  ]
@@ -99,10 +98,11 @@ class ServiceTestCase(unittest.TestCase):
99
98
  """
100
99
  If the agents haven't checked the coverage yet, the coberturaFibraMM and coberturaFibraVdf fields are empty.
101
100
  """
102
- OTRSTicketGetResponse['DynamicField'] = [
101
+ OTRSTicketGetResponse["DynamicField"] = [
103
102
  {"Name": "TecDelServei", "Value": "Fibra"},
104
103
  {"Name": "coberturaFibraMM", "Value": None},
105
104
  {"Name": "coberturaFibraVdf", "Value": None},
105
+ {"Name": "coberturaFibraOrange", "Value": None},
106
106
  ]
107
107
 
108
108
  service = Service(Ticket(OTRSTicketGetResponse))
@@ -110,10 +110,11 @@ class ServiceTestCase(unittest.TestCase):
110
110
  self.assertTrue(service.has_coverage())
111
111
 
112
112
  def test_fibre_without_coverage(self):
113
- OTRSTicketGetResponse['DynamicField'] = [
113
+ OTRSTicketGetResponse["DynamicField"] = [
114
114
  {"Name": "TecDelServei", "Value": "Fibra"},
115
115
  {"Name": "coberturaFibraMM", "Value": "NoFibra"},
116
116
  {"Name": "coberturaFibraVdf", "Value": "NoFibraVdf"},
117
+ {"Name": "coberturaFibraOrange", "Value": "NoFibra"},
117
118
  ]
118
119
 
119
120
  service = Service(Ticket(OTRSTicketGetResponse))
@@ -121,10 +122,11 @@ class ServiceTestCase(unittest.TestCase):
121
122
  self.assertFalse(service.has_coverage())
122
123
 
123
124
  def test_fibre_without_coverage_fibra_indirecta(self):
124
- OTRSTicketGetResponse['DynamicField'] = [
125
+ OTRSTicketGetResponse["DynamicField"] = [
125
126
  {"Name": "TecDelServei", "Value": "Fibra"},
126
127
  {"Name": "coberturaFibraMM", "Value": "fibraIndirecta"},
127
128
  {"Name": "coberturaFibraVdf", "Value": "NoFibraVdf"},
129
+ {"Name": "coberturaFibraOrange", "Value": "NoFibra"},
128
130
  ]
129
131
 
130
132
  service = Service(Ticket(OTRSTicketGetResponse))
@@ -132,10 +134,23 @@ class ServiceTestCase(unittest.TestCase):
132
134
  self.assertFalse(service.has_coverage())
133
135
 
134
136
  def test_fibre_has_coverage_MM(self):
135
- OTRSTicketGetResponse['DynamicField'] = [
137
+ OTRSTicketGetResponse["DynamicField"] = [
136
138
  {"Name": "TecDelServei", "Value": "Fibra"},
137
139
  {"Name": "coberturaFibraMM", "Value": "Coaxial"},
138
140
  {"Name": "coberturaFibraVdf", "Value": "NoFibraVdf"},
141
+ {"Name": "coberturaFibraOrange", "Value": "NoFibra"},
142
+ ]
143
+
144
+ service = Service(Ticket(OTRSTicketGetResponse))
145
+
146
+ self.assertTrue(service.has_coverage())
147
+
148
+ def test_fibre_has_coverage_Orange(self):
149
+ OTRSTicketGetResponse["DynamicField"] = [
150
+ {"Name": "TecDelServei", "Value": "Fibra"},
151
+ {"Name": "coberturaFibraMM", "Value": "NoFibra"},
152
+ {"Name": "coberturaFibraVdf", "Value": "NoFibraVdf"},
153
+ {"Name": "coberturaFibraOrange", "Value": "FibraFTTH"},
139
154
  ]
140
155
 
141
156
  service = Service(Ticket(OTRSTicketGetResponse))
@@ -143,12 +158,41 @@ class ServiceTestCase(unittest.TestCase):
143
158
  self.assertTrue(service.has_coverage())
144
159
 
145
160
  def test_fibre_has_coverage_Vdf(self):
146
- OTRSTicketGetResponse['DynamicField'] = [
161
+ OTRSTicketGetResponse["DynamicField"] = [
147
162
  {"Name": "TecDelServei", "Value": "Fibra"},
148
163
  {"Name": "coberturaFibraMM", "Value": "NoFibra"},
149
164
  {"Name": "coberturaFibraVdf", "Value": "CoaxialVdf"},
165
+ {"Name": "coberturaFibraOrange", "Value": "NoFibra"},
150
166
  ]
151
167
 
152
168
  service = Service(Ticket(OTRSTicketGetResponse))
153
169
 
154
170
  self.assertTrue(service.has_coverage())
171
+
172
+ def test_mixed_technology_mobile(self):
173
+ """
174
+ Check technology from a mixted technology mobile ticket.
175
+ """
176
+ OTRSTicketGetResponse["DynamicField"] = [
177
+ {"Name": "TecDelServei", "Value": "Mixta"},
178
+ {"Name": "tipusServeiMobil", "Value": "Portabilitat"},
179
+ ]
180
+
181
+ service = Service(Ticket(OTRSTicketGetResponse))
182
+
183
+ self.assertEqual(service._technology, "Mobil")
184
+ self.assertTrue(service.is_mobile())
185
+
186
+ def test_mixed_technology_fiber(self):
187
+ """
188
+ Check technology from a mixted technology fiber ticket.
189
+ """
190
+ OTRSTicketGetResponse["DynamicField"] = [
191
+ {"Name": "TecDelServei", "Value": "Mixta"},
192
+ {"Name": "tipusServeiMobil", "Value": ""},
193
+ ]
194
+
195
+ service = Service(Ticket(OTRSTicketGetResponse))
196
+
197
+ self.assertEqual(service._technology, "Fibra")
198
+ self.assertFalse(service.is_mobile())
@@ -0,0 +1,37 @@
1
+ # coding: utf-8
2
+ import unittest
3
+
4
+ from otrs_somconnexio.otrs_models.switchboard_data import SwitchboardData
5
+
6
+
7
+ class SwitchboardDataTestCase(unittest.TestCase):
8
+ def test_init(self):
9
+ switchboard_data = SwitchboardData(
10
+ order_id="1234567890",
11
+ iban="ES6621000418401234567891",
12
+ email="test@test.com",
13
+ contact_phone="666666661",
14
+ product="product",
15
+ technology="switchboard",
16
+ sales_team="Business",
17
+ type="new",
18
+ landline="999888777",
19
+ mobile_phone_number="766887778",
20
+ extension="123",
21
+ agent_name="agent1",
22
+ agent_email="agent1@company.org",
23
+ icc="123456789",
24
+ has_sim=True,
25
+ previous_owner_vat="ES12345678A",
26
+ previous_owner_name="name",
27
+ previous_owner_surname="surname",
28
+ shipment_address="address",
29
+ shipment_city="city",
30
+ shipment_zip="08001",
31
+ shipment_subdivision="ES-B",
32
+ additional_products="product1, product2",
33
+ notes="Notes",
34
+ activation_notes="More notes",
35
+ )
36
+
37
+ self.assertIsInstance(switchboard_data, SwitchboardData)
@@ -0,0 +1,197 @@
1
+ import unittest
2
+ from mock import Mock
3
+ from faker import Faker
4
+
5
+ from otrs_somconnexio.otrs_models.switchboard_dynamic_fields import (
6
+ SwitchboardDynamicFields,
7
+ )
8
+ from .common_helper import dynamic_fields_to_dct
9
+
10
+
11
+ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
12
+ def setUp(self):
13
+ faker = Faker("es_CA")
14
+
15
+ customer_data = Mock(
16
+ first_name=faker.first_name(),
17
+ name=faker.last_name(),
18
+ vat_number=faker.ssn(),
19
+ has_active_contracts=faker.boolean(),
20
+ language=faker.language_code(),
21
+ )
22
+
23
+ self.service_data = Mock(
24
+ order_id=faker.uuid4(),
25
+ iban=faker.iban(),
26
+ email=faker.email(),
27
+ contact_phone=faker.phone_number(),
28
+ product=faker.word(),
29
+ technology=faker.word(),
30
+ sales_team=faker.word(),
31
+ type=faker.word(),
32
+ landline=faker.phone_number(),
33
+ mobile_phone_number=faker.phone_number(),
34
+ icc=faker.bban(),
35
+ has_sim=faker.boolean(),
36
+ extension=faker.phone_number(),
37
+ agent_name=faker.name(),
38
+ agent_email=faker.email(),
39
+ previous_owner_vat=faker.ssn(),
40
+ previous_owner_name=faker.first_name(),
41
+ previous_owner_surname=faker.last_name(),
42
+ shipment_address=faker.street_address(),
43
+ shipment_city=faker.city(),
44
+ shipment_zip=faker.zipcode(),
45
+ shipment_subdivision=faker.state(),
46
+ additional_products="A,B,C",
47
+ confirmed_documentation=faker.boolean(),
48
+ notes=faker.text(),
49
+ activation_notes=faker.text(),
50
+ )
51
+
52
+ self.switchboard_otrs_process_id = faker.uuid4()
53
+ self.switchboard_otrs_activity_id = faker.uuid4()
54
+
55
+ self.dynamic_fields = SwitchboardDynamicFields(
56
+ self.service_data,
57
+ customer_data,
58
+ self.switchboard_otrs_process_id,
59
+ self.switchboard_otrs_activity_id,
60
+ ).all()
61
+
62
+ self.dynamic_fields_dct = dynamic_fields_to_dct(self.dynamic_fields)
63
+
64
+ def test_service_type_field(self):
65
+ self.assertEqual(
66
+ self.dynamic_fields_dct["tipusServeiCV"],
67
+ "portabilitat" if self.service_data.type == "portability" else "altaNova",
68
+ )
69
+
70
+ def test_process_id_field(self):
71
+ self.assertEqual(
72
+ self.dynamic_fields_dct["ProcessManagementProcessID"],
73
+ self.switchboard_otrs_process_id,
74
+ )
75
+
76
+ def test_activity_id_field(self):
77
+ self.assertEqual(
78
+ self.dynamic_fields_dct["ProcessManagementActivityID"],
79
+ self.switchboard_otrs_activity_id,
80
+ )
81
+
82
+ def test_CV_header_field(self):
83
+ self.assertEqual(self.dynamic_fields_dct["CVHeader"], "0")
84
+
85
+ def test_product_field(self):
86
+ self.assertEqual(
87
+ self.dynamic_fields_dct["productCV"],
88
+ self.service_data.product,
89
+ )
90
+
91
+ def test_extension_field(self):
92
+ self.assertEqual(
93
+ self.dynamic_fields_dct["extensio"],
94
+ self.service_data.extension,
95
+ )
96
+
97
+ def test_landline_field(self):
98
+ self.assertEqual(
99
+ self.dynamic_fields_dct["portaFixCV1"],
100
+ self.service_data.landline,
101
+ )
102
+
103
+ def test_phone_number_field(self):
104
+ self.assertEqual(
105
+ self.dynamic_fields_dct["liniaMobil"],
106
+ self.service_data.mobile_phone_number,
107
+ )
108
+
109
+ def test_ICC_field(self):
110
+ self.assertEqual(
111
+ self.dynamic_fields_dct["ICCSC"],
112
+ self.service_data.icc,
113
+ )
114
+
115
+ def test_has_sim_field(self):
116
+ self.assertEqual(
117
+ self.dynamic_fields_dct["SIMrebuda"],
118
+ "1" if self.service_data.has_sim else "0",
119
+ )
120
+
121
+ def test_send_sim_type_field(self):
122
+ self.assertEqual(
123
+ self.dynamic_fields_dct["tipusEnviamentSIM"],
124
+ "None",
125
+ )
126
+
127
+ def test_agent_name_field(self):
128
+ self.assertEqual(
129
+ self.dynamic_fields_dct["nomAgentCV"],
130
+ self.service_data.agent_name,
131
+ )
132
+
133
+ def test_agent_email_field(self):
134
+ self.assertEqual(
135
+ self.dynamic_fields_dct["correuAgentCV"],
136
+ self.service_data.agent_email,
137
+ )
138
+
139
+ def test_shipment_address_field(self):
140
+ self.assertEqual(
141
+ self.dynamic_fields_dct["direccioEnviament"],
142
+ self.service_data.shipment_address,
143
+ )
144
+
145
+ def test_shipment_city_field(self):
146
+ self.assertEqual(
147
+ self.dynamic_fields_dct["poblacioEnviament"],
148
+ self.service_data.shipment_city,
149
+ )
150
+
151
+ def test_shipment_zip_field(self):
152
+ self.assertEqual(
153
+ self.dynamic_fields_dct["CPenviament"],
154
+ self.service_data.shipment_zip,
155
+ )
156
+
157
+ def test_shipment_subdivision_field(self):
158
+ self.assertEqual(
159
+ self.dynamic_fields_dct["provinciaEnviament"],
160
+ self.service_data.shipment_subdivision,
161
+ )
162
+
163
+ def test_documentation(self):
164
+ self.assertEqual(
165
+ self.dynamic_fields_dct["flagDocumentacio"],
166
+ "0",
167
+ )
168
+
169
+ def test_additional_products_field(self):
170
+ self.assertEqual(
171
+ self.dynamic_fields_dct["productCVAddicional"],
172
+ self.service_data.additional_products.split(","),
173
+ )
174
+
175
+ def test_order_id_field(self):
176
+ self.assertEqual(
177
+ self.dynamic_fields_dct["IDpeticio"],
178
+ self.service_data.order_id,
179
+ )
180
+
181
+ def test_confirmed_documentation_field(self):
182
+ self.assertEqual(
183
+ self.dynamic_fields_dct["confirmarDocumentacio"],
184
+ "1" if self.service_data.confirmed_documentation else "0",
185
+ )
186
+
187
+ def test_consideracions_generals_field(self):
188
+ self.assertEqual(
189
+ self.dynamic_fields_dct["consideracionsGenerals"],
190
+ self.service_data.notes,
191
+ )
192
+
193
+ def test_activation_notes_field(self):
194
+ self.assertEqual(
195
+ self.dynamic_fields_dct["consideracionsActivacio"],
196
+ self.service_data.activation_notes,
197
+ )
@@ -0,0 +1,18 @@
1
+ # coding: utf-8
2
+ import unittest
3
+
4
+ from otrs_somconnexio.otrs_models.switchboard_header_data import SwitchboardHeaderData
5
+
6
+
7
+ class SwitchboardHeaderDataTestCase(unittest.TestCase):
8
+ def test_init(self):
9
+ sb_header_data = SwitchboardHeaderData(
10
+ order_id=123,
11
+ contact_phone="666666661",
12
+ email="test@test.com",
13
+ sales_team="residential",
14
+ technology="switchboard",
15
+ notes="Notes",
16
+ )
17
+
18
+ self.assertIsInstance(sb_header_data, SwitchboardHeaderData)
@@ -0,0 +1,119 @@
1
+ import unittest
2
+ from mock import Mock
3
+ from faker import Faker
4
+
5
+ from otrs_somconnexio.otrs_models.switchboard_header_dynamic_fields import (
6
+ SwitchboardHeaderDynamicFields,
7
+ )
8
+ from .common_helper import dynamic_fields_to_dct
9
+
10
+
11
+ class SwitchboardHeaderDynamicFieldsTestCase(unittest.TestCase):
12
+ def setUp(self):
13
+ faker = Faker("es_CA")
14
+
15
+ customer_data = Mock(
16
+ first_name=faker.first_name(),
17
+ name=faker.last_name(),
18
+ vat_number=faker.ssn(),
19
+ has_active_contracts=faker.boolean(),
20
+ language=faker.language_code(),
21
+ )
22
+
23
+ self.service_data = Mock(
24
+ notes=faker.text(),
25
+ contact_phone=faker.phone_number(),
26
+ email=faker.email(),
27
+ technology=faker.word(),
28
+ sales_team="Business",
29
+ order_id=faker.uuid4(),
30
+ )
31
+
32
+ self.switchboard_otrs_process_id = faker.uuid4()
33
+ self.switchboard_otrs_activity_id = faker.uuid4()
34
+
35
+ self.customer_data = customer_data # Guardem per als tests
36
+
37
+ self.dynamic_fields = SwitchboardHeaderDynamicFields(
38
+ self.service_data,
39
+ customer_data,
40
+ self.switchboard_otrs_process_id,
41
+ self.switchboard_otrs_activity_id,
42
+ ).all()
43
+
44
+ self.dynamic_fields_dct = dynamic_fields_to_dct(self.dynamic_fields)
45
+
46
+ def test_customer_first_name_field(self):
47
+ self.assertEqual(
48
+ self.dynamic_fields_dct["nomSoci"],
49
+ self.customer_data.first_name,
50
+ )
51
+
52
+ def test_CV_header_field(self):
53
+ self.assertEqual(self.dynamic_fields_dct["CVHeader"], "1")
54
+
55
+ def test_customer_last_name_field(self):
56
+ self.assertEqual(
57
+ self.dynamic_fields_dct["cognom1"],
58
+ self.customer_data.name,
59
+ )
60
+
61
+ def test_customer_vat_number_field(self):
62
+ self.assertEqual(
63
+ self.dynamic_fields_dct["NIFNIESoci"],
64
+ self.customer_data.vat_number,
65
+ )
66
+
67
+ def test_customer_language_field(self):
68
+ self.assertEqual(
69
+ self.dynamic_fields_dct["idioma"],
70
+ self.customer_data.language,
71
+ )
72
+
73
+ def test_customer_phone_field(self):
74
+ self.assertEqual(
75
+ self.dynamic_fields_dct["telefonContacte"],
76
+ self.service_data.contact_phone,
77
+ )
78
+
79
+ def test_mail_field(self):
80
+ self.assertEqual(
81
+ self.dynamic_fields_dct["correuElectronic"],
82
+ self.service_data.email,
83
+ )
84
+
85
+ def test_service_technology_field(self):
86
+ self.assertEqual(
87
+ self.dynamic_fields_dct["TecDelServei"],
88
+ self.service_data.technology,
89
+ )
90
+
91
+ def test_sales_team_field(self):
92
+ self.assertEqual(
93
+ self.dynamic_fields_dct["equipVendes"],
94
+ "empreses",
95
+ )
96
+
97
+ def test_order_id_field(self):
98
+ self.assertEqual(
99
+ self.dynamic_fields_dct["IDpeticio"],
100
+ self.service_data.order_id,
101
+ )
102
+
103
+ def test_switchboard_otrs_process_id_field(self):
104
+ self.assertEqual(
105
+ self.dynamic_fields_dct["ProcessManagementProcessID"],
106
+ self.switchboard_otrs_process_id,
107
+ )
108
+
109
+ def test_switchboard_otrs_activity_id_field(self):
110
+ self.assertEqual(
111
+ self.dynamic_fields_dct["ProcessManagementActivityID"],
112
+ self.switchboard_otrs_activity_id,
113
+ )
114
+
115
+ def test_notes_field(self):
116
+ self.assertEqual(
117
+ self.dynamic_fields_dct["consideracionsActivacio"],
118
+ self.service_data.notes,
119
+ )