more tests

This commit is contained in:
lotte
2019-12-18 14:38:17 +01:00
parent 2db42d0677
commit c480e96043
8 changed files with 200 additions and 29 deletions

View File

@@ -8,6 +8,6 @@
{{'submission.sections.describe.relationship-lookup.name-variant.notification.content' | translate: { value: value } }}
</div>
<div class="modal-footer justify-content-between">
<button type="button" class="btn btn-light" (click)="modal.close()">{{'submission.sections.describe.relationship-lookup.name-variant.notification.confirm' | translate }}</button>
<button type="button" class="btn btn-light" (click)="modal.dismiss()">{{'submission.sections.describe.relationship-lookup.name-variant.notification.decline' | translate }}</button>
<button type="button" class="btn btn-light confirm-button" (click)="modal.close()">{{'submission.sections.describe.relationship-lookup.name-variant.notification.confirm' | translate }}</button>
<button type="button" class="btn btn-light decline-button" (click)="modal.dismiss()">{{'submission.sections.describe.relationship-lookup.name-variant.notification.decline' | translate }}</button>
</div>

View File

@@ -3,16 +3,23 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NameVariantModalComponent } from './name-variant-modal.component';
import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { TranslateModule } from '@ngx-translate/core';
import { By } from '@angular/platform-browser';
describe('NameVariantModalComponent', () => {
let component: NameVariantModalComponent;
let fixture: ComponentFixture<NameVariantModalComponent>;
let debugElement;
let modal;
function init() {
modal = jasmine.createSpyObj('modal', ['close', 'dismiss']);
}
beforeEach(async(() => {
init();
TestBed.configureTestingModule({
declarations: [NameVariantModalComponent],
imports: [NgbModule.forRoot(), TranslateModule.forRoot()],
providers: [NgbActiveModal]
providers: [{ provide: NgbActiveModal, useValue: modal }]
})
.compileComponents();
}));
@@ -20,10 +27,27 @@ describe('NameVariantModalComponent', () => {
beforeEach(() => {
fixture = TestBed.createComponent(NameVariantModalComponent);
component = fixture.componentInstance;
debugElement = fixture.debugElement;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('when close button is clicked, dismiss should be called on the modal', () => {
debugElement.query(By.css('button.close')).triggerEventHandler('click', {});
expect(modal.dismiss).toHaveBeenCalled();
});
it('when confirm button is clicked, close should be called on the modal', () => {
debugElement.query(By.css('button.confirm-button')).triggerEventHandler('click', {});
expect(modal.close).toHaveBeenCalled();
});
it('when decline button is clicked, dismiss should be called on the modal', () => {
debugElement.query(By.css('button.decline-button')).triggerEventHandler('click', {});
expect(modal.dismiss).toHaveBeenCalled();
});
});

View File

@@ -0,0 +1,58 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
import { DsDynamicDisabledComponent } from './dynamic-disabled.component';
import { FormsModule } from '@angular/forms';
import { DynamicFormLayoutService, DynamicFormValidationService } from '@ng-dynamic-forms/core';
import { DynamicDisabledModel } from './dynamic-disabled.model';
import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core';
describe('DsDynamicDisabledComponent', () => {
let comp: DsDynamicDisabledComponent;
let fixture: ComponentFixture<DsDynamicDisabledComponent>;
let de: DebugElement;
let el: HTMLElement;
let model;
function init() {
model = new DynamicDisabledModel({ value: 'test', repeatable: false, metadataFields: [], submissionId: '1234', id: '1' });
}
beforeEach(async(() => {
init();
TestBed.configureTestingModule({
declarations: [DsDynamicDisabledComponent],
imports: [FormsModule, TranslateModule.forRoot()],
providers: [
{
provide: DynamicFormLayoutService,
useValue: {}
},
{
provide: DynamicFormValidationService,
useValue: {}
}
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DsDynamicDisabledComponent);
comp = fixture.componentInstance; // DsDynamicDisabledComponent test instance
de = fixture.debugElement;
el = de.nativeElement;
comp.model = model;
fixture.detectChanges();
});
it('should create', () => {
expect(comp).toBeTruthy();
});
it('should have a disabled input', () => {
const input = de.query(By.css('input'));
console.log(input.nativeElement.getAttribute('disabled'));
expect(input.nativeElement.getAttribute('disabled')).toEqual('');
});
});

View File

@@ -3,7 +3,6 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
import { DynamicFormControlComponent, DynamicFormLayoutService, DynamicFormValidationService } from '@ng-dynamic-forms/core';
import { FormGroup } from '@angular/forms';
import { DynamicDisabledModel } from './dynamic-disabled.model';
import { RelationshipTypeService } from '../../../../../../core/data/relationship-type.service';
@Component({
selector: 'ds-dynamic-disabled',
@@ -21,8 +20,7 @@ export class DsDynamicDisabledComponent extends DynamicFormControlComponent {
@Output() focus: EventEmitter<any> = new EventEmitter<any>();
constructor(protected layoutService: DynamicFormLayoutService,
protected validationService: DynamicFormValidationService,
protected relationshipTypeService: RelationshipTypeService
protected validationService: DynamicFormValidationService
) {
super(layoutService, validationService);
}

View File

@@ -3,10 +3,10 @@
[name]="'checkbox' + index"
[id]="'object' + index"
[ngModel]="selected$ | async"
(ngModelChange)="selectCheckbox($event, object)">
(ngModelChange)="selectCheckbox($event)">
<input *ngIf="!selectionConfig.repeatable" class="form-check-input" type="radio"
[name]="'radio' + index"
[id]="'object' + index"
[checked]="selected$ | async"
(click)="selectRadio(!checked, object)">
(click)="selectRadio(!checked)">
</ng-container>

View File

@@ -0,0 +1,91 @@
import { ComponentFixture, TestBed, async, tick, fakeAsync } from '@angular/core/testing';
import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
import { SelectableListService } from '../../../object-list/selectable-list/selectable-list.service';
import { SelectableListItemControlComponent } from './selectable-list-item-control.component';
import { Item } from '../../../../core/shared/item.model';
import { FormsModule } from '@angular/forms';
import { VarDirective } from '../../../utils/var.directive';
import { of as observableOf } from 'rxjs';
import { ListableObject } from '../listable-object.model';
describe('SelectableListItemControlComponent', () => {
let comp: SelectableListItemControlComponent;
let fixture: ComponentFixture<SelectableListItemControlComponent>;
let de: DebugElement;
let el: HTMLElement;
let object;
let otherObject;
let selectionConfig;
let listId;
let index;
let selectionService;
let selection: ListableObject[];
let uuid1: string;
let uuid2: string;
function init() {
uuid1 = '0beb44f8-d2ed-459a-a1e7-ffbe059089a9';
uuid2 = 'e1dc80aa-c269-4aa5-b6bd-008d98056247';
listId = 'Test List ID';
object = Object.assign(new Item(), {uuid: uuid1});
otherObject = Object.assign(new Item(), {uuid: uuid2});
selectionConfig = {repeatable: false, listId};
index = 0;
selection = [otherObject];
selectionService = jasmine.createSpyObj('selectionService', {
selectSingle: jasmine.createSpy('selectSingle'),
deselectSingle: jasmine.createSpy('deselectSingle'),
isObjectSelected: observableOf(true),
getSelectableList: observableOf({ selection })
}
);
}
beforeEach(async(() => {
init();
TestBed.configureTestingModule({
declarations: [SelectableListItemControlComponent, VarDirective],
imports: [FormsModule],
providers: [
{
provide: SelectableListService,
useValue: selectionService
}
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SelectableListItemControlComponent);
comp = fixture.componentInstance; // SelectableListItemControlComponent test instance
de = fixture.debugElement;
el = de.nativeElement;
comp.object = object;
comp.selectionConfig = selectionConfig;
comp.index = index;
fixture.detectChanges();
});
it('should call deselectSingle on the service when the object when selectCheckbox is called with value false', () => {
comp.selectCheckbox(false);
expect(selectionService.deselectSingle).toHaveBeenCalledWith(listId, object);
});
it('should call selectSingle on the service when the object when selectCheckbox is called with value false', () => {
comp.selectCheckbox(true);
expect(selectionService.selectSingle).toHaveBeenCalledWith(listId, object);
});
it('should call selectSingle on the service when the object when selectRadio is called with value true and deselect all others in the selection', () => {
comp.selectRadio(true );
expect(selectionService.deselectSingle).toHaveBeenCalledWith(listId, selection[0]);
expect(selectionService.selectSingle).toHaveBeenCalledWith(listId, object);
});
it('should not call selectSingle on the service when the object when selectRadio is called with value false and not deselect all others in the selection', () => {
comp.selectRadio(false );
expect(selectionService.deselectSingle).not.toHaveBeenCalledWith(listId, selection[0]);
expect(selectionService.selectSingle).not.toHaveBeenCalledWith(listId, object);
});
});

View File

@@ -49,15 +49,16 @@ export class SelectableListItemControlComponent implements OnInit {
})
}
selectCheckbox(value: boolean, object: ListableObject) {
selectCheckbox(value: boolean) {
if (value) {
this.selectionService.selectSingle(this.selectionConfig.listId, object);
this.selectionService.selectSingle(this.selectionConfig.listId, this.object);
} else {
this.selectionService.deselectSingle(this.selectionConfig.listId, object);
this.selectionService.deselectSingle(this.selectionConfig.listId, this.object);
}
}
selectRadio(value: boolean, object: ListableObject) {
selectRadio(value: boolean) {
if (value) {
const selected$ = this.selectionService.getSelectableList(this.selectionConfig.listId);
selected$.pipe(
take(1),
@@ -68,10 +69,10 @@ export class SelectableListItemControlComponent implements OnInit {
this.selectionService.deselectSingle(this.selectionConfig.listId, selectedObject);
this.deselectObject.emit(selectedObject);
});
if (value) {
this.selectionService.selectSingle(this.selectionConfig.listId, object);
this.selectObject.emit(object);
this.selectionService.selectSingle(this.selectionConfig.listId, this.object);
this.selectObject.emit(this.object);
}
);
}
});
}
}

View File

@@ -3,7 +3,6 @@ import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { SearchFormComponent } from './search-form.component';
import { FormsModule } from '@angular/forms';
import { ResourceType } from '../../core/shared/resource-type';
import { RouterTestingModule } from '@angular/router/testing';
import { Community } from '../../core/shared/community.model';
import { TranslateModule } from '@ngx-translate/core';