Skip to content

Commit 03a33e7

Browse files
refactor[2020-day-02]: prep for different password validation rules
Rules provided were for old employers
1 parent be91e9e commit 03a33e7

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

2020/day-02/cleanupPasswords.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const splitRecord = (row) => {
1414
/**
1515
* Splits a password validation rule into its component parts
1616
*/
17-
const splitRule = (rule) => {
17+
const oldSplitRule = (rule) => {
1818
const splitRow = rule.split(/-| /)
1919

2020
return {
@@ -27,7 +27,7 @@ const splitRule = (rule) => {
2727
/**
2828
* Validates a password against the specified rule
2929
*/
30-
const isValidPassword = (rule, password) => {
30+
const oldIsValidPassword = (rule, password) => {
3131
// count how many times `rule.char` exists in `password`
3232
const count = (
3333
password.match(
@@ -40,15 +40,17 @@ const isValidPassword = (rule, password) => {
4040
return true
4141
}
4242

43-
const isValidRecord = (record) => {
43+
const oldIsValidRecord = (record) => {
4444
const { rule, password } = splitRecord(record)
45-
const { min, max, char } = splitRule(rule)
46-
return isValidPassword({ min, max, char }, password)
45+
const parsedRule = oldSplitRule(rule)
46+
return oldIsValidPassword(parsedRule, password)
4747
}
4848

4949
module.exports = {
50-
splitRecord,
51-
splitRule,
52-
isValidRecord,
53-
isValidPassword
50+
old: {
51+
splitRule: oldSplitRule,
52+
isValidPassword: oldIsValidPassword,
53+
isValidRecord: oldIsValidRecord
54+
},
55+
splitRecord
5456
}

2020/day-02/cleanupPasswords.test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-env mocha */
22
const { expect } = require('chai')
3-
const { splitRecord, splitRule, isValidPassword, isValidRecord } = require('./cleanupPasswords')
3+
const { splitRecord, old } = require('./cleanupPasswords')
44

55
const testData = [
66
'1-3 a: abcde',
@@ -22,7 +22,7 @@ describe('--- Day 2: Password Philosophy ---', () => {
2222
it('splits a password formatting rule into component parts', () => {
2323
testData.forEach((row, idx) => {
2424
const { rule, password } = splitRecord(row)
25-
const { min, max, char } = splitRule(rule)
25+
const { min, max, char } = old.splitRule(rule)
2626
expect(`${min}-${max} ${char}: ${password}`).to.equal(testData[idx])
2727
})
2828
})
@@ -32,22 +32,22 @@ describe('--- Day 2: Password Philosophy ---', () => {
3232
const expectedResults = [true, false, true]
3333
testData.forEach((row, idx) => {
3434
const { rule, password } = splitRecord(row)
35-
const { min, max, char } = splitRule(rule)
36-
expect(isValidPassword({ min, max, char }, password))
35+
const { min, max, char } = old.splitRule(rule)
36+
expect(old.isValidPassword({ min, max, char }, password))
3737
.to.equal(expectedResults[idx])
3838
})
3939
})
4040
it('won\'t allow more than the specified character count', () => {
4141
const badPass = 'abcabcabcabc'
42-
expect(isValidPassword({ min: 2, max: 3, char: 'a' }, badPass))
42+
expect(old.isValidPassword({ min: 2, max: 3, char: 'a' }, badPass))
4343
.to.equal(false)
4444
})
4545
})
4646
describe('isValidRecord()', () => {
4747
it('checks if a specified record contains valid rule and password', () => {
4848
const expectedResults = [true, false, true]
4949
testData.forEach((row, idx) => {
50-
expect(isValidRecord(row))
50+
expect(old.isValidRecord(row))
5151
.to.equal(expectedResults[idx])
5252
})
5353
})

0 commit comments

Comments
 (0)