Files
paperless-ngx/src-ui/src/app/utils/ngb-date-parser-formatter.spec.ts
T
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>shamoon
b80b92a2b2 Chore(deps-dev): Bump jest-preset-angular from 16.1.1 to 16.1.2 in /src-ui in the frontend-jest-dependencies group across 1 directory (#12534)
* Chore(deps-dev): Bump jest-preset-angular

Bumps the frontend-jest-dependencies group in /src-ui with 1 update: [jest-preset-angular](https://github.com/thymikee/jest-preset-angular).


Updates `jest-preset-angular` from 16.1.1 to 16.1.2
- [Release notes](https://github.com/thymikee/jest-preset-angular/releases)
- [Changelog](https://github.com/thymikee/jest-preset-angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/thymikee/jest-preset-angular/compare/v16.1.1...v16.1.2)

---
updated-dependencies:
- dependency-name: jest-preset-angular
  dependency-version: 16.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: frontend-jest-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Circumvent setSystemTime bug

See https://github.com/sinonjs/fake-timers/issues/557

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2026-04-08 16:11:53 +00:00

96 lines
3.3 KiB
TypeScript

import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
import {
HttpTestingController,
provideHttpClientTesting,
} from '@angular/common/http/testing'
import { TestBed } from '@angular/core/testing'
import { SettingsService } from '../services/settings.service'
import { LocalizedDateParserFormatter } from './ngb-date-parser-formatter'
describe('LocalizedDateParserFormatter', () => {
let dateParserFormatter: LocalizedDateParserFormatter
let settingsService: SettingsService
let httpTestingController: HttpTestingController
beforeEach(() => {
TestBed.configureTestingModule({
imports: [],
providers: [
LocalizedDateParserFormatter,
SettingsService,
provideHttpClient(withInterceptorsFromDi()),
provideHttpClientTesting(),
],
})
dateParserFormatter = TestBed.inject(LocalizedDateParserFormatter)
settingsService = TestBed.inject(SettingsService)
httpTestingController = TestBed.inject(HttpTestingController)
})
it('should parse date to struct by locale', () => {
let val = dateParserFormatter.parse('5/4/2023')
expect(val).toEqual({ day: 4, month: 5, year: 2023 })
val = dateParserFormatter.parse('5/4/23')
expect(val.day).toEqual(4)
expect(val.month).toEqual(5)
expect(val.year).toEqual(2023)
val = dateParserFormatter.parse('05042023')
expect(val.day).toEqual(4)
expect(val.month).toEqual(5)
expect(val.year).toEqual(2023)
val = dateParserFormatter.parse('12/13')
expect(val.day).toEqual(13)
expect(val.month).toEqual(12)
expect(val.year).toEqual(new Date().getFullYear())
settingsService.setLanguage('de-de') // dd.mm.yyyy
val = dateParserFormatter.parse('04.05.2023')
expect(val).toEqual({ day: 4, month: 5, year: 2023 })
val = dateParserFormatter.parse('04052023')
expect(val).toEqual({ day: 4, month: 5, year: 2023 })
settingsService.setLanguage('tr-tr') // yyyy-mm-dd
val = dateParserFormatter.parse('2023-05-04')
expect(val).toEqual({ day: 4, month: 5, year: 2023 })
val = dateParserFormatter.parse('20230504')
expect(val).toEqual({ day: 4, month: 5, year: 2023 })
})
it('should parse date struct to string by locale', () => {
const dateStruct = {
day: 4,
month: 5,
year: 2023,
}
let dateStr = dateParserFormatter.format(dateStruct)
expect(dateStr).toEqual('05/04/2023')
settingsService.setLanguage('de-de') // dd.mm.yyyy
dateStr = dateParserFormatter.format(dateStruct)
expect(dateStr).toEqual('04.05.2023')
})
it('should handle years when current year % 100 < 50', () => {
jest.useFakeTimers()
jest.setSystemTime(new Date(2026, 5, 15).getTime())
let val = dateParserFormatter.parse('5/4/26')
expect(val).toEqual({ day: 4, month: 5, year: 2026 })
val = dateParserFormatter.parse('5/4/75')
expect(val).toEqual({ day: 4, month: 5, year: 2075 })
val = dateParserFormatter.parse('5/4/99')
expect(val).toEqual({ day: 4, month: 5, year: 1999 })
jest.useRealTimers()
})
it('should handle years when current year % 100 >= 50', () => {
jest.useFakeTimers()
jest.setSystemTime(new Date(2076, 5, 15).getTime())
const val = dateParserFormatter.parse('5/4/00')
expect(val).toEqual({ day: 4, month: 5, year: 2100 })
jest.useRealTimers()
})
})