You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					193 lines
				
				7.9 KiB
			
		
		
			
		
	
	
					193 lines
				
				7.9 KiB
			| 
											3 years ago
										 | const createAutoCorrectedDatePipe = (isVerify()) ? | ||
|  |   require('../dist/createAutoCorrectedDatePipe.js').default : | ||
|  |   require('../src/createAutoCorrectedDatePipe.js').default | ||
|  | 
 | ||
|  | describe('createAutoCorrectedDatePipe', () => { | ||
|  |   let autoCorrectedDatePipe | ||
|  | 
 | ||
|  |   it('accepts the date format as the first parameter and returns a date pipe function', () => { | ||
|  |     autoCorrectedDatePipe = createAutoCorrectedDatePipe('mm dd yyyy') | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('completes the month if the 1st digit is bigger than 1 and returns `indexesOfPipedChars`', () => { | ||
|  |     expect(autoCorrectedDatePipe('1')).to.deep.equal({value: '1', indexesOfPipedChars: []}) | ||
|  |     expect(autoCorrectedDatePipe('2')).to.deep.equal({value: '02', indexesOfPipedChars: [0]}) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('returns false if month 1st digit is 1 and 2nd digit is bigger than 2', () => { | ||
|  |     expect(autoCorrectedDatePipe('14')).to.equal(false) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('returns false if month 1st digit is 0 and 2nd digit is also 0', () => { | ||
|  |     expect(autoCorrectedDatePipe('00')).to.equal(false) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('completes the day if the 1st digit is bigger than 3 and returns `indexesOfPipedChars`', () => { | ||
|  |     expect(autoCorrectedDatePipe('12/3')).to.deep.equal({value: '12/3', indexesOfPipedChars: []}) | ||
|  |     expect(autoCorrectedDatePipe('12/4')).to.deep.equal({value: '12/04', indexesOfPipedChars: [3]}) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('returns false if day 1st digit is 3 and 2nd digit is bigger than 1', () => { | ||
|  |     expect(autoCorrectedDatePipe('12/32')).to.equal(false) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('returns false if day 1st digit is 0 and 2nd digit is also 0', () => { | ||
|  |     expect(autoCorrectedDatePipe('12/00')).to.equal(false) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('returns unmodified partial entry if it could develop to correct date', () => { | ||
|  |     expect(autoCorrectedDatePipe('0 /  /    ')).to.deep.equal({value: '0 /  /    ', indexesOfPipedChars: []}) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('allows yy format', () => { | ||
|  |     let pipe = createAutoCorrectedDatePipe('mm/yy') | ||
|  |     expect(pipe('12/99')).to.deep.equal({value: '12/99', indexesOfPipedChars: []}) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('allows 00 for yy', () => { | ||
|  |     let pipe = createAutoCorrectedDatePipe('mm dd yy') | ||
|  |     expect(pipe('12 31 00')).to.deep.equal({value: '12 31 00', indexesOfPipedChars: []}) | ||
|  |   }) | ||
|  | 
 | ||
|  |   it('returns false for out of range day before known month', () => { | ||
|  |     const pipe = createAutoCorrectedDatePipe('dd/mm') | ||
|  |     expect(pipe('30/02')).to.equal(false, "pipe('30/02')") | ||
|  |     expect(pipe('32/01')).to.equal(false, "pipe('32/01')") | ||
|  |   }) | ||
|  |   it('returns false if month is not known and day is greater than 31', () => { | ||
|  |     const pipe = createAutoCorrectedDatePipe('dd/mm') | ||
|  |     expect(pipe('32/')).to.equal(false, "pipe('32/')") | ||
|  |   }) | ||
|  |   it('returns false if month is known and day is greater than allowed value in month', () => { | ||
|  |     let pipe = createAutoCorrectedDatePipe('mm/dd') | ||
|  |     expect(pipe('02/30')).to.equal(false, "pipe('02/30')") | ||
|  |     expect(pipe('02/31')).to.equal(false, "pipe('02/31')") | ||
|  |     expect(pipe('11/31')).to.equal(false, "pipe('11/31')") | ||
|  |     expect(pipe('01/32')).to.equal(false, "pipe('01/32')") | ||
|  |   }) | ||
|  |   describe('datetime', () => { | ||
|  |     let autoCorrectedDateTimePipe | ||
|  | 
 | ||
|  |     it('accepts the date time format as the first parameter and returns a date time pipe function', () => { | ||
|  |       autoCorrectedDateTimePipe = createAutoCorrectedDatePipe('mm dd yyyy HH MM SS') | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('completes the hours if the 1st digit is bigger than 2 and returns `indexesOfPipedChars`', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/9999 1')).to.deep.equal({value: '12/31/9999 1', indexesOfPipedChars: []}) | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/9999 2')).to.deep.equal({value: '12/31/9999 2', indexesOfPipedChars: []}) | ||
|  |       expect( | ||
|  |         autoCorrectedDateTimePipe('12/31/9999 3')) | ||
|  |           .to.deep.equal({value: '12/31/9999 03', indexesOfPipedChars: [11]} | ||
|  |       ) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if hours 1st digit is 2 and 2nd digit is bigger than 3', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/9999 24')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('completes the minutes if the 1st digit is bigger than 5 and returns `indexesOfPipedChars`', () => { | ||
|  |       expect( | ||
|  |         autoCorrectedDateTimePipe('12/31/9999 23:5')) | ||
|  |           .to.deep.equal({value: '12/31/9999 23:5', indexesOfPipedChars: []} | ||
|  |       ) | ||
|  |       expect( | ||
|  |         autoCorrectedDateTimePipe('12/31/9999 23:6')) | ||
|  |           .to.deep.equal({value: '12/31/9999 23:06', indexesOfPipedChars: [14]} | ||
|  |       ) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if minutes 1st digit is 6 and 2nd digit is 0', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/9999 23:60')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('completes the seconds if the 1st digit is bigger than 5 and returns `indexesOfPipedChars`', () => { | ||
|  |       expect( | ||
|  |         autoCorrectedDateTimePipe('12/31/9999 23:59:5')) | ||
|  |           .to.deep.equal({value: '12/31/9999 23:59:5', indexesOfPipedChars: []} | ||
|  |       ) | ||
|  |       expect( | ||
|  |         autoCorrectedDateTimePipe('12/31/9999 23:59:6')) | ||
|  |           .to.deep.equal({value: '12/31/9999 23:59:06', indexesOfPipedChars: [17]} | ||
|  |       ) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if seconds 1st digit is 6 and 2nd digit is 0', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/9999 23:59:60')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns unmodified partial entry if it could develop to correct date', () => { | ||
|  |       expect( | ||
|  |         autoCorrectedDateTimePipe('0 /  /     :  :  ')) | ||
|  |           .to.deep.equal({value: '0 /  /     :  :  ', indexesOfPipedChars: []} | ||
|  |       ) | ||
|  |     }) | ||
|  |   }) | ||
|  |   describe('createAutoCorrectDatePipe with min year', () => { | ||
|  |     let autoCorrectedDateTimePipe | ||
|  | 
 | ||
|  |     it('accepts minimum year as the second parameter and returns a date time pipe function', () => { | ||
|  |       autoCorrectedDateTimePipe = createAutoCorrectedDatePipe('mm dd yyyy', {minYear: 1999}) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 1st digit is less than 1', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/0')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 2st digit is less than 9', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/18')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 3rd digit is less than 9', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/198')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 4th digit is less than 9', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/1998')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('allows for min year', () => { | ||
|  |       let pipe = createAutoCorrectedDatePipe('mm dd yyyy', {minYear: 1999}) | ||
|  |       expect(pipe('12 31 1999')).to.deep.equal({value: '12 31 1999', indexesOfPipedChars: []}) | ||
|  |     }) | ||
|  |   }) | ||
|  | 
 | ||
|  |   describe('createAutoCorrectDatePipe with min and max year', () => { | ||
|  |     let autoCorrectedDateTimePipe | ||
|  | 
 | ||
|  |     it('accepts min and max year as the second/third parameter and returns a date time pipe function', () => { | ||
|  |       autoCorrectedDateTimePipe = createAutoCorrectedDatePipe('mm dd yyyy', {minYear: 1999, maxYear: 2020}) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 1st digit is more than 2', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/3')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 2st digit is more than 0', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/21')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 3rd digit is more than 2', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/203')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('returns false if year 4th digit is more than 0', () => { | ||
|  |       expect(autoCorrectedDateTimePipe('12/31/2021')).to.equal(false) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('allows for a year at the top side of the range', () => { | ||
|  |       let pipe = createAutoCorrectedDatePipe('mm dd yyyy', {minYear: 1990, maxYear: 2020}) | ||
|  |       expect(pipe('12 31 2020')).to.deep.equal({value: '12 31 2020', indexesOfPipedChars: []}) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('allows for a year within the range', () => { | ||
|  |       let pipe = createAutoCorrectedDatePipe('mm dd yyyy', {minYear: 1990, maxYear: 2020}) | ||
|  |       expect(pipe('12 31 2000')).to.deep.equal({value: '12 31 2000', indexesOfPipedChars: []}) | ||
|  |     }) | ||
|  | 
 | ||
|  |     it('allows for a year at the bottom side of the range', () => { | ||
|  |       let pipe = createAutoCorrectedDatePipe('mm dd yyyy', {minYear: 1990, maxYear: 2020}) | ||
|  |       expect(pipe('12 31 1990')).to.deep.equal({value: '12 31 1990', indexesOfPipedChars: []}) | ||
|  |     }) | ||
|  |   }) | ||
|  | }) |