transdesk-importer-python-sdk 1.1.0__tar.gz → 1.2.0__tar.gz

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 (39) hide show
  1. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/PKG-INFO +1 -1
  2. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/pyproject.toml +1 -1
  3. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/models/internal.py +5 -0
  4. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/canonical/apolice_builder.py +1 -4
  5. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/internal/coverage_mapper.py +15 -9
  6. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk_importer_python_sdk.egg-info/PKG-INFO +1 -1
  7. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/tests/test_importer.py +3 -1
  8. transdesk_importer_python_sdk-1.2.0/tests/test_vehicle_details.py +181 -0
  9. transdesk_importer_python_sdk-1.1.0/tests/test_vehicle_details.py +0 -87
  10. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/LICENSE +0 -0
  11. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/README.md +0 -0
  12. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/setup.cfg +0 -0
  13. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/__init__.py +0 -0
  14. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/client.py +0 -0
  15. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/exporters/__init__.py +0 -0
  16. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/exporters/json_exporter.py +0 -0
  17. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/models/__init__.py +0 -0
  18. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/models/canonical.py +0 -0
  19. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/readers/__init__.py +0 -0
  20. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/readers/excel_reader.py +0 -0
  21. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/shared/__init__.py +0 -0
  22. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/shared/data_normalizer.py +0 -0
  23. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/__init__.py +0 -0
  24. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/canonical/__init__.py +0 -0
  25. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/canonical/cobertura_builder.py +0 -0
  26. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/canonical/item_classifier.py +0 -0
  27. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/internal/__init__.py +0 -0
  28. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/internal/internal_mapper.py +0 -0
  29. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/internal/rcf_parser.py +0 -0
  30. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/transformers/internal/towing_parser.py +0 -0
  31. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/validators/__init__.py +0 -0
  32. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk/importer/validators/internal_policy_validator.py +0 -0
  33. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk_importer_python_sdk.egg-info/SOURCES.txt +0 -0
  34. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk_importer_python_sdk.egg-info/dependency_links.txt +0 -0
  35. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk_importer_python_sdk.egg-info/requires.txt +0 -0
  36. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/src/transdesk_importer_python_sdk.egg-info/top_level.txt +0 -0
  37. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/tests/test_data_normalizer.py +0 -0
  38. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/tests/test_excel_reader.py +0 -0
  39. {transdesk_importer_python_sdk-1.1.0 → transdesk_importer_python_sdk-1.2.0}/tests/test_validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: transdesk-importer-python-sdk
3
- Version: 1.1.0
3
+ Version: 1.2.0
4
4
  Summary: SDK de leitura/transformacao de planilhas de apolices Transdesk para o formato interno 77seg
5
5
  Author-email: FMConsult <contato@fmconsult.com.br>
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "transdesk-importer-python-sdk"
7
- version = "1.1.0"
7
+ version = "1.2.0"
8
8
  description = "SDK de leitura/transformacao de planilhas de apolices Transdesk para o formato interno 77seg"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -118,6 +118,11 @@ class InternalItem:
118
118
  legal_assistance_value: float = 0
119
119
  legal_assistance_premium: float = 0
120
120
 
121
+ # Suporte emergencial monitorado
122
+ has_monitored_emergency_support: bool = False
123
+ monitored_emergency_support_value: float = 0
124
+ monitored_emergency_support_premium: float = 0
125
+
121
126
  # Combo
122
127
  group_name: Optional[str] = None
123
128
 
@@ -278,7 +278,6 @@ class ApoliceBuilder:
278
278
 
279
279
  def merge_complement_coverages(self, item):
280
280
  casco_extra = 0
281
- reparo_extra = 0
282
281
 
283
282
  novas = []
284
283
 
@@ -290,7 +289,7 @@ class ApoliceBuilder:
290
289
  continue
291
290
 
292
291
  if nome == "Assistência a Reparos (COMPLEMENTO)":
293
- reparo_extra += (c.valor_mensalidade or 0)
292
+ casco_extra += (c.valor_mensalidade or 0)
294
293
  continue
295
294
 
296
295
  novas.append(c)
@@ -298,7 +297,5 @@ class ApoliceBuilder:
298
297
  for c in novas:
299
298
  if c.nome == "Casco PT (VEÍCULO)":
300
299
  c.valor_mensalidade = ((c.valor_mensalidade or 0) + casco_extra)
301
- elif c.nome == "Assistência a Reparos (VEÍCULO)":
302
- c.valor_mensalidade = ((c.valor_mensalidade or 0) + reparo_extra)
303
300
 
304
301
  item.coberturas = novas
@@ -33,11 +33,9 @@ class CoverageMapper:
33
33
  elif name in (
34
34
  "Assistência a Reparos (VEÍCULO)",
35
35
  "Assistência a Reparos (R/SR)",
36
+ "Assistência a Reparos (COMPLEMENTO)",
36
37
  ):
37
- self._apply_repair(item, coverage)
38
-
39
- elif name == "Assistência a Reparos (COMPLEMENTO)":
40
- self._apply_body(item, coverage)
38
+ self._apply_casco_premium_only(item, coverage)
41
39
 
42
40
  elif name == "RCF":
43
41
  self._apply_rcf(item, coverage)
@@ -57,10 +55,14 @@ class CoverageMapper:
57
55
  elif name in (
58
56
  "Rastreador p/ Veículo",
59
57
  "Rastreador p/ Reboque",
60
- "SUPORTE EMERGENCIAL MONITORADO",
58
+ "Rastreamento",
59
+ "Rastreamento Reboque/Semirreboque",
61
60
  ):
62
61
  self._apply_tracker(item, coverage)
63
62
 
63
+ elif name == "SUPORTE EMERGENCIAL MONITORADO":
64
+ self._apply_monitored_emergency_support(item, coverage)
65
+
64
66
  elif name == "Assistência Jurídica":
65
67
  self._apply_legal_assistance(item, coverage)
66
68
 
@@ -69,10 +71,9 @@ class CoverageMapper:
69
71
  item.hull_value += (coverage.importancia_segurada or 0)
70
72
  item.hull_premium += (coverage.valor_mensalidade or 0)
71
73
 
72
- def _apply_repair(self, item, coverage):
73
- item.has_repair_assistance = True
74
- item.repair_assistance_value += (coverage.importancia_segurada or 0)
75
- item.repair_assistance_premium += (coverage.valor_mensalidade or 0)
74
+ def _apply_casco_premium_only(self, item, coverage):
75
+ item.has_casco_cir = True
76
+ item.hull_premium += (coverage.valor_mensalidade or 0)
76
77
 
77
78
  def _apply_body(self, item, coverage):
78
79
  item.body_value += (coverage.importancia_segurada or 0)
@@ -88,6 +89,11 @@ class CoverageMapper:
88
89
  item.legal_assistance_value = 1
89
90
  item.legal_assistance_premium += (coverage.valor_mensalidade or 0)
90
91
 
92
+ def _apply_monitored_emergency_support(self, item, coverage):
93
+ item.has_monitored_emergency_support = True
94
+ item.monitored_emergency_support_value = 1
95
+ item.monitored_emergency_support_premium += (coverage.valor_mensalidade or 0)
96
+
91
97
  def _apply_tracker(self, item, coverage):
92
98
  item.has_vehicle_tracker = True
93
99
  item.vehicle_tracker_premium += (coverage.valor_mensalidade or 0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: transdesk-importer-python-sdk
3
- Version: 1.1.0
3
+ Version: 1.2.0
4
4
  Summary: SDK de leitura/transformacao de planilhas de apolices Transdesk para o formato interno 77seg
5
5
  Author-email: FMConsult <contato@fmconsult.com.br>
6
6
  License: MIT License
@@ -40,7 +40,9 @@ def test_policy_structure(apolices_bytes):
40
40
  item = policy.data.items[0]
41
41
  assert item.item_number == 1
42
42
  assert item.item_type == "veiculo"
43
- assert item.hull_premium == 397.88
43
+ assert item.hull_premium == 687.12
44
+ assert item.repair_assistance_premium == 0
45
+ assert item.has_repair_assistance is False
44
46
  assert item.group_name == "COMBO II"
45
47
 
46
48
 
@@ -0,0 +1,181 @@
1
+ import pandas as pd
2
+
3
+ from transdesk.importer.transformers.canonical.apolice_builder import ApoliceBuilder
4
+ from transdesk.importer.transformers.internal.internal_mapper import InternalMapper
5
+
6
+
7
+ def _base_row(**overrides):
8
+ row = {
9
+ "COD_AGRUPADOR_APOLICE": "99",
10
+ "DIA_VCTO": "10",
11
+ "ID_UNITY": "1",
12
+ "SUB_ESTIPULANTE_CNPJ": "12345678000199",
13
+ "SUB_ESTIPULANTE_FANTASIA": "CORRETORA TESTE",
14
+ "SUB_ESTIPULANTE_RAZAO_SOCIAL": "CORRETORA TESTE LTDA",
15
+ "PESSOA": "J",
16
+ "CNPJ_CPF_CLIENTE": "98765432000188",
17
+ "NOME_FANTASIA_CLIENTE": "CLIENTE TESTE",
18
+ "RAZAO_SOCIAL_CLIENTE": "CLIENTE TESTE LTDA",
19
+ "PLACA_VEICULO": "ABC1D23",
20
+ "CHASSI": "9BWZZZ377VT004251",
21
+ "CODE_FIPE": "005541-7",
22
+ "NME_BENEFICIO": "Casco PT (VEÍCULO)",
23
+ "VALOR_MENSALIDADE": "100.00",
24
+ "IMPORTANCIA_SEGURADA": "50000",
25
+ "EMPRESA_RASTREAMENTO": "TRACKERLOG",
26
+ "CATEGORIA": "3",
27
+ "MODELO": "FH 540",
28
+ "RENAVAM": "12345678901",
29
+ "MARCA": "VOLVO",
30
+ "COR": "BRANCO",
31
+ "ANO": "2022",
32
+ "EIXOS": "3",
33
+ "CAMBIO": "AUTOMATICO",
34
+ "ALIENADO": "SIM",
35
+ }
36
+ row.update(overrides)
37
+ return row
38
+
39
+
40
+ def _build_item(rows):
41
+ df = pd.DataFrame(rows)
42
+ canonical = ApoliceBuilder().build(df)[0]
43
+ return InternalMapper().map(canonical).data.items[0]
44
+
45
+
46
+ def test_vehicle_details_mapped_from_spreadsheet_columns():
47
+ item = _build_item([_base_row()])
48
+
49
+ assert item.item_type == "veiculo"
50
+ assert item.brand_name == "VOLVO"
51
+ assert item.model_description == "FH 540"
52
+ assert item.brand == "VOLVO"
53
+ assert item.model == "FH 540"
54
+ assert item.vehicle_classification == 3
55
+ assert item.renavam == "12345678901"
56
+ assert item.color == "BRANCO"
57
+ assert item.model_year == 2022
58
+ assert item.manufacture_year == 2022
59
+ assert item.axles == 3
60
+ assert item.transmission == "AUTOMATICO"
61
+ assert item.is_alienated is True
62
+ assert item.has_vehicle_tracker is False
63
+ assert item.vehicle_tracker_company is None
64
+
65
+
66
+ def test_vehicle_tracker_company_only_when_has_tracker():
67
+ with_tracker = _build_item([
68
+ _base_row(NME_BENEFICIO="Casco PT (VEÍCULO)", VALOR_MENSALIDADE="100.00"),
69
+ _base_row(
70
+ NME_BENEFICIO="Rastreador p/ Veículo",
71
+ VALOR_MENSALIDADE="15.00",
72
+ EMPRESA_RASTREAMENTO="TRACKERLOG",
73
+ ),
74
+ ])
75
+ without_tracker = _build_item([_base_row()])
76
+
77
+ assert with_tracker.has_vehicle_tracker is True
78
+ assert with_tracker.vehicle_tracker_company == "TRACKERLOG"
79
+
80
+ assert without_tracker.has_vehicle_tracker is False
81
+ assert without_tracker.vehicle_tracker_company is None
82
+
83
+
84
+ def test_alienado_na_is_false():
85
+ item = _build_item([_base_row(ALIENADO="N/A")])
86
+
87
+ assert item.is_alienated is False
88
+
89
+
90
+ def test_rastreamento_maps_to_tracker():
91
+ item = _build_item([
92
+ _base_row(NME_BENEFICIO="Casco PT (VEÍCULO)", VALOR_MENSALIDADE="100.00"),
93
+ _base_row(
94
+ NME_BENEFICIO="Rastreamento",
95
+ VALOR_MENSALIDADE="12.50",
96
+ EMPRESA_RASTREAMENTO="TRACKERLOG",
97
+ ),
98
+ ])
99
+
100
+ assert item.has_vehicle_tracker is True
101
+ assert item.vehicle_tracker_premium == 12.50
102
+ assert item.vehicle_tracker_company == "TRACKERLOG"
103
+ assert item.has_monitored_emergency_support is False
104
+
105
+
106
+ def test_rastreamento_reboque_maps_to_tracker():
107
+ rows = [
108
+ {
109
+ **_base_row(
110
+ PLACA_VEICULO="XYZ9A99",
111
+ CODE_FIPE=None,
112
+ NME_BENEFICIO="Casco PT (R/SR)",
113
+ VALOR_MENSALIDADE="50.00",
114
+ IMPORTANCIA_SEGURADA="50000",
115
+ ),
116
+ "MARCA_REBOQUE": "RANDON",
117
+ "MODELO_REBOQUE": "SR BAU",
118
+ },
119
+ {
120
+ **_base_row(
121
+ PLACA_VEICULO="XYZ9A99",
122
+ CODE_FIPE=None,
123
+ NME_BENEFICIO="Rastreamento Reboque/Semirreboque",
124
+ VALOR_MENSALIDADE="8.00",
125
+ ),
126
+ "MARCA_REBOQUE": "RANDON",
127
+ "MODELO_REBOQUE": "SR BAU",
128
+ },
129
+ ]
130
+ item = _build_item(rows)
131
+
132
+ assert item.item_type == "reboque"
133
+ assert item.has_vehicle_tracker is True
134
+ assert item.vehicle_tracker_premium == 8.00
135
+
136
+
137
+ def test_monitored_emergency_support_isolated_from_tracker():
138
+ item = _build_item([
139
+ _base_row(NME_BENEFICIO="Casco PT (VEÍCULO)", VALOR_MENSALIDADE="100.00"),
140
+ _base_row(
141
+ NME_BENEFICIO="SUPORTE EMERGENCIAL MONITORADO",
142
+ VALOR_MENSALIDADE="13.47",
143
+ EMPRESA_RASTREAMENTO="TRACKERLOG",
144
+ ),
145
+ ])
146
+
147
+ assert item.has_monitored_emergency_support is True
148
+ assert item.monitored_emergency_support_premium == 13.47
149
+ assert item.monitored_emergency_support_value == 1
150
+ assert item.has_vehicle_tracker is False
151
+ assert item.vehicle_tracker_company is None
152
+
153
+
154
+ def test_repair_assistance_consolidates_into_hull_premium():
155
+ item = _build_item([
156
+ _base_row(
157
+ NME_BENEFICIO="Casco PT (VEÍCULO)",
158
+ VALOR_MENSALIDADE="372.24",
159
+ IMPORTANCIA_SEGURADA="308130",
160
+ ),
161
+ _base_row(
162
+ NME_BENEFICIO="Assistência a Reparos (VEÍCULO)",
163
+ VALOR_MENSALIDADE="267.38",
164
+ IMPORTANCIA_SEGURADA="308130",
165
+ ),
166
+ _base_row(
167
+ NME_BENEFICIO="Casco PT (COMPLEMENTO)",
168
+ VALOR_MENSALIDADE="25.64",
169
+ IMPORTANCIA_SEGURADA="27000",
170
+ ),
171
+ _base_row(
172
+ NME_BENEFICIO="Assistência a Reparos (COMPLEMENTO)",
173
+ VALOR_MENSALIDADE="21.86",
174
+ IMPORTANCIA_SEGURADA="27000",
175
+ ),
176
+ ])
177
+
178
+ assert item.hull_premium == 687.12
179
+ assert item.hull_value == 308130
180
+ assert item.repair_assistance_premium == 0
181
+ assert item.has_repair_assistance is False
@@ -1,87 +0,0 @@
1
- import pandas as pd
2
-
3
- from transdesk.importer.transformers.canonical.apolice_builder import ApoliceBuilder
4
- from transdesk.importer.transformers.internal.internal_mapper import InternalMapper
5
-
6
-
7
- def _base_row(**overrides):
8
- row = {
9
- "COD_AGRUPADOR_APOLICE": "99",
10
- "DIA_VCTO": "10",
11
- "ID_UNITY": "1",
12
- "SUB_ESTIPULANTE_CNPJ": "12345678000199",
13
- "SUB_ESTIPULANTE_FANTASIA": "CORRETORA TESTE",
14
- "SUB_ESTIPULANTE_RAZAO_SOCIAL": "CORRETORA TESTE LTDA",
15
- "PESSOA": "J",
16
- "CNPJ_CPF_CLIENTE": "98765432000188",
17
- "NOME_FANTASIA_CLIENTE": "CLIENTE TESTE",
18
- "RAZAO_SOCIAL_CLIENTE": "CLIENTE TESTE LTDA",
19
- "PLACA_VEICULO": "ABC1D23",
20
- "CHASSI": "9BWZZZ377VT004251",
21
- "CODE_FIPE": "005541-7",
22
- "NME_BENEFICIO": "Casco PT (VEÍCULO)",
23
- "VALOR_MENSALIDADE": "100.00",
24
- "IMPORTANCIA_SEGURADA": "50000",
25
- "EMPRESA_RASTREAMENTO": "TRACKERLOG",
26
- "CATEGORIA": "3",
27
- "MODELO": "FH 540",
28
- "RENAVAM": "12345678901",
29
- "MARCA": "VOLVO",
30
- "COR": "BRANCO",
31
- "ANO": "2022",
32
- "EIXOS": "3",
33
- "CAMBIO": "AUTOMATICO",
34
- "ALIENADO": "SIM",
35
- }
36
- row.update(overrides)
37
- return row
38
-
39
-
40
- def _build_item(rows):
41
- df = pd.DataFrame(rows)
42
- canonical = ApoliceBuilder().build(df)[0]
43
- return InternalMapper().map(canonical).data.items[0]
44
-
45
-
46
- def test_vehicle_details_mapped_from_spreadsheet_columns():
47
- item = _build_item([_base_row()])
48
-
49
- assert item.item_type == "veiculo"
50
- assert item.brand_name == "VOLVO"
51
- assert item.model_description == "FH 540"
52
- assert item.brand == "VOLVO"
53
- assert item.model == "FH 540"
54
- assert item.vehicle_classification == 3
55
- assert item.renavam == "12345678901"
56
- assert item.color == "BRANCO"
57
- assert item.model_year == 2022
58
- assert item.manufacture_year == 2022
59
- assert item.axles == 3
60
- assert item.transmission == "AUTOMATICO"
61
- assert item.is_alienated is True
62
- assert item.has_vehicle_tracker is False
63
- assert item.vehicle_tracker_company is None
64
-
65
-
66
- def test_vehicle_tracker_company_only_when_has_tracker():
67
- with_tracker = _build_item([
68
- _base_row(NME_BENEFICIO="Casco PT (VEÍCULO)", VALOR_MENSALIDADE="100.00"),
69
- _base_row(
70
- NME_BENEFICIO="Rastreador p/ Veículo",
71
- VALOR_MENSALIDADE="15.00",
72
- EMPRESA_RASTREAMENTO="TRACKERLOG",
73
- ),
74
- ])
75
- without_tracker = _build_item([_base_row()])
76
-
77
- assert with_tracker.has_vehicle_tracker is True
78
- assert with_tracker.vehicle_tracker_company == "TRACKERLOG"
79
-
80
- assert without_tracker.has_vehicle_tracker is False
81
- assert without_tracker.vehicle_tracker_company is None
82
-
83
-
84
- def test_alienado_na_is_false():
85
- item = _build_item([_base_row(ALIENADO="N/A")])
86
-
87
- assert item.is_alienated is False