Skip to content

Commit b0109ad

Browse files
bn3tCopilot
andauthored
fix: correct order number gender logic and add null order tests (#20)
- Fix bug where order numbers were inverted for gender: males were getting even numbers and females odd numbers, should be odd for males and even for females - Add test for generating valid SSIN when order is null - Add test verifying males get odd order numbers - Add test verifying females get even order numbers * Update src/lib/SSINGeneratorHelper.test.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent af947d6 commit b0109ad

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/lib/SSINGeneratorHelper.test.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,27 @@ describe('SSIN Generator Helper', () => {
5757
expect(ssin).toBe('40000095579');
5858
expect(SSINValidatorHelper.isValid(ssin)).toBe(true);
5959
});
60+
61+
it('should generate a valid SSIN when order is null', () => {
62+
const birthDate = LocalDate.of(1985, 6, 15);
63+
const gender = Gender.MALE;
64+
const ssin = SSINGeneratorHelper.generate(birthDate, gender, null, Type.REGULAR);
65+
expect(SSINValidatorHelper.isValid(ssin)).toBe(true);
66+
});
67+
68+
it('should generate an odd order number for male when order is null', () => {
69+
const birthDate = LocalDate.of(1985, 6, 15);
70+
const gender = Gender.MALE;
71+
const ssin = SSINGeneratorHelper.generate(birthDate, gender, null, Type.REGULAR);
72+
const orderNumber = parseInt(ssin.substring(6, 9), 10);
73+
expect(orderNumber % 2).toBe(1);
74+
});
75+
76+
it('should generate an even order number for female when order is null', () => {
77+
const birthDate = LocalDate.of(1985, 6, 15);
78+
const gender = Gender.FEMALE;
79+
const ssin = SSINGeneratorHelper.generate(birthDate, gender, null, Type.REGULAR);
80+
const orderNumber = parseInt(ssin.substring(6, 9), 10);
81+
expect(orderNumber % 2).toBe(0);
82+
});
6083
});

src/lib/SSINGeneratorHelper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ export class SSINGeneratorHelper {
6060
order = Math.floor(Math.random() * 999) + 1;
6161
} else {
6262
order = 1 + Math.floor(Math.random() * 499) * 2;
63-
if (gender === Gender.MALE) {
64-
order--;
63+
if (gender === Gender.FEMALE) {
64+
order++;
6565
}
6666
}
6767
return order.toString().padStart(3, '0');

0 commit comments

Comments
 (0)