stand_socotra_policy_transformer 3.0.11 → 3.0.13

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 (71) hide show
  1. package/dist/stand_underwriter.js +1 -1
  2. package/package.json +8 -2
  3. package/__tests__/__utils__/load_payload.js +0 -16
  4. package/__tests__/__utils__/payloads/ai_additional_insured_new.json +0 -90
  5. package/__tests__/__utils__/payloads/ai_no_change_new_payload.json +0 -103
  6. package/__tests__/__utils__/payloads/ai_no_change_old_payload.json +0 -764
  7. package/__tests__/__utils__/payloads/ai_old_payload.json +0 -707
  8. package/__tests__/__utils__/payloads/claims_new_policy.json +0 -117
  9. package/__tests__/__utils__/payloads/claims_remove_new_payload.json +0 -68
  10. package/__tests__/__utils__/payloads/claims_remove_socotra_policy.json +0 -785
  11. package/__tests__/__utils__/payloads/claims_socotra_payload.json +0 -764
  12. package/__tests__/__utils__/payloads/minimal_change_base.json +0 -574
  13. package/__tests__/__utils__/payloads/minimal_change_base2.json +0 -574
  14. package/__tests__/__utils__/payloads/minimal_change_resulting_socotra.json +0 -17
  15. package/__tests__/__utils__/payloads/minimal_change_resulting_socotra2.json +0 -27
  16. package/__tests__/__utils__/payloads/minimal_change_retool.json +0 -37
  17. package/__tests__/__utils__/payloads/minimal_change_retool2.json +0 -27
  18. package/__tests__/__utils__/payloads/sample_minimal_retool.json +0 -33
  19. package/__tests__/__utils__/payloads/sample_minimal_socotra_payload.json +0 -116
  20. package/__tests__/__utils__/payloads/sample_new_policy_holder.json +0 -17
  21. package/__tests__/__utils__/payloads/sample_new_quote.json +0 -216
  22. package/__tests__/__utils__/payloads/sample_new_quote_retool.json +0 -93
  23. package/__tests__/__utils__/payloads/sample_retool.json +0 -157
  24. package/__tests__/__utils__/payloads/sample_retool_converted_quote.json +0 -54
  25. package/__tests__/__utils__/payloads/sample_retool_socotra_subset.json +0 -163
  26. package/__tests__/__utils__/payloads/sample_socotra_quote.json +0 -782
  27. package/__tests__/__utils__/payloads/sample_socotra_with_additional_insured.json +0 -764
  28. package/__tests__/__utils__/payloads/sample_update_quote.json +0 -18
  29. package/__tests__/__utils__/payloads/versions/v1/sample_new_quote.json +0 -211
  30. package/__tests__/__utils__/payloads/versions/v1/sample_retool.json +0 -160
  31. package/__tests__/__utils__/payloads/versions/v1/sample_retool_socotra_subset.json +0 -128
  32. package/__tests__/__utils__/payloads/versions/v1/sample_socotra_quote.json +0 -776
  33. package/__tests__/__utils__/payloads/versions/v1/sample_update_quote.json +0 -18
  34. package/__tests__/__utils__/payloads/versions/v2/sample_new_quote.json +0 -215
  35. package/__tests__/__utils__/payloads/versions/v2/sample_retool.json +0 -165
  36. package/__tests__/__utils__/payloads/versions/v2/sample_retool_socotra_subset.json +0 -159
  37. package/__tests__/__utils__/payloads/versions/v2/sample_socotra_quote.json +0 -779
  38. package/__tests__/__utils__/payloads/versions/v2/sample_update_quote.json +0 -18
  39. package/__tests__/basic_knockout.test.js +0 -113
  40. package/__tests__/claims_history_knockout.test.js +0 -56
  41. package/__tests__/exterior_knockout.test.js +0 -192
  42. package/__tests__/helpers/index.js +0 -10
  43. package/__tests__/home_owner_knockouts.js +0 -260
  44. package/__tests__/interior_knockout.test.js +0 -321
  45. package/__tests__/package_version.test.js +0 -7
  46. package/__tests__/rate_call_knockouts.test.js +0 -347
  47. package/__tests__/retool_utils/socotra_group_update.test.js +0 -563
  48. package/__tests__/retool_utils/socotra_payload.test.js +0 -270
  49. package/__tests__/retool_utils/socotra_structure_helper.test.js +0 -242
  50. package/__tests__/retool_utils/versions/entries_v1.test.js +0 -51
  51. package/__tests__/retool_utils/versions/entries_v2.test.js +0 -51
  52. package/__tests__/underwriter.test.js +0 -169
  53. package/__tests__/wf_knockout.test.js +0 -124
  54. package/src/index.js +0 -14
  55. package/src/knockouts/basic_knockouts.js +0 -66
  56. package/src/knockouts/claims_history_knockout.js +0 -24
  57. package/src/knockouts/exterior_knockouts.js +0 -97
  58. package/src/knockouts/home_owner_knockouts.js +0 -118
  59. package/src/knockouts/index.js +0 -83
  60. package/src/knockouts/interior_knockouts.js +0 -149
  61. package/src/knockouts/rate_call_knockouts.js +0 -155
  62. package/src/knockouts/wf_knockouts.js +0 -66
  63. package/src/retool_to_socotra.js +0 -18
  64. package/src/retool_utils/socotra_entries_helper_fuctions.js +0 -0
  65. package/src/retool_utils/socotra_payloads.js +0 -161
  66. package/src/retool_utils/socotra_structure_helper.js +0 -687
  67. package/src/retool_utils/versions/stand_v1_entries.js +0 -167
  68. package/src/retool_utils/versions/stand_v2_entries.js +0 -211
  69. package/src/retool_utils/versions/stand_v3_entries.js +0 -274
  70. package/src/underwriter.js +0 -86
  71. package/webpack.config.js +0 -14
@@ -1,270 +0,0 @@
1
- const {load_payload} = require("../__utils__/load_payload");
2
- const { SocotraPayloadConverter } = require("../../src/retool_utils/socotra_payloads");
3
- const { entries_v3} = require("../../src/retool_utils/versions/stand_v3_entries")
4
-
5
- describe("Policy Holder Payload", () => {
6
- let converter = new SocotraPayloadConverter(entries_v3)
7
- test('fails with descriptive error if just one field is missing', () => {
8
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool.json')
9
- delete retool_payload['owner_first_name']
10
-
11
- let res = converter.policy_holder_payload(retool_payload);
12
- expect(res.payload).toEqual({});
13
- expect(res.error_message).toBe("must include the following fields [owner_first_name]")
14
- expect(res.status).toBe("error")
15
- });
16
- test('fails with descriptive error if just more than one required field is missing', () => {
17
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool.json')
18
- delete retool_payload['owner_first_name']
19
- delete retool_payload['owner_last_name']
20
-
21
- //email and phonenumber have been removed as required fields so dont include them in the message
22
- delete retool_payload['owner_email']
23
- delete retool_payload['owner_phone_number']
24
-
25
- let res = converter.policy_holder_payload(retool_payload);
26
- expect(res.payload).toEqual({});
27
- expect(res.error_message).toBe("must include the following fields [owner_first_name,owner_last_name]")
28
- expect(res.status).toBe("error")
29
- });
30
-
31
- test('succeeds if all required fields are there', () => {
32
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool.json')
33
- let res = converter.policy_holder_payload(retool_payload);
34
-
35
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/sample_new_policy_holder.json'));
36
- expect(res.error_message).toBe("")
37
- expect(res.status).toBe("success")
38
- });
39
- });
40
-
41
- describe("New Policy Payload", () => {
42
- let converter = new SocotraPayloadConverter(entries_v3)
43
- test("Happy Path works", () => {
44
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool.json')
45
- let res = converter.new_policy_payload(retool_payload, '9bdadf0c-5ce0-4ea7-8f9d-7e7d235522d0');
46
-
47
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/sample_new_quote.json'));
48
- expect(res.error_message).toBe("")
49
- expect(res.status).toBe("success")
50
- })
51
-
52
- test("Works when number set to empty string", () => {
53
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool.json')
54
- retool_payload['home_heating_update_year'] = ""
55
- let res = converter.new_policy_payload(retool_payload, '9bdadf0c-5ce0-4ea7-8f9d-7e7d235522d0');
56
-
57
- let expected_payload = load_payload('__tests__/__utils__/payloads/sample_new_quote.json')
58
- delete expected_payload['fieldValues']['home_heater_last_updated']
59
- expect(res.payload).toEqual(expected_payload);
60
- expect(res.error_message).toBe("")
61
- expect(res.status).toBe("success")
62
- })
63
-
64
- test("Works with payment schedule override", () => {
65
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool.json')
66
- retool_payload['payment_schedule'] = 'quarterly'
67
- let res = converter.new_policy_payload(retool_payload, '9bdadf0c-5ce0-4ea7-8f9d-7e7d235522d0');
68
-
69
- let socotra_quote_payload = load_payload('__tests__/__utils__/payloads/sample_new_quote.json')
70
- socotra_quote_payload['paymentScheduleName'] = 'quarterly'
71
-
72
- expect(res.payload).toEqual(socotra_quote_payload);
73
- expect(res.error_message).toBe("")
74
- expect(res.status).toBe("success")
75
- })
76
-
77
- test("Works with minimal payload with no unneeded fields", () => {
78
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_minimal_retool.json')
79
- let res = converter.new_policy_payload(retool_payload, 'f0d09c62-3ec1-4830-b4b3-17e7bed46560');
80
-
81
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/sample_minimal_socotra_payload.json'));
82
- expect(res.error_message).toBe("")
83
- expect(res.status).toBe("success")
84
- })
85
- })
86
-
87
- describe("Retool Payload", () => {
88
- let converter = new SocotraPayloadConverter(entries_v3)
89
- test('Happy path converts to retool payload', () => {
90
- let socotra_payload = load_payload('__tests__/__utils__/payloads/sample_socotra_quote.json')
91
- let res = converter.quote_to_retool_payload(socotra_payload)
92
-
93
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool_socotra_subset.json')
94
- delete retool_payload['socotra_config_version']
95
- expect(res.payload).toEqual(retool_payload);
96
- expect(res.error_message).toBe("")
97
- expect(res.status).toBe("success")
98
- })
99
- })
100
-
101
- describe("Update Socotra Quote", () => {
102
- let converter = new SocotraPayloadConverter(entries_v3)
103
- test('Happy path converts to retool payload', () => {
104
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool_socotra_subset.json')
105
- retool_payload["protection_class"] = "3"
106
- retool_payload["deadbolt"] = "No"
107
- retool_payload["coverage_b"] = 300000
108
- retool_payload["zip"] = "94655"
109
- retool_payload["payment_schedule"] = "upfront"
110
-
111
- let old_quote = load_payload('__tests__/__utils__/payloads/sample_socotra_quote.json')
112
- delete old_quote['name']
113
-
114
-
115
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
116
-
117
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/sample_update_quote.json'));
118
- expect(res.error_message).toBe("")
119
- expect(res.status).toBe("success")
120
- })
121
-
122
- test('Minimal Change Example', () => {
123
- let retool_payload = load_payload('__tests__/__utils__/payloads/minimal_change_retool.json')
124
- let old_quote = load_payload('__tests__/__utils__/payloads/minimal_change_base.json')
125
- delete old_quote['name']
126
-
127
-
128
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
129
-
130
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/minimal_change_resulting_socotra.json'));
131
- expect(res.error_message).toBe("")
132
- expect(res.status).toBe("success")
133
- })
134
-
135
- test('Minimal Change Example 2 Nulls from socotra', () => {
136
- let retool_payload = load_payload('__tests__/__utils__/payloads/minimal_change_retool2.json')
137
- let old_quote = load_payload('__tests__/__utils__/payloads/minimal_change_base2.json')
138
- delete old_quote['name']
139
-
140
-
141
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
142
-
143
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/minimal_change_resulting_socotra2.json'));
144
- expect(res.error_message).toBe("")
145
- expect(res.status).toBe("success")
146
- })
147
-
148
- test('deletes exposure if not needed', () => {
149
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool_socotra_subset.json')
150
- retool_payload["coverage_b"] = 300000
151
-
152
- let old_quote = load_payload('__tests__/__utils__/payloads/sample_socotra_quote.json')
153
-
154
-
155
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
156
-
157
-
158
- expect(res.payload).not.toHaveProperty("updateExposures")
159
- expect(res.error_message).toBe("")
160
- expect(res.status).toBe("success")
161
- })
162
-
163
- test('deletes field_values if not needed', () => {
164
- let retool_payload = load_payload('__tests__/__utils__/payloads/sample_retool_socotra_subset.json')
165
- retool_payload["deadbolt"] = "Yes"
166
-
167
- let old_quote = load_payload('__tests__/__utils__/payloads/sample_socotra_quote.json')
168
-
169
-
170
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
171
-
172
-
173
- expect(res.payload).not.toHaveProperty("fieldValues")
174
- expect(res.error_message).toBe("")
175
- expect(res.status).toBe("success")
176
- })
177
-
178
- test('works with additional insured fields', () => {
179
- let retool_payload = load_payload('__tests__/__utils__/payloads/ai_additional_insured_new.json')
180
- let old_quote = load_payload('__tests__/__utils__/payloads/ai_old_payload.json')
181
-
182
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
183
-
184
-
185
- expect(res.payload).toHaveProperty("addFieldGroups")
186
- expect(res.error_message).toBe("")
187
- expect(res.status).toBe("success")
188
- });
189
-
190
- test('works with additional insured fields no change', () => {
191
- let retool_payload = load_payload('__tests__/__utils__/payloads/ai_no_change_new_payload.json')
192
- let old_quote = load_payload('__tests__/__utils__/payloads/ai_no_change_old_payload.json')
193
-
194
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
195
-
196
-
197
- expect(res.payload).not.toHaveProperty("addFieldGroups")
198
- expect(res.payload).not.toHaveProperty("removeFieldGroups")
199
- expect(res.error_message).toBe("")
200
- expect(res.status).toBe("success")
201
- });
202
-
203
- test('works when updating claims', () => {
204
- let retool_payload = load_payload('__tests__/__utils__/payloads/claims_new_policy.json')
205
- let old_quote = load_payload('__tests__/__utils__/payloads/claims_socotra_payload.json')
206
-
207
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
208
-
209
-
210
- expect(res.payload.updateExposures[0]).toHaveProperty("addFieldGroups")
211
- expect(res.payload.updateExposures[0]).not.toHaveProperty("removeFieldGroups")
212
- expect(res.payload.updateExposures[0].fieldValues.has_any_claim_history).toBe('Yes')
213
- expect(res.error_message).toBe("")
214
- expect(res.status).toBe("success")
215
- });
216
-
217
- test('works when removing claims', () => {
218
- let retool_payload = load_payload('__tests__/__utils__/payloads/claims_remove_new_payload.json')
219
- let old_quote = load_payload('__tests__/__utils__/payloads/claims_remove_socotra_policy.json')
220
-
221
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
222
-
223
-
224
- expect(res.payload.updateExposures[0]).toHaveProperty("addFieldGroups")
225
- expect(res.payload.updateExposures[0]).toHaveProperty("removeFieldGroups")
226
- expect(res.payload.updateExposures[0].fieldValues.has_any_claim_history).toBe('Yes')
227
- expect(res.error_message).toBe("")
228
- expect(res.status).toBe("success")
229
- });
230
-
231
- test('works when removing claims', () => {
232
- let retool_payload = load_payload('__tests__/__utils__/payloads/claims_new_policy.json')
233
- let old_quote = load_payload('__tests__/__utils__/payloads/claims_socotra_payload.json')
234
-
235
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
236
-
237
-
238
- expect(res.payload.updateExposures[0]).toHaveProperty("addFieldGroups")
239
- expect(res.payload.updateExposures[0]).not.toHaveProperty("removeFieldGroups")
240
- expect(res.payload.updateExposures[0].fieldValues.has_any_claim_history).toBe('Yes')
241
- expect(res.error_message).toBe("")
242
- expect(res.status).toBe("success")
243
- });
244
-
245
- test('works with claims', () => {
246
- let retool_payload = load_payload('__tests__/__utils__/payloads/claims_new_policy.json')
247
-
248
- // Use the default converter since claims_entry is now included in entries_v3 by default
249
- let res = converter.new_policy_payload(retool_payload, 'test-policy-holder-locator')
250
-
251
- // Verify that the claims data is properly added to the exposure field groups
252
- expect(res.payload.exposures[0].fieldGroups).toBeDefined()
253
- expect(res.payload.exposures[0].fieldGroups.length).toBe(2) // Two claims in the payload
254
-
255
- // Verify the first claim
256
- expect(res.payload.exposures[0].fieldGroups[0].fieldName).toBe('claims_history')
257
- expect(res.payload.exposures[0].fieldGroups[0].fieldValues.prior_claim_type).toBe('Earth Movement')
258
- expect(res.payload.exposures[0].fieldGroups[0].fieldValues.accident_date).toBe('2025-06-24')
259
- expect(res.payload.exposures[0].fieldGroups[0].fieldValues.claim_amount).toBe(500)
260
-
261
- // Verify the second claim
262
- expect(res.payload.exposures[0].fieldGroups[1].fieldName).toBe('claims_history')
263
- expect(res.payload.exposures[0].fieldGroups[1].fieldValues.prior_claim_type).toBe('Liability')
264
- expect(res.payload.exposures[0].fieldGroups[1].fieldValues.accident_date).toBe('2020-11-12')
265
- expect(res.payload.exposures[0].fieldGroups[1].fieldValues.claim_amount).toBe(5000)
266
-
267
- expect(res.error_message).toBe("")
268
- expect(res.status).toBe("success")
269
- });
270
- })
@@ -1,242 +0,0 @@
1
- const {SocotraEntry, SocotraGroupEntry } = require("../../src/retool_utils/socotra_structure_helper");
2
- const {load_payload} = require("../__utils__/load_payload");
3
- describe("SocotraEntry", () => {
4
- test('fails with descriptive error if you pick a location that is not supported', () => {
5
- expect(() => new SocotraEntry("some id", "quote locator", "bad.location"))
6
- .toThrow('Unsupported Socotra Location: bad.location');
7
- });
8
-
9
- test('happy path works', () => {
10
- let se = new SocotraEntry("some id", "field_name", "policy.fields")
11
- expect(se.retool_id).toEqual("some id")
12
- expect(se.socotra_id).toEqual("field_name")
13
- expect(se.socotra_location).toEqual("policy.fields")
14
- expect(se.to_retool_func(5)).toEqual(5)
15
- expect(se.to_scotra_func(5)).toEqual(5)
16
- });
17
- });
18
-
19
- describe("socotra_create_policy_template", () => {
20
- test('gives back a payload with the required attributes empty', () => {
21
- let template = SocotraEntry.socotra_create_policy_template('some policy_holder_locator')
22
- expect(template.policyholderLocator).toEqual("some policy_holder_locator")
23
- expect(template.fieldValues).toEqual({})
24
- expect(template.fieldGroups).toEqual([])
25
- expect(template.exposures[0].exposureName).toEqual("dwelling")
26
- expect(template.exposures[0].fieldGroups).toEqual([])
27
- expect(template.exposures[0].fieldValues).toEqual({})
28
- })
29
- })
30
-
31
- describe("socotra_create_response", () => {
32
- test('works for policy values', () => {
33
- let template = SocotraEntry.socotra_create_policy_template("locator")
34
- let retool_payload = {"some_id": 42}
35
- let se = new SocotraEntry("some_id", "example_field", "policy.fields")
36
-
37
- se.socotra_create_response(retool_payload, template)
38
- expect(template.fieldValues.example_field).toEqual(retool_payload["some_id"])
39
- });
40
-
41
- test('works for exposure_values', () => {
42
- let template = SocotraEntry.socotra_create_policy_template("locator")
43
- let retool_payload = {"some_id": 42}
44
- let se = new SocotraEntry("some_id", "example_field", "exposure.dwelling.fields")
45
-
46
- se.socotra_create_response(retool_payload, template)
47
- expect(template.exposures[0].fieldValues.example_field).toEqual(retool_payload["some_id"])
48
- });
49
-
50
- test('works for the effective_date', () => {
51
- let template = SocotraEntry.socotra_create_policy_template("locator")
52
- let retool_payload = {"start_date": "2024-01-01"}
53
- let se = new SocotraEntry("start_date", "startTimestamp", "effective_date")
54
-
55
- se.socotra_create_response(retool_payload, template)
56
- expect(template.policyStartTimestamp).toEqual(1704096000000)
57
- expect(template.policyEndTimestamp).toEqual(1735718400000)
58
- });
59
-
60
- test('works for DST', () => {
61
- let template = SocotraEntry.socotra_create_policy_template("locator")
62
- let retool_payload = {"start_date": "2024-05-01"}
63
- let se = new SocotraEntry("start_date", "startTimestamp", "effective_date")
64
-
65
- se.socotra_create_response(retool_payload, template)
66
- expect(template.policyStartTimestamp).toEqual(1714546800000)
67
- expect(template.policyEndTimestamp).toEqual(1746082800000)
68
- });
69
-
70
- test('applies transformation if one is given', () => {
71
- let template = SocotraEntry.socotra_create_policy_template("locator")
72
- let retool_payload = {"some_id": 42}
73
- let se = new SocotraEntry("some_id", "example_field", "exposure.dwelling.fields", undefined,(x) => x+1)
74
-
75
- se.socotra_create_response(retool_payload, template)
76
- expect(template.exposures[0].fieldValues.example_field).toEqual(retool_payload["some_id"] + 1)
77
- });
78
- });
79
- describe("socotra_create_quote from other quote", () => {
80
- test('adds selected values to the right place', () => {
81
- let template = SocotraEntry.socotra_create_update_template("exposure_locator")
82
- let retool_payload = {"some_policy_id": 42, "some_exposure_field": 43}
83
- let se = new SocotraEntry("some_policy_id", "example_field", "policy.fields")
84
- let se1 = new SocotraEntry("some_exposure_field", "example_field1", "exposure.dwelling.fields")
85
-
86
- se.socotra_update(retool_payload, template)
87
- se1.socotra_update(retool_payload, template)
88
- expect(template.fieldValues.example_field).toEqual(retool_payload["some_policy_id"])
89
- expect(template.updateExposures[0].fieldValues.example_field1).toEqual(retool_payload["some_exposure_field"])
90
- });
91
-
92
- test('works for effective_date', () => {
93
- let template = SocotraEntry.socotra_create_update_template("exposure_locator")
94
- let retool_payload = {"some_policy_id": 42, "some_exposure_field": 43, "start_date": "2024-01-01"}
95
- let se = new SocotraEntry("start_date", "startTimestamp", "effective_date")
96
-
97
- se.socotra_update(retool_payload, template)
98
- expect(template.policyStartTimestamp).toEqual(1704096000000)
99
- expect(template.policyEndTimestamp).toEqual(1735718400000)
100
- });
101
- });
102
-
103
- describe("retool_response", () => {
104
- test('works for policy values', () => {
105
- let template = {}
106
- let socotra_payload = load_payload('__tests__/__utils__/payloads/sample_socotra_quote.json')
107
- let se = new SocotraEntry("some_id", "gre_wf_score", "policy.fields")
108
-
109
- se.retool_response(socotra_payload, template)
110
- expect(template.some_id).toEqual("2.38")
111
- });
112
-
113
- test('works for exposure_values', () => {
114
- let template = {}
115
- let socotra_payload = load_payload('__tests__/__utils__/payloads/sample_socotra_quote.json')
116
- let se = new SocotraEntry("some_id", "protection_class", "exposure.dwelling.fields")
117
-
118
- se.retool_response(socotra_payload, template)
119
- expect(template.some_id).toEqual("2")
120
- });
121
- test('works for effective_date', () => {
122
- let template = {}
123
- let socotra_payload = load_payload('__tests__/__utils__/payloads/sample_socotra_quote.json')
124
- let se = new SocotraEntry("start_date", "startTimestamp", "effective_date")
125
-
126
- se.retool_response(socotra_payload, template)
127
- expect(template.start_date).toEqual("2024-09-06")
128
- });
129
-
130
- // test('applies transformation if one is given', () => {
131
- // let template = SocotraEntry.socotra_create_policy_template("locator")
132
- // let retool_payload = {"some_id": 42}
133
- // let se = new SocotraEntry("some_id", "example_field", "exposure.dwelling.fields", (x) => x+1)
134
- //
135
- // se.retool_response(retool_payload, template)
136
- // expect(template.exposures[0].fieldValues.example_field).toEqual(retool_payload["some_id"] + 1)
137
- // });
138
- });
139
-
140
- describe("socotraGroupEntry", () => {
141
- // Define schemas at the test suite level
142
- let socotra_schema;
143
- let retool_schema;
144
- let sge;
145
-
146
- beforeEach(() => {
147
- // Initialize fresh instances before each test to prevent cross-contamination
148
- socotra_schema = {
149
- type: ":type",
150
- name: ":name",
151
- street_address: ":street_address",
152
- street_address2: ":street_address2",
153
- city: ":city",
154
- state: ":state",
155
- zip: ":zip",
156
- description: ":description",
157
- loan_number: ":loan_number"
158
- };
159
-
160
- retool_schema = {
161
- zip: ":zip",
162
- street_address: ":street_address",
163
- loan_number: ":loan_number",
164
- city: ":city",
165
- street_address2: ":street_address2",
166
- state: ":state",
167
- type: ":type"
168
- };
169
-
170
- sge = new SocotraGroupEntry("additional_insured_data.additionalInterest", "additional_insured", "policy.fields.group", socotra_schema, retool_schema);
171
- });
172
-
173
- test('To Socotra works as expected with group entities', () => {
174
- // Test constructor
175
- expect(sge instanceof SocotraEntry).toBe(true);
176
-
177
- // Test socotra_create_response
178
- let template = SocotraEntry.socotra_create_policy_template("locator");
179
- let retool_payload = {additional_insured_data: {"additionalInterest":[{"zip":"94104","commercial_exposure":"No","street_address":"548 Market Street","loan_number":"1231312","city":"San Francisco","entity_details":"Estate Planning","street_address2":"PMB 70879","state":"California","type":"Mortgagee"},{"zip":"94104","commercial_exposure":"No","street_address":"548 Market Street","loan_number":"123122","city":"San Francisco","entity_details":"Liability Protection","street_address2":"PMB 70879","state":"California","type":"LLC Name"}]}};
180
- sge.socotra_create_response(retool_payload, template);
181
- expect(template.fieldGroups).toEqual([{fieldName: "additional_insured", fieldValues:{
182
- type: "Mortgagee",
183
- street_address: "548 Market Street",
184
- street_address2: "PMB 70879",
185
- city: "San Francisco",
186
- state: "California",
187
- zip: "94104",
188
- loan_number: "1231312"
189
- }},{fieldName: "additional_insured", fieldValues: {
190
- type: "LLC Name",
191
- street_address: "548 Market Street",
192
- street_address2: "PMB 70879",
193
- city: "San Francisco",
194
- state: "California",
195
- zip: "94104",
196
- loan_number: "123122"
197
- }}]);
198
- });
199
-
200
- test('From Socotra to Retool works as expected with group entities', () => {
201
- // Test retool_response
202
- let socotra_payload = load_payload('__tests__/__utils__/payloads/sample_socotra_with_additional_insured.json');
203
- let retool_response = {};
204
-
205
- sge.retool_response(socotra_payload, retool_response);
206
-
207
- // Verify the transformation result
208
- expect(retool_response).toHaveProperty('additional_insured_data');
209
- expect(retool_response.additional_insured_data).toHaveProperty('additionalInterest');
210
- expect(Array.isArray(retool_response.additional_insured_data.additionalInterest)).toBe(true);
211
- expect(retool_response.additional_insured_data.additionalInterest.length).toBe(2);
212
-
213
- // Check the first additional insured (Mortgagee)
214
- const mortgagee = retool_response.additional_insured_data.additionalInterest.find(item => item.type === 'Mortgagee');
215
- expect(mortgagee).toBeDefined();
216
- expect(mortgagee.type).toBe("Mortgagee");
217
- expect(mortgagee.street_address).toBe("548 Market Street");
218
- // Check street_address2 with flexible assertions to handle non-breaking spaces
219
- expect(mortgagee).toHaveProperty('street_address2');
220
- expect(mortgagee.street_address2).toContain('PMB');
221
- expect(mortgagee.street_address2).toContain('70879');
222
- expect(mortgagee.city).toBe("San Francisco");
223
- expect(mortgagee.state).toBe("California");
224
- expect(mortgagee.zip).toBe("94104");
225
- expect(mortgagee.loan_number).toBe("8200867399");
226
- // Check that socotra_field_locator is included
227
- expect(mortgagee).toHaveProperty('socotra_field_locator');
228
- expect(mortgagee.socotra_field_locator).toBe("5d8667b8-88b8-4664-a6b1-aab5e44dc83e");
229
-
230
- // Check the second additional insured (LLC as Additional Insured)
231
- const llc = retool_response.additional_insured_data.additionalInterest.find(item => item.type === 'LLC as Additional Insured');
232
- expect(llc).toBeDefined();
233
- expect(llc.type).toBe("LLC as Additional Insured");
234
- expect(llc.street_address).toBe("3430 NW 62nd st");
235
- expect(llc.city).toBe("Seattle");
236
- expect(llc.state).toBe("WA");
237
- expect(llc.zip).toBe("98107");
238
- // Check that socotra_field_locator is included
239
- expect(llc).toHaveProperty('socotra_field_locator');
240
- expect(llc.socotra_field_locator).toBe("86bffa58-69a7-4246-92f0-707ac276d0e3");
241
- });
242
- });
@@ -1,51 +0,0 @@
1
- const {SocotraPayloadConverter} = require("../../../src/retool_utils/socotra_payloads");
2
- const {entries_v1} = require("../../../src/retool_utils/versions/stand_v1_entries");
3
- const {load_payload} = require("../../__utils__/load_payload");
4
- const {entries_v2} = require("../../../src/retool_utils/versions/stand_v2_entries");
5
- describe("New Policy Payload V1", () => {
6
- let converter = new SocotraPayloadConverter(entries_v1)
7
- test("Happy Path works", () => {
8
- let retool_payload = load_payload('__tests__/__utils__/payloads/versions/v1/sample_retool.json')
9
- let res = converter.new_policy_payload(retool_payload, '9bdadf0c-5ce0-4ea7-8f9d-7e7d235522d0');
10
-
11
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/versions/v1/sample_new_quote.json'));
12
- expect(res.error_message).toBe("")
13
- expect(res.status).toBe("success")
14
- })
15
- });
16
-
17
- describe("Retool Payload V1", () => {
18
- let converter = new SocotraPayloadConverter(entries_v1)
19
- test('Happy path converts to retool payload', () => {
20
- let socotra_payload = load_payload('__tests__/__utils__/payloads/versions/v1/sample_socotra_quote.json')
21
- let res = converter.quote_to_retool_payload(socotra_payload)
22
-
23
- let retool_payload = load_payload('__tests__/__utils__/payloads/versions/v1/sample_retool_socotra_subset.json')
24
- delete retool_payload['socotra_config_version']
25
- expect(res.payload).toEqual(retool_payload);
26
- expect(res.error_message).toBe("")
27
- expect(res.status).toBe("success")
28
- })
29
- })
30
-
31
- describe("Update Socotra Quote", () => {
32
- let converter = new SocotraPayloadConverter(entries_v2)
33
- test('Happy path converts to retool payload', () => {
34
- let retool_payload = load_payload('__tests__/__utils__/payloads/versions/v1/sample_retool_socotra_subset.json')
35
- retool_payload["protection_class"] = "3"
36
- retool_payload["deadbolt"] = "No"
37
- retool_payload["coverage_b"] = 300000
38
- retool_payload["zip"] = "94655"
39
- retool_payload["payment_schedule"] = "upfront"
40
-
41
- let old_quote = load_payload('__tests__/__utils__/payloads/versions/v1/sample_socotra_quote.json')
42
- delete old_quote['name']
43
-
44
-
45
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
46
-
47
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/versions/v1/sample_update_quote.json'));
48
- expect(res.error_message).toBe("")
49
- expect(res.status).toBe("success")
50
- })
51
- })
@@ -1,51 +0,0 @@
1
- const {SocotraPayloadConverter} = require("../../../src/retool_utils/socotra_payloads");
2
- const {entries_v2} = require("../../../src/retool_utils/versions/stand_v2_entries");
3
- const {load_payload} = require("../../__utils__/load_payload");
4
-
5
- describe("New Policy Payload V2", () => {
6
- let converter = new SocotraPayloadConverter(entries_v2)
7
- test("Happy Path works", () => {
8
- let retool_payload = load_payload('__tests__/__utils__/payloads/versions/v2/sample_retool.json')
9
- let res = converter.new_policy_payload(retool_payload, '9bdadf0c-5ce0-4ea7-8f9d-7e7d235522d0');
10
-
11
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/versions/v2/sample_new_quote.json'));
12
- expect(res.error_message).toBe("")
13
- expect(res.status).toBe("success")
14
- })
15
- });
16
-
17
- describe("Retool Payload v2", () => {
18
- let converter = new SocotraPayloadConverter(entries_v2)
19
- test('Happy path converts to retool payload', () => {
20
- let socotra_payload = load_payload('__tests__/__utils__/payloads/versions/v2/sample_socotra_quote.json')
21
- let res = converter.quote_to_retool_payload(socotra_payload)
22
-
23
- let retool_payload = load_payload('__tests__/__utils__/payloads/versions/v2/sample_retool_socotra_subset.json')
24
- delete retool_payload['socotra_config_version']
25
- expect(res.payload).toEqual(retool_payload);
26
- expect(res.error_message).toBe("")
27
- expect(res.status).toBe("success")
28
- })
29
- })
30
-
31
- describe("Update Socotra Quote", () => {
32
- let converter = new SocotraPayloadConverter(entries_v2)
33
- test('Happy path converts to retool payload', () => {
34
- let retool_payload = load_payload('__tests__/__utils__/payloads/versions/v2/sample_retool_socotra_subset.json')
35
- retool_payload["protection_class"] = "3"
36
- retool_payload["deadbolt"] = "No"
37
- retool_payload["coverage_b"] = 300000
38
- retool_payload["zip"] = "94655"
39
- retool_payload["payment_schedule"] = "upfront"
40
-
41
- let old_quote = load_payload('__tests__/__utils__/payloads/versions/v2/sample_socotra_quote.json')
42
- delete old_quote['name']
43
-
44
-
45
- let res = converter.retool_to_quote_updated(retool_payload, old_quote)
46
-
47
- expect(res.payload).toEqual(load_payload('__tests__/__utils__/payloads/versions/v2/sample_update_quote.json'));
48
- expect(res.error_message).toBe("")
49
- expect(res.status).toBe("success")
50
- })
51
- })