| /******************************************************************************** |
| * Copyright (c) 2015-2018 Contributors to the Eclipse Foundation |
| * |
| * See the NOTICE file(s) distributed with this work for additional |
| * information regarding copyright ownership. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| ********************************************************************************/ |
| |
| |
| import { async, TestBed, inject } from '@angular/core/testing'; |
| import { BaseRequestOptions, Http, HttpModule } from '@angular/http'; |
| import { MockBackend } from '@angular/http/testing'; |
| |
| import { ContextService, ContextAttribute, MergedContextAttribute } from './context.service'; |
| import { PropertyService } from '../core/property.service'; |
| import { HttpErrorHandler } from '../core/http-error-handler'; |
| |
| describe('ContextService', () => { |
| beforeEach(() => { |
| TestBed.configureTestingModule({ |
| imports: [HttpModule], |
| providers: [ |
| MockBackend, |
| BaseRequestOptions, |
| HttpErrorHandler, |
| { |
| provide: Http, |
| useFactory: (mockBackend, options) => { |
| return new Http(mockBackend, options); |
| }, |
| deps: [MockBackend, BaseRequestOptions] |
| }, |
| PropertyService, |
| ContextService |
| ] |
| }); |
| }); |
| |
| describe('mergeAttributes()', () => { |
| it('should merge value of one attribute', async(inject([ContextService], (contextService) => { |
| let attribute1: ContextAttribute = { |
| 'name' : 'size', |
| 'value' : '95R16', |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| } |
| let attributes = [ attribute1 ]; |
| let contextIndex = 2; |
| let resultAttributes: MergedContextAttribute[] = []; |
| |
| expect(contextService.mergeAttributes(attributes, contextIndex, resultAttributes)).toEqual( |
| [{ |
| 'name' : 'size', |
| 'value' : [undefined, undefined, '95R16'], |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| }] |
| ); |
| }))) |
| |
| it('should merge values of multiple attributes', async(inject([ContextService], (contextService) => { |
| let attribute1: ContextAttribute = { |
| 'name' : 'size', |
| 'value' : '95R16', |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| } |
| let attribute2: ContextAttribute = { |
| 'name' : 'side', |
| 'value' : 'Left', |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| } |
| |
| let attributes = [ attribute1, attribute2 ]; |
| let contextIndex = 0; |
| let resultAttributes: MergedContextAttribute[] = []; |
| |
| expect(contextService.mergeAttributes(attributes, contextIndex, resultAttributes)).toEqual( |
| [{ |
| 'name' : 'size', |
| 'value' : ['95R16'], |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| }, { |
| 'name' : 'side', |
| 'value' : ['Left'], |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| }] |
| ); |
| }))) |
| }); |
| |
| describe('mergeContextRoots()', () => { |
| it('should merge attributes values of all context components', async(inject([ContextService], (contextService) => { |
| let data = { |
| 'ordered' : { |
| 'UNITUNDERTEST' : [{ |
| 'name' : 'FL_tyre', |
| 'id' : '38', |
| 'type' : 'ContextComponent', |
| 'sourceType' : 'tyre', |
| 'sourceName' : 'MDM', |
| 'attributes' : [{ |
| 'name' : 'size', |
| 'value' : '95R16', |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| } |
| ] |
| } |
| ] |
| }, |
| 'measured' : { |
| 'UNITUNDERTEST' : [{ |
| 'name' : 'FL_tyre', |
| 'id' : '39', |
| 'type' : 'ContextComponent', |
| 'sourceType' : 'tyre', |
| 'sourceName' : 'MDM', |
| 'attributes' : [{ |
| 'name' : 'size', |
| 'value' : '95R17', |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| } |
| ] |
| }, { |
| 'name' : 'engine', |
| 'id' : '12', |
| 'type' : 'ContextComponent', |
| 'sourceType' : 'engine', |
| 'sourceName' : 'MDM', |
| 'attributes' : [{ |
| 'name' : 'cylinders', |
| 'value' : '2', |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| } |
| ] |
| } |
| ] |
| } |
| }; |
| |
| let mergedData = contextService.mergeContextRoots([data.ordered, data.measured]); |
| |
| expect(mergedData).toEqual({ |
| 'UNITUNDERTEST': [{ |
| 'name' : 'FL_tyre', |
| 'id' : '38', |
| 'type' : 'ContextComponent', |
| 'sourceType' : 'tyre', |
| 'sourceName' : 'MDM', |
| 'attributes' : [{ |
| 'name' : 'size', |
| 'value' : ['95R16', '95R17'], |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| }] |
| }, { |
| 'name' : 'engine', |
| 'id' : '12', |
| 'type' : 'ContextComponent', |
| 'sourceType' : 'engine', |
| 'sourceName' : 'MDM', |
| 'attributes' : [{ |
| 'name' : 'cylinders', |
| 'value' : [undefined, '2'], |
| 'unit' : '', |
| 'dataType' : 'STRING' |
| }] |
| }] |
| }); |
| }))); |
| }); |
| }); |