All checks were successful
FarmMaps/FarmMapsLib/pipeline/head This commit looks good
123 lines
4.1 KiB
TypeScript
123 lines
4.1 KiB
TypeScript
import {getValidPackages, isValidPackage, PackageService} from './package.service';
|
|
import {MockStore, provideMockStore} from '@ngrx/store/testing';
|
|
import {TestBed} from '@angular/core/testing';
|
|
import * as appCommonReducer from '../reducers/app-common.reducer';
|
|
import {reducer, State} from '../reducers/app-common.reducer';
|
|
import * as appCommonActions from '../actions/app-common.actions';
|
|
import {IItem} from '../models/item';
|
|
import {IPackage} from '../models/package';
|
|
|
|
describe('PackageService', () => {
|
|
const initialState = {userPackages: {}} as State;
|
|
let serviceUnderTest: PackageService;
|
|
let items;
|
|
|
|
beforeEach(() => {
|
|
TestBed.configureTestingModule({
|
|
providers: [
|
|
provideMockStore({
|
|
initialState,
|
|
selectors: [
|
|
{
|
|
selector: appCommonReducer.SelectGetValidUserPackages,
|
|
value: {
|
|
'vnd.farmmaps.package.zoning': {
|
|
id: 'vnd.farmmaps.package.zoning',
|
|
name: 'zoning package',
|
|
dataDate: '2022-01-25T00:00:00.000000Z'
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}),
|
|
]
|
|
});
|
|
|
|
const store = TestBed.inject(MockStore);
|
|
serviceUnderTest = new PackageService(store, null, null);
|
|
|
|
items = [
|
|
{
|
|
code: '123132',
|
|
dataDate: '2021-01-25T00:00:00Z',
|
|
dataEndDate: '2021-05-25T00:00:00Z',
|
|
data: {
|
|
id: 'vnd.farmmaps.package.zoning'
|
|
}
|
|
} as IItem,
|
|
{
|
|
code: '1231325',
|
|
dataDate: '2021-01-25T00:00:00Z',
|
|
dataEndDate: null,
|
|
data: {
|
|
id: 'vnd.farmmaps.package.zoning'
|
|
}
|
|
} as IItem,
|
|
{
|
|
code: '1231325',
|
|
dataDate: '2022-01-25T00:00:00Z',
|
|
dataEndDate: '2022-05-25T00:00:00Z',
|
|
data: {
|
|
id: 'vnd.farmmaps.package.tipstar'
|
|
}
|
|
} as IItem,
|
|
{
|
|
code: '1231325',
|
|
dataDate: '2022-01-25T00:00:00Z',
|
|
dataEndDate: null,
|
|
data: {
|
|
id: 'vnd.farmmaps.package.weather'
|
|
}
|
|
} as IItem
|
|
];
|
|
});
|
|
|
|
it('Does not have a tipstar package', () => {
|
|
const hasPackage = serviceUnderTest.hasPackage('vnd.farmmaps.package.tipstar');
|
|
expect(hasPackage).toBe(false);
|
|
});
|
|
|
|
it('Does have a zoning package', () => {
|
|
const hasPackage = serviceUnderTest.hasPackage('vnd.farmmaps.package.zoning');
|
|
expect(hasPackage).toBe(true);
|
|
});
|
|
|
|
it('reducer.INITUSERPACKAGESSUCCESS alter state correctly', () => {
|
|
const action = new appCommonActions.InitUserPackagesSuccess(items);
|
|
|
|
expect(Object.keys(initialState.userPackages).length).toBe(0);
|
|
const state = reducer(initialState, action);
|
|
expect(Object.keys(state.userPackages).length).toBe(3);
|
|
expect(state.userPackages['vnd.farmmaps.package.zoning'].length).toBe(2);
|
|
expect(state.userPackages['vnd.farmmaps.package.tipstar'].length).toBe(1);
|
|
expect(state.userPackages['vnd.farmmaps.package.weather'].length).toBe(1);
|
|
});
|
|
|
|
it('to validatePackage', () => {
|
|
const action = new appCommonActions.InitUserPackagesSuccess(items);
|
|
const state = reducer(initialState, action);
|
|
|
|
expect(isValidPackage(null)).toBe(false);
|
|
expect(isValidPackage(state.userPackages['vnd.farmmaps.package.tipstar'][0])).toBe(true);
|
|
expect(isValidPackage(state.userPackages['vnd.farmmaps.package.zoning'][0])).toBe(false);
|
|
expect(isValidPackage(state.userPackages['vnd.farmmaps.package.zoning'][1])).toBe(true);
|
|
expect(isValidPackage(state.userPackages['vnd.farmmaps.package.weather'][0])).toBe(true);
|
|
});
|
|
|
|
it('to getValidPackages', () => {
|
|
const action = new appCommonActions.InitUserPackagesSuccess(items);
|
|
const state = reducer(initialState, action);
|
|
|
|
const validPackages = getValidPackages(state.userPackages);
|
|
|
|
expect(Object.keys(validPackages).length).toBe(3);
|
|
|
|
// today is 27-01-2022, so the below package is not valid
|
|
expect(validPackages['vnd.farmmaps.package.zoning']).not.toEqual({
|
|
id: 'vnd.farmmaps.package.zoning',
|
|
dataDate: '2021-01-25T00:00:00Z',
|
|
dataEndDate: '2021-05-25T00:00:00Z'
|
|
} as unknown as IPackage);
|
|
});
|
|
});
|