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.
- package/dist/stand_underwriter.js +1 -1
- package/package.json +8 -2
- package/__tests__/__utils__/load_payload.js +0 -16
- package/__tests__/__utils__/payloads/ai_additional_insured_new.json +0 -90
- package/__tests__/__utils__/payloads/ai_no_change_new_payload.json +0 -103
- package/__tests__/__utils__/payloads/ai_no_change_old_payload.json +0 -764
- package/__tests__/__utils__/payloads/ai_old_payload.json +0 -707
- package/__tests__/__utils__/payloads/claims_new_policy.json +0 -117
- package/__tests__/__utils__/payloads/claims_remove_new_payload.json +0 -68
- package/__tests__/__utils__/payloads/claims_remove_socotra_policy.json +0 -785
- package/__tests__/__utils__/payloads/claims_socotra_payload.json +0 -764
- package/__tests__/__utils__/payloads/minimal_change_base.json +0 -574
- package/__tests__/__utils__/payloads/minimal_change_base2.json +0 -574
- package/__tests__/__utils__/payloads/minimal_change_resulting_socotra.json +0 -17
- package/__tests__/__utils__/payloads/minimal_change_resulting_socotra2.json +0 -27
- package/__tests__/__utils__/payloads/minimal_change_retool.json +0 -37
- package/__tests__/__utils__/payloads/minimal_change_retool2.json +0 -27
- package/__tests__/__utils__/payloads/sample_minimal_retool.json +0 -33
- package/__tests__/__utils__/payloads/sample_minimal_socotra_payload.json +0 -116
- package/__tests__/__utils__/payloads/sample_new_policy_holder.json +0 -17
- package/__tests__/__utils__/payloads/sample_new_quote.json +0 -216
- package/__tests__/__utils__/payloads/sample_new_quote_retool.json +0 -93
- package/__tests__/__utils__/payloads/sample_retool.json +0 -157
- package/__tests__/__utils__/payloads/sample_retool_converted_quote.json +0 -54
- package/__tests__/__utils__/payloads/sample_retool_socotra_subset.json +0 -163
- package/__tests__/__utils__/payloads/sample_socotra_quote.json +0 -782
- package/__tests__/__utils__/payloads/sample_socotra_with_additional_insured.json +0 -764
- package/__tests__/__utils__/payloads/sample_update_quote.json +0 -18
- package/__tests__/__utils__/payloads/versions/v1/sample_new_quote.json +0 -211
- package/__tests__/__utils__/payloads/versions/v1/sample_retool.json +0 -160
- package/__tests__/__utils__/payloads/versions/v1/sample_retool_socotra_subset.json +0 -128
- package/__tests__/__utils__/payloads/versions/v1/sample_socotra_quote.json +0 -776
- package/__tests__/__utils__/payloads/versions/v1/sample_update_quote.json +0 -18
- package/__tests__/__utils__/payloads/versions/v2/sample_new_quote.json +0 -215
- package/__tests__/__utils__/payloads/versions/v2/sample_retool.json +0 -165
- package/__tests__/__utils__/payloads/versions/v2/sample_retool_socotra_subset.json +0 -159
- package/__tests__/__utils__/payloads/versions/v2/sample_socotra_quote.json +0 -779
- package/__tests__/__utils__/payloads/versions/v2/sample_update_quote.json +0 -18
- package/__tests__/basic_knockout.test.js +0 -113
- package/__tests__/claims_history_knockout.test.js +0 -56
- package/__tests__/exterior_knockout.test.js +0 -192
- package/__tests__/helpers/index.js +0 -10
- package/__tests__/home_owner_knockouts.js +0 -260
- package/__tests__/interior_knockout.test.js +0 -321
- package/__tests__/package_version.test.js +0 -7
- package/__tests__/rate_call_knockouts.test.js +0 -347
- package/__tests__/retool_utils/socotra_group_update.test.js +0 -563
- package/__tests__/retool_utils/socotra_payload.test.js +0 -270
- package/__tests__/retool_utils/socotra_structure_helper.test.js +0 -242
- package/__tests__/retool_utils/versions/entries_v1.test.js +0 -51
- package/__tests__/retool_utils/versions/entries_v2.test.js +0 -51
- package/__tests__/underwriter.test.js +0 -169
- package/__tests__/wf_knockout.test.js +0 -124
- package/src/index.js +0 -14
- package/src/knockouts/basic_knockouts.js +0 -66
- package/src/knockouts/claims_history_knockout.js +0 -24
- package/src/knockouts/exterior_knockouts.js +0 -97
- package/src/knockouts/home_owner_knockouts.js +0 -118
- package/src/knockouts/index.js +0 -83
- package/src/knockouts/interior_knockouts.js +0 -149
- package/src/knockouts/rate_call_knockouts.js +0 -155
- package/src/knockouts/wf_knockouts.js +0 -66
- package/src/retool_to_socotra.js +0 -18
- package/src/retool_utils/socotra_entries_helper_fuctions.js +0 -0
- package/src/retool_utils/socotra_payloads.js +0 -161
- package/src/retool_utils/socotra_structure_helper.js +0 -687
- package/src/retool_utils/versions/stand_v1_entries.js +0 -167
- package/src/retool_utils/versions/stand_v2_entries.js +0 -211
- package/src/retool_utils/versions/stand_v3_entries.js +0 -274
- package/src/underwriter.js +0 -86
- 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
|
-
})
|