From ddda52582cf0bd96ff015e7b4a1b5bf3d06c831e Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 17 Aug 2020 17:12:40 +0300 Subject: [PATCH 1/3] feat: create two utility functions that return date pipe format --- .../packages/core/src/lib/utils/date-utils.ts | 18 ++++++++++++++++++ .../packages/core/src/lib/utils/index.ts | 1 + 2 files changed, 19 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/utils/date-utils.ts diff --git a/npm/ng-packs/packages/core/src/lib/utils/date-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/date-utils.ts new file mode 100644 index 0000000000..321af986da --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/utils/date-utils.ts @@ -0,0 +1,18 @@ +import { ApplicationConfiguration } from '../models/application-configuration'; +import { ConfigStateService } from '../services'; + +export function getShortDateFormat(configStateService: ConfigStateService) { + const dateTimeFormat = configStateService.getDeep( + 'localization.currentCulture.dateTimeFormat', + ) as ApplicationConfiguration.DateTimeFormat; + + return dateTimeFormat.shortDatePattern; +} + +export function getShortDateShortTimeFormat(configStateService: ConfigStateService) { + const dateTimeFormat = configStateService.getDeep( + 'localization.currentCulture.dateTimeFormat', + ) as ApplicationConfiguration.DateTimeFormat; + + return `${dateTimeFormat.shortDatePattern} ${dateTimeFormat.shortTimePattern.replace('tt', 'a')}`; +} diff --git a/npm/ng-packs/packages/core/src/lib/utils/index.ts b/npm/ng-packs/packages/core/src/lib/utils/index.ts index 48efb760e9..87b84ef800 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/index.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/index.ts @@ -1,5 +1,6 @@ export * from './array-utils'; export * from './common-utils'; +export * from './date-utils'; export * from './environment-utils'; export * from './factory-utils'; export * from './form-utils'; From 5d1399af3b2375e571ac8f8f4143c2b9ff5e00ce Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 17 Aug 2020 17:28:42 +0300 Subject: [PATCH 2/3] test: create tests for date-utils.ts --- .../core/src/lib/tests/date-utils.spec.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts diff --git a/npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts new file mode 100644 index 0000000000..b735b5eee1 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts @@ -0,0 +1,54 @@ +import { Spectator, createComponentFactory, SpyObject } from '@ngneat/spectator/jest'; +import { Component } from '@angular/core'; +import { ConfigStateService, getShortDateFormat, getShortDateShortTimeFormat } from '@abp/ng.core'; + +const dateTimeFormat = { + calendarAlgorithmType: 'SolarCalendar', + dateSeparator: '/', + dateTimeFormatLong: 'dddd, MMMM d, yyyy', + fullDateTimePattern: 'dddd, MMMM d, yyyy h:mm:ss tt', + longTimePattern: 'h:mm:ss tt', + shortDatePattern: 'M/d/yyyy', + shortTimePattern: 'h:mm tt', +}; + +@Component({ + selector: 'abp-dummy', + template: 'dummy', +}) +class DummyComponent {} + +describe('Date Utils', () => { + let spectator: Spectator; + let config: SpyObject; + + const createComponent = createComponentFactory({ + component: DummyComponent, + mocks: [ConfigStateService], + }); + + beforeEach(() => { + spectator = createComponent(); + config = spectator.inject(ConfigStateService); + }); + + describe('#getShortDateFormat', () => { + test('should get the short date format from ConfigState and return it', () => { + const getDeepSpy = jest.spyOn(config, 'getDeep'); + getDeepSpy.mockReturnValueOnce(dateTimeFormat); + + expect(getShortDateFormat(config)).toBe('M/d/yyyy'); + expect(getDeepSpy).toHaveBeenCalledWith('localization.currentCulture.dateTimeFormat'); + }); + }); + + describe('#getShortDateShortTimeFormat', () => { + test('should get the short date time format from ConfigState and return it', () => { + const getDeepSpy = jest.spyOn(config, 'getDeep'); + getDeepSpy.mockReturnValueOnce(dateTimeFormat); + + expect(getShortDateShortTimeFormat(config)).toBe('M/d/yyyy h:mm a'); + expect(getDeepSpy).toHaveBeenCalledWith('localization.currentCulture.dateTimeFormat'); + }); + }); +}); From 76b099d1f2ba2035506b54b8276d26f03f559366 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 18 Aug 2020 11:44:39 +0300 Subject: [PATCH 3/3] test: refactor date-utils.spec --- .../core/src/lib/tests/date-utils.spec.ts | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts index b735b5eee1..2fe14b1e9b 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/date-utils.spec.ts @@ -1,5 +1,3 @@ -import { Spectator, createComponentFactory, SpyObject } from '@ngneat/spectator/jest'; -import { Component } from '@angular/core'; import { ConfigStateService, getShortDateFormat, getShortDateShortTimeFormat } from '@abp/ng.core'; const dateTimeFormat = { @@ -12,24 +10,11 @@ const dateTimeFormat = { shortTimePattern: 'h:mm tt', }; -@Component({ - selector: 'abp-dummy', - template: 'dummy', -}) -class DummyComponent {} - describe('Date Utils', () => { - let spectator: Spectator; - let config: SpyObject; - - const createComponent = createComponentFactory({ - component: DummyComponent, - mocks: [ConfigStateService], - }); + let config: ConfigStateService; beforeEach(() => { - spectator = createComponent(); - config = spectator.inject(ConfigStateService); + config = new ConfigStateService(undefined); }); describe('#getShortDateFormat', () => {