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
						
					
					
				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: []})
 | 
						|
    })
 | 
						|
  })
 | 
						|
})
 |