forked from InsurNiffy/niff-Stellar-shurance
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquote-simulation-cache-key.util.test.ts
More file actions
55 lines (52 loc) · 1.78 KB
/
Copy pathquote-simulation-cache-key.util.test.ts
File metadata and controls
55 lines (52 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import {
buildNormalizedQuoteCanonicalJson,
buildQuoteSimulationCacheKeyHash,
} from './quote-simulation-cache-key.util';
import {
CoverageTierEnum,
PolicyTypeEnum,
RegionTierEnum,
} from './dto/generate-premium.dto';
describe('quote-simulation-cache-key.util', () => {
it('sorts keys for stable canonical JSON', () => {
const a = buildNormalizedQuoteCanonicalJson({
policy_type: PolicyTypeEnum.Auto,
region: RegionTierEnum.Medium,
coverage_tier: CoverageTierEnum.Standard,
age: 40,
risk_score: 3,
source_account:
'GBCPNZ6S7RK5N4BX6HBXBCX7P5QNBOJZFGDWBZBXCLK5T6KHWOPTLR3I',
});
expect(a).toBe(
'{"age":40,"coverage_tier":"Standard","policy_type":"Auto","region":"Medium","risk_score":3,"source_account":"GBCPNZ6S7RK5N4BX6HBXBCX7P5QNBOJZFGDWBZBXCLK5T6KHWOPTLR3I"}',
);
});
it('same logical inputs produce same hash', () => {
const dto = {
policy_type: PolicyTypeEnum.Property,
region: RegionTierEnum.High,
coverage_tier: CoverageTierEnum.Premium,
age: 22,
risk_score: 8,
source_account: 'GBCPNZ6S7RK5N4BX6HBXBCX7P5QNBOJZFGDWBZBXCLK5T6KHWOPTLR3I',
};
const h1 = buildQuoteSimulationCacheKeyHash(dto, 'C1', 'net-a');
const h2 = buildQuoteSimulationCacheKeyHash(dto, 'C1', 'net-a');
expect(h1).toBe(h2);
expect(h1).toMatch(/^[a-f0-9]{64}$/);
});
it('different contract id changes hash', () => {
const dto = {
policy_type: PolicyTypeEnum.Health,
region: RegionTierEnum.Low,
coverage_tier: CoverageTierEnum.Basic,
age: 50,
risk_score: 2,
source_account: '',
};
const h1 = buildQuoteSimulationCacheKeyHash(dto, 'CAAA', 'net');
const h2 = buildQuoteSimulationCacheKeyHash(dto, 'CBBB', 'net');
expect(h1).not.toBe(h2);
});
});