summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/components/model-information
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/src/app/shared/components/model-information')
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts23
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.html4
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts32
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts16
-rw-r--r--vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts12
5 files changed, 78 insertions, 9 deletions
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts
index fea4c44c7..9401aca05 100644
--- a/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.component.ts
@@ -1,5 +1,6 @@
import {Component, Input} from '@angular/core';
-import * as _ from 'lodash';
+import {ModelInformationService} from "./model-information.service";
+
@Component({
selector: 'model-information',
@@ -8,17 +9,21 @@ import * as _ from 'lodash';
})
export class ModelInformationComponent {
- private _modelInformationItems: Array<ModelInformationItem>;
+ constructor(private _modelInformationService : ModelInformationService){}
+
+ private _modelInformationItems: ModelInformationItem[];
+
+ @Input() itemClass: string = 'item'; //default class for item is "item"
- get modelInformationItems(): Array<ModelInformationItem> {
+ get modelInformationItems(): ModelInformationItem[] {
return this._modelInformationItems;
}
@Input()
- set modelInformationItems(_modelInformationItems: Array<ModelInformationItem>) {
+ set modelInformationItems(_modelInformationItems: ModelInformationItem[]) {
if (_modelInformationItems) {
- this._modelInformationItems = _modelInformationItems.filter(x => x.mandatory || (!_.isEmpty(x.values) && !_.isEmpty(x.values[0])));
+ this._modelInformationItems = this._modelInformationService.filterModelItems(_modelInformationItems);
}
}
}
@@ -27,11 +32,11 @@ export class ModelInformationComponent {
export class ModelInformationItem {
label: string;
testsId: string;
- values: Array<string>;
+ values: string[];
toolTipText: string;
mandatory: boolean;
- constructor(label: string, testsId: string, values: Array<any>, toolTipText: string = "", mandatory: boolean = false,nested:boolean=false) {
+ constructor(label: string, testsId: string, values: any[], toolTipText: string = "", mandatory: boolean = false) {
this.label = label;
this.testsId = testsId;
this.values = values;
@@ -39,4 +44,8 @@ export class ModelInformationItem {
this.mandatory = mandatory;
}
+ static createInstance(label: string, value: any):ModelInformationItem {
+ return new ModelInformationItem(label, label, [value]);
+ }
+
}
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.html b/vid-webpack-master/src/app/shared/components/model-information/model-information.html
index 456dfdee4..78548b035 100644
--- a/vid-webpack-master/src/app/shared/components/model-information/model-information.html
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.html
@@ -1,12 +1,12 @@
<div id="model-information">
- <div *ngFor="let item of modelInformationItems" class="item" attr.data-tests-id="model-item-{{item.label}}">
+ <div *ngFor="let item of modelInformationItems" ngClass={{itemClass}} attr.data-tests-id="model-item-{{item.label}}">
<tooltip-content #a>
<span> {{item.toolTipText}}</span>
</tooltip-content>
<div class="wrapper" [tooltip]="a" [tooltipDisabled]="!item.toolTipText" tooltipPlacement="top" [tooltipAnimation]="false">
<label attr.data-tests-id="model-item-label-{{item.testsId}}">{{item.label}}</label>
- <div *ngFor="let value of item.values" attr.data-tests-id="model-item-value-{{item.testsId}}">{{value}}</div>
+ <div *ngFor="let value of item.values" class="model-item-value" attr.data-tests-id="model-item-value-{{item.testsId}}">{{value}}</div>
</div>
</div>
</div>
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts
new file mode 100644
index 000000000..418493f2b
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.spec.ts
@@ -0,0 +1,32 @@
+import {ModelInformationService} from "./model-information.service";
+import {ModelInformationItem} from "./model-information.component";
+
+describe('ModelInformationService', () => {
+ let underTest:ModelInformationService;
+
+ beforeEach(() => {
+ underTest = new ModelInformationService();
+ });
+
+ test('when call to filterModelItems then items with empty values are filtered', () =>{
+ expect(underTest.filterModelItems([
+ ModelInformationItem.createInstance("emptyValue", ""),
+ ModelInformationItem.createInstance("nullValue", null),
+ ModelInformationItem.createInstance("undefinedValue", undefined),
+ ModelInformationItem.createInstance("spacesValue", " "),
+ new ModelInformationItem("emptyArray", "id", [], "c", false)
+ ])).toHaveLength(0);
+ });
+
+ test('when call to filterModelItems then mandatory items with empty values are not filtered', () =>{
+ const mandatoryItem:ModelInformationItem = new ModelInformationItem("a", "b", [""], "c", true);
+ expect(underTest.filterModelItems([mandatoryItem])).toEqual([mandatoryItem]);
+ });
+
+ test('when call to filterModelItems then items with values are not filtered', () =>{
+ expect(underTest.filterModelItems([
+ ModelInformationItem.createInstance("withString", "a"),
+ ModelInformationItem.createInstance("withNumber", 1),
+ ])).toHaveLength(2);
+ });
+});
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts
new file mode 100644
index 000000000..7c0a96b01
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.service.ts
@@ -0,0 +1,16 @@
+import {Injectable} from "@angular/core";
+import * as _ from 'lodash';
+import {ModelInformationItem} from "./model-information.component";
+
+@Injectable()
+export class ModelInformationService {
+
+ filterModelItems(_modelInformationItems: ModelInformationItem[]) {
+ return _modelInformationItems.filter(x => x.mandatory || (
+ !_.isEmpty(x.values)
+ && !_.isNil(x.values[0])
+ && x.values[0].toString().trim()!=""
+ ));
+ }
+}
+
diff --git a/vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts b/vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts
new file mode 100644
index 000000000..cdba11f59
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/model-information/model-information.spec.ts
@@ -0,0 +1,12 @@
+import {ModelInformationItem} from "./model-information.component";
+
+describe('ModelInformationItem', () => {
+ test('when use createInstance, values initialized as expected', () =>{
+ const modelInformationItem:ModelInformationItem = ModelInformationItem.createInstance("aStr", 4);
+ expect(modelInformationItem.label).toEqual("aStr");
+ expect(modelInformationItem.testsId).toEqual("aStr");
+ expect(modelInformationItem.values).toEqual([4]);
+ expect(modelInformationItem.mandatory).toBeFalsy();
+ expect(modelInformationItem.toolTipText).toEqual("");
+ });
+});