FRE-5352 Apply P1/P2/P3 fixes from code review: severity type rename, dedup query fix, SMS phone field, test assertions
This commit is contained in:
@@ -37,7 +37,7 @@ describe('detectChanges', () => {
|
||||
};
|
||||
const result = detectChanges(baselineSnapshot, current);
|
||||
expect(result.changeType).toBe('ownership_transfer');
|
||||
expect(result.severity).toBe('major');
|
||||
expect(result.severity).toBe('critical');
|
||||
expect(result.changes.some(c => c.field === 'ownerName')).toBe(true);
|
||||
});
|
||||
|
||||
@@ -50,7 +50,7 @@ describe('detectChanges', () => {
|
||||
};
|
||||
const result = detectChanges(baselineSnapshot, current);
|
||||
expect(result.changes.some(c => c.changeType === 'deed_change')).toBe(true);
|
||||
expect(result.severity).toBe('moderate');
|
||||
expect(result.severity).toBe('warning');
|
||||
});
|
||||
|
||||
it('detects tax change', () => {
|
||||
@@ -62,7 +62,7 @@ describe('detectChanges', () => {
|
||||
};
|
||||
const result = detectChanges(baselineSnapshot, current);
|
||||
expect(result.changes.some(c => c.changeType === 'tax_change')).toBe(true);
|
||||
expect(result.severity).toBe('minor');
|
||||
expect(result.severity).toBe('info');
|
||||
});
|
||||
|
||||
it('detects lien filing when lien count increases', () => {
|
||||
@@ -74,7 +74,7 @@ describe('detectChanges', () => {
|
||||
};
|
||||
const result = detectChanges(baselineSnapshot, current);
|
||||
expect(result.changes.some(c => c.changeType === 'lien_filing')).toBe(true);
|
||||
expect(result.severity).toBe('moderate');
|
||||
expect(result.severity).toBe('warning');
|
||||
});
|
||||
|
||||
it('detects multiple changes with highest severity', () => {
|
||||
@@ -87,7 +87,7 @@ describe('detectChanges', () => {
|
||||
taxAmount: 3200,
|
||||
};
|
||||
const result = detectChanges(baselineSnapshot, current);
|
||||
expect(result.severity).toBe('major');
|
||||
expect(result.severity).toBe('critical');
|
||||
expect(result.changes.length).toBeGreaterThanOrEqual(3);
|
||||
});
|
||||
|
||||
@@ -95,7 +95,7 @@ describe('detectChanges', () => {
|
||||
const current = { ...baselineSnapshot, id: 'snap-2', capturedAt: '2026-02-01T00:00:00Z' };
|
||||
const result = detectChanges(baselineSnapshot, current);
|
||||
expect(result.changes.length).toBe(0);
|
||||
expect(result.severity).toBe('minor');
|
||||
expect(result.severity).toBe('info');
|
||||
});
|
||||
|
||||
it('detects address changes as metadata changes', () => {
|
||||
@@ -165,11 +165,11 @@ describe('detectChanges', () => {
|
||||
});
|
||||
|
||||
describe('shouldTriggerAlert', () => {
|
||||
it('triggers for major severity above default threshold', () => {
|
||||
it('triggers for critical severity above default threshold', () => {
|
||||
const result = {
|
||||
propertyId: 'prop-001',
|
||||
changeType: 'ownership_transfer' as const,
|
||||
severity: 'major' as const,
|
||||
severity: 'critical' as const,
|
||||
confidence: 0.95,
|
||||
changes: [],
|
||||
previousSnapshot: baselineSnapshot,
|
||||
@@ -179,11 +179,11 @@ describe('shouldTriggerAlert', () => {
|
||||
expect(shouldTriggerAlert(result)).toBe(true);
|
||||
});
|
||||
|
||||
it('triggers for moderate severity with high confidence', () => {
|
||||
it('triggers for warning severity with high confidence', () => {
|
||||
const result = {
|
||||
propertyId: 'prop-001',
|
||||
changeType: 'deed_change' as const,
|
||||
severity: 'moderate' as const,
|
||||
severity: 'warning' as const,
|
||||
confidence: 0.85,
|
||||
changes: [],
|
||||
previousSnapshot: baselineSnapshot,
|
||||
@@ -193,11 +193,11 @@ describe('shouldTriggerAlert', () => {
|
||||
expect(shouldTriggerAlert(result)).toBe(true);
|
||||
});
|
||||
|
||||
it('does not trigger for minor severity with default threshold', () => {
|
||||
it('does not trigger for info severity with default threshold', () => {
|
||||
const result = {
|
||||
propertyId: 'prop-001',
|
||||
changeType: 'tax_change' as const,
|
||||
severity: 'minor' as const,
|
||||
severity: 'info' as const,
|
||||
confidence: 0.85,
|
||||
changes: [],
|
||||
previousSnapshot: baselineSnapshot,
|
||||
@@ -211,7 +211,7 @@ describe('shouldTriggerAlert', () => {
|
||||
const result = {
|
||||
propertyId: 'prop-001',
|
||||
changeType: 'deed_change' as const,
|
||||
severity: 'moderate' as const,
|
||||
severity: 'warning' as const,
|
||||
confidence: 0.5,
|
||||
changes: [],
|
||||
previousSnapshot: baselineSnapshot,
|
||||
@@ -221,18 +221,18 @@ describe('shouldTriggerAlert', () => {
|
||||
expect(shouldTriggerAlert(result)).toBe(false);
|
||||
});
|
||||
|
||||
it('triggers minor when minSeverity set to minor', () => {
|
||||
it('triggers info when minSeverity set to info', () => {
|
||||
const result = {
|
||||
propertyId: 'prop-001',
|
||||
changeType: 'tax_change' as const,
|
||||
severity: 'minor' as const,
|
||||
severity: 'info' as const,
|
||||
confidence: 0.85,
|
||||
changes: [],
|
||||
previousSnapshot: baselineSnapshot,
|
||||
currentSnapshot: baselineSnapshot,
|
||||
detectedAt: new Date().toISOString(),
|
||||
};
|
||||
expect(shouldTriggerAlert(result, 'minor')).toBe(true);
|
||||
expect(shouldTriggerAlert(result, 'info')).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -241,21 +241,21 @@ describe('determineSeverity', () => {
|
||||
const changes: PropertyChange[] = [
|
||||
{ field: 'ownerName', oldValue: 'John', newValue: 'Jane', changeType: 'ownership_transfer' },
|
||||
];
|
||||
expect(determineSeverity(changes, { ownershipNameThreshold: 0.7, deedDateSensitivity: 0.9, taxAmountChangePercent: 15 })).toBe('major');
|
||||
expect(determineSeverity(changes, { ownershipNameThreshold: 0.7, deedDateSensitivity: 0.9, taxAmountChangePercent: 15 })).toBe('critical');
|
||||
});
|
||||
|
||||
it('returns moderate when only deed change', () => {
|
||||
it('returns warning when only deed change', () => {
|
||||
const changes: PropertyChange[] = [
|
||||
{ field: 'deedDate', oldValue: '2020-01-01', newValue: '2026-01-01', changeType: 'deed_change' },
|
||||
];
|
||||
expect(determineSeverity(changes, { ownershipNameThreshold: 0.7, deedDateSensitivity: 0.9, taxAmountChangePercent: 15 })).toBe('moderate');
|
||||
expect(determineSeverity(changes, { ownershipNameThreshold: 0.7, deedDateSensitivity: 0.9, taxAmountChangePercent: 15 })).toBe('warning');
|
||||
});
|
||||
|
||||
it('returns minor when only metadata changes', () => {
|
||||
it('returns info when only metadata changes', () => {
|
||||
const changes: PropertyChange[] = [
|
||||
{ field: 'propertyType', oldValue: 'residential', newValue: 'commercial', changeType: 'metadata_change' },
|
||||
];
|
||||
expect(determineSeverity(changes, { ownershipNameThreshold: 0.7, deedDateSensitivity: 0.9, taxAmountChangePercent: 15 })).toBe('minor');
|
||||
expect(determineSeverity(changes, { ownershipNameThreshold: 0.7, deedDateSensitivity: 0.9, taxAmountChangePercent: 15 })).toBe('info');
|
||||
});
|
||||
|
||||
it('respects severity overrides', () => {
|
||||
@@ -266,9 +266,9 @@ describe('determineSeverity', () => {
|
||||
ownershipNameThreshold: 0.7,
|
||||
deedDateSensitivity: 0.9,
|
||||
taxAmountChangePercent: 15,
|
||||
severityOverrides: { tax_change: 'moderate' },
|
||||
severityOverrides: { tax_change: 'warning' },
|
||||
};
|
||||
expect(determineSeverity(changes, config)).toBe('moderate');
|
||||
expect(determineSeverity(changes, config)).toBe('warning');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user