mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
Fixed unit tests
This commit is contained in:
@@ -13,7 +13,7 @@ describe('LoginPageComponent', () => {
|
|||||||
let comp: LoginPageComponent;
|
let comp: LoginPageComponent;
|
||||||
let fixture: ComponentFixture<LoginPageComponent>;
|
let fixture: ComponentFixture<LoginPageComponent>;
|
||||||
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {
|
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {
|
||||||
params: Observable.of({})
|
params: observableOf({})
|
||||||
});
|
});
|
||||||
|
|
||||||
const store: Store<LoginPageComponent> = jasmine.createSpyObj('store', {
|
const store: Store<LoginPageComponent> = jasmine.createSpyObj('store', {
|
||||||
|
@@ -56,7 +56,7 @@ describe('RequestService', () => {
|
|||||||
uuidService = getMockUUIDService();
|
uuidService = getMockUUIDService();
|
||||||
|
|
||||||
store = new Store<CoreState>(new BehaviorSubject({}), new ActionsSubject(), null);
|
store = new Store<CoreState>(new BehaviorSubject({}), new ActionsSubject(), null);
|
||||||
selectSpy = spyOnProperty(ngrx, 'select')
|
selectSpy = spyOnProperty(ngrx, 'select');
|
||||||
selectSpy.and.callFake(() => {
|
selectSpy.and.callFake(() => {
|
||||||
return () => {
|
return () => {
|
||||||
return () => cold('a', { a: undefined });
|
return () => cold('a', { a: undefined });
|
||||||
@@ -255,7 +255,6 @@ describe('RequestService', () => {
|
|||||||
service.configure(request);
|
service.configure(request);
|
||||||
expect(serviceAsAny.trackRequestsOnTheirWayToTheStore).toHaveBeenCalledWith(request);
|
expect(serviceAsAny.trackRequestsOnTheirWayToTheStore).toHaveBeenCalledWith(request);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('and it isn\'t cached or pending', () => {
|
describe('and it isn\'t cached or pending', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
spyOn(serviceAsAny, 'isCachedOrPending').and.returnValue(false);
|
spyOn(serviceAsAny, 'isCachedOrPending').and.returnValue(false);
|
||||||
@@ -455,15 +454,6 @@ describe('RequestService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('when the request is added to the store', () => {
|
describe('when the request is added to the store', () => {
|
||||||
beforeEach(() => {
|
|
||||||
spyOn(service, 'getByHref').and.returnValue(observableOf({
|
|
||||||
request,
|
|
||||||
requestPending: false,
|
|
||||||
responsePending: true,
|
|
||||||
completed: false
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stop tracking the request', () => {
|
it('should stop tracking the request', () => {
|
||||||
selectSpy.and.callFake(() => {
|
selectSpy.and.callFake(() => {
|
||||||
return () => {
|
return () => {
|
||||||
@@ -471,7 +461,6 @@ describe('RequestService', () => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
serviceAsAny.trackRequestsOnTheirWayToTheStore(request);
|
serviceAsAny.trackRequestsOnTheirWayToTheStore(request);
|
||||||
expect(service.getByHref).toHaveBeenCalledWith(request.href);
|
|
||||||
expect(serviceAsAny.requestsOnTheirWayToTheStore.includes(request.href)).toBeFalsy();
|
expect(serviceAsAny.requestsOnTheirWayToTheStore.includes(request.href)).toBeFalsy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@@ -167,7 +167,7 @@ describe('RegistryService', () => {
|
|||||||
const responseEntry = Object.assign(new ResponseCacheEntry(), { response: response });
|
const responseEntry = Object.assign(new ResponseCacheEntry(), { response: response });
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
(registryService as any).responseCache.get.and.returnValue(Observable.of(responseEntry));
|
(registryService as any).responseCache.get.and.returnValue(observableOf(responseEntry));
|
||||||
/* tslint:disable:no-empty */
|
/* tslint:disable:no-empty */
|
||||||
registryService.getMetadataSchemas(pagination).subscribe((value) => {
|
registryService.getMetadataSchemas(pagination).subscribe((value) => {
|
||||||
});
|
});
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
import { async, ComponentFixture, inject, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, inject, TestBed } from '@angular/core/testing';
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, DebugElement, SimpleChange } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, DebugElement, SimpleChange } from '@angular/core';
|
||||||
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
|
import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';
|
||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
|
|
||||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { TextMaskModule } from 'angular2-text-mask';
|
import { TextMaskModule } from 'angular2-text-mask';
|
||||||
import {
|
import {
|
||||||
@@ -25,11 +27,23 @@ import {
|
|||||||
DynamicTextAreaModel,
|
DynamicTextAreaModel,
|
||||||
DynamicTimePickerModel
|
DynamicTimePickerModel
|
||||||
} from '@ng-dynamic-forms/core';
|
} from '@ng-dynamic-forms/core';
|
||||||
|
import {
|
||||||
|
DynamicNGBootstrapCalendarComponent,
|
||||||
|
DynamicNGBootstrapCheckboxComponent,
|
||||||
|
DynamicNGBootstrapCheckboxGroupComponent,
|
||||||
|
DynamicNGBootstrapDatePickerComponent,
|
||||||
|
DynamicNGBootstrapInputComponent,
|
||||||
|
DynamicNGBootstrapRadioGroupComponent,
|
||||||
|
DynamicNGBootstrapSelectComponent,
|
||||||
|
DynamicNGBootstrapTextAreaComponent,
|
||||||
|
DynamicNGBootstrapTimePickerComponent
|
||||||
|
} from '@ng-dynamic-forms/ui-ng-bootstrap';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
DsDynamicFormControlContainerComponent,
|
DsDynamicFormControlContainerComponent,
|
||||||
dsDynamicFormControlMapFn
|
dsDynamicFormControlMapFn
|
||||||
} from './ds-dynamic-form-control-container.component';
|
} from './ds-dynamic-form-control-container.component';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
|
||||||
import { SharedModule } from '../../../shared.module';
|
import { SharedModule } from '../../../shared.module';
|
||||||
import { DynamicDsDatePickerModel } from './models/date-picker/date-picker.model';
|
import { DynamicDsDatePickerModel } from './models/date-picker/date-picker.model';
|
||||||
import { DynamicRelationGroupModel } from './models/relation-group/dynamic-relation-group.model';
|
import { DynamicRelationGroupModel } from './models/relation-group/dynamic-relation-group.model';
|
||||||
@@ -42,27 +56,15 @@ import { DynamicTagModel } from './models/tag/dynamic-tag.model';
|
|||||||
import { DynamicTypeaheadModel } from './models/typeahead/dynamic-typeahead.model';
|
import { DynamicTypeaheadModel } from './models/typeahead/dynamic-typeahead.model';
|
||||||
import { DynamicQualdropModel } from './models/ds-dynamic-qualdrop.model';
|
import { DynamicQualdropModel } from './models/ds-dynamic-qualdrop.model';
|
||||||
import { DynamicLookupNameModel } from './models/lookup/dynamic-lookup-name.model';
|
import { DynamicLookupNameModel } from './models/lookup/dynamic-lookup-name.model';
|
||||||
import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';
|
|
||||||
import {
|
|
||||||
DynamicNGBootstrapCalendarComponent,
|
|
||||||
DynamicNGBootstrapCheckboxComponent,
|
|
||||||
DynamicNGBootstrapCheckboxGroupComponent,
|
|
||||||
DynamicNGBootstrapDatePickerComponent,
|
|
||||||
DynamicNGBootstrapFormArrayComponent,
|
|
||||||
DynamicNGBootstrapFormGroupComponent,
|
|
||||||
DynamicNGBootstrapInputComponent,
|
|
||||||
DynamicNGBootstrapRadioGroupComponent,
|
|
||||||
DynamicNGBootstrapSelectComponent,
|
|
||||||
DynamicNGBootstrapTextAreaComponent,
|
|
||||||
DynamicNGBootstrapTimePickerComponent
|
|
||||||
} from '@ng-dynamic-forms/ui-ng-bootstrap';
|
|
||||||
import { DsDynamicTypeaheadComponent } from './models/typeahead/dynamic-typeahead.component';
|
import { DsDynamicTypeaheadComponent } from './models/typeahead/dynamic-typeahead.component';
|
||||||
import { DsDynamicScrollableDropdownComponent } from './models/scrollable-dropdown/dynamic-scrollable-dropdown.component';
|
import { DsDynamicScrollableDropdownComponent } from './models/scrollable-dropdown/dynamic-scrollable-dropdown.component';
|
||||||
import { DsDynamicTagComponent } from './models/tag/dynamic-tag.component';
|
import { DsDynamicTagComponent } from './models/tag/dynamic-tag.component';
|
||||||
import { DsDynamicListComponent } from './models/list/dynamic-list.component';
|
import { DsDynamicListComponent } from './models/list/dynamic-list.component';
|
||||||
|
|
||||||
import { DsDatePickerComponent } from './models/date-picker/date-picker.component';
|
import { DsDatePickerComponent } from './models/date-picker/date-picker.component';
|
||||||
import { DsDynamicLookupComponent } from './models/lookup/dynamic-lookup.component';
|
import { DsDynamicLookupComponent } from './models/lookup/dynamic-lookup.component';
|
||||||
|
import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-array.component';
|
||||||
|
import { DsDynamicFormGroupComponent } from './models/form-group/dynamic-form-group.component';
|
||||||
|
import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components';
|
||||||
|
|
||||||
describe('DsDynamicFormControlContainerComponent test suite', () => {
|
describe('DsDynamicFormControlContainerComponent test suite', () => {
|
||||||
|
|
||||||
@@ -258,34 +260,34 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
|
|||||||
|
|
||||||
it('should map a form control model to a form control component', () => {
|
it('should map a form control model to a form control component', () => {
|
||||||
const testFn = dsDynamicFormControlMapFn;
|
const testFn = dsDynamicFormControlMapFn;
|
||||||
expect(testFn(formModel[0])).toBe(DynamicNGBootstrapCheckboxComponent);
|
expect(testFn(formModel[0])).toEqual(DynamicNGBootstrapCheckboxComponent);
|
||||||
expect(testFn(formModel[1])).toBe(DynamicNGBootstrapCheckboxGroupComponent);
|
expect(testFn(formModel[1])).toEqual(DynamicNGBootstrapCheckboxGroupComponent);
|
||||||
expect(testFn(formModel[2])).toBeNull();
|
expect(testFn(formModel[2])).toBeNull();
|
||||||
expect(testFn(formModel[3])).toBe(DynamicNGBootstrapDatePickerComponent);
|
expect(testFn(formModel[3])).toEqual(DynamicNGBootstrapDatePickerComponent);
|
||||||
(formModel[3] as DynamicDatePickerModel).inline = true;
|
(formModel[3] as DynamicDatePickerModel).inline = true;
|
||||||
expect(testFn(formModel[3])).toBe(DynamicNGBootstrapCalendarComponent);
|
expect(testFn(formModel[3])).toEqual(DynamicNGBootstrapCalendarComponent);
|
||||||
expect(testFn(formModel[4])).toBeNull();
|
expect(testFn(formModel[4])).toBeNull();
|
||||||
expect(testFn(formModel[5])).toBeNull();
|
expect(testFn(formModel[5])).toBeNull();
|
||||||
expect(testFn(formModel[6])).toBe(DynamicNGBootstrapFormArrayComponent);
|
expect(testFn(formModel[6])).toEqual(DsDynamicFormArrayComponent);
|
||||||
expect(testFn(formModel[7])).toBe(DynamicNGBootstrapFormGroupComponent);
|
expect(testFn(formModel[7])).toEqual(DsDynamicFormGroupComponent);
|
||||||
expect(testFn(formModel[8])).toBe(DynamicNGBootstrapInputComponent);
|
expect(testFn(formModel[8])).toEqual(DynamicNGBootstrapInputComponent);
|
||||||
expect(testFn(formModel[9])).toBe(DynamicNGBootstrapRadioGroupComponent);
|
expect(testFn(formModel[9])).toEqual(DynamicNGBootstrapRadioGroupComponent);
|
||||||
expect(testFn(formModel[10])).toBeNull();
|
expect(testFn(formModel[10])).toBeNull();
|
||||||
expect(testFn(formModel[11])).toBe(DynamicNGBootstrapSelectComponent);
|
expect(testFn(formModel[11])).toEqual(DynamicNGBootstrapSelectComponent);
|
||||||
expect(testFn(formModel[12])).toBeNull();
|
expect(testFn(formModel[12])).toBeNull();
|
||||||
expect(testFn(formModel[13])).toBeNull();
|
expect(testFn(formModel[13])).toBeNull();
|
||||||
expect(testFn(formModel[14])).toBe(DynamicNGBootstrapTextAreaComponent);
|
expect(testFn(formModel[14])).toEqual(DynamicNGBootstrapTextAreaComponent);
|
||||||
expect(testFn(formModel[15])).toBe(DynamicNGBootstrapTimePickerComponent);
|
expect(testFn(formModel[15])).toEqual(DynamicNGBootstrapTimePickerComponent);
|
||||||
expect(testFn(formModel[16])).toBe(DsDynamicTypeaheadComponent);
|
expect(testFn(formModel[16])).toEqual(DsDynamicTypeaheadComponent);
|
||||||
expect(testFn(formModel[17])).toBe(DsDynamicScrollableDropdownComponent);
|
expect(testFn(formModel[17])).toEqual(DsDynamicScrollableDropdownComponent);
|
||||||
expect(testFn(formModel[18])).toBe(DsDynamicTagComponent);
|
expect(testFn(formModel[18])).toEqual(DsDynamicTagComponent);
|
||||||
expect(testFn(formModel[19])).toBe(DsDynamicListComponent);
|
expect(testFn(formModel[19])).toEqual(DsDynamicListComponent);
|
||||||
expect(testFn(formModel[20])).toBe(DsDynamicListComponent);
|
expect(testFn(formModel[20])).toEqual(DsDynamicListComponent);
|
||||||
expect(testFn(formModel[21])).toBe(DynamicRelationGroupModel);
|
expect(testFn(formModel[21])).toEqual(DsDynamicRelationGroupComponent);
|
||||||
expect(testFn(formModel[22])).toBe(DsDatePickerComponent);
|
expect(testFn(formModel[22])).toEqual(DsDatePickerComponent);
|
||||||
expect(testFn(formModel[23])).toBe(DsDynamicLookupComponent);
|
expect(testFn(formModel[23])).toEqual(DsDynamicLookupComponent);
|
||||||
expect(testFn(formModel[24])).toBe(DsDynamicLookupComponent);
|
expect(testFn(formModel[24])).toEqual(DsDynamicLookupComponent);
|
||||||
expect(testFn(formModel[25])).toBe(DynamicNGBootstrapFormGroupComponent);
|
expect(testFn(formModel[25])).toEqual(DsDynamicFormGroupComponent);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@@ -2,14 +2,14 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, QueryL
|
|||||||
import { FormGroup } from '@angular/forms';
|
import { FormGroup } from '@angular/forms';
|
||||||
import {
|
import {
|
||||||
DynamicFormControlComponent,
|
DynamicFormControlComponent,
|
||||||
DynamicFormControlCustomEvent, DynamicFormControlEvent,
|
DynamicFormControlCustomEvent,
|
||||||
|
DynamicFormControlEvent,
|
||||||
DynamicFormGroupModel,
|
DynamicFormGroupModel,
|
||||||
DynamicFormLayout,
|
DynamicFormLayout,
|
||||||
DynamicFormLayoutService,
|
DynamicFormLayoutService,
|
||||||
DynamicFormValidationService,
|
DynamicFormValidationService,
|
||||||
DynamicTemplateDirective
|
DynamicTemplateDirective
|
||||||
} from '@ng-dynamic-forms/core';
|
} from '@ng-dynamic-forms/core';
|
||||||
import { filter, tap } from 'rxjs/operators';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-dynamic-form-group',
|
selector: 'ds-dynamic-form-group',
|
||||||
|
@@ -2,28 +2,20 @@
|
|||||||
import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { async, ComponentFixture, fakeAsync, inject, TestBed, tick, } from '@angular/core/testing';
|
import { async, ComponentFixture, fakeAsync, inject, TestBed, tick, } from '@angular/core/testing';
|
||||||
|
import { By } from '@angular/platform-browser';
|
||||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
||||||
|
import { DynamicFormLayoutService, DynamicFormsCoreModule, DynamicFormValidationService } from '@ng-dynamic-forms/core';
|
||||||
|
import { DynamicFormsNGBootstrapUIModule } from '@ng-dynamic-forms/ui-ng-bootstrap';
|
||||||
|
|
||||||
import { AuthorityOptions } from '../../../../../../core/integration/models/authority-options.model';
|
import { AuthorityOptions } from '../../../../../../core/integration/models/authority-options.model';
|
||||||
import {
|
|
||||||
DynamicFormLayoutService,
|
|
||||||
DynamicFormsCoreModule,
|
|
||||||
DynamicFormValidationService
|
|
||||||
} from '@ng-dynamic-forms/core';
|
|
||||||
import { DynamicFormsNGBootstrapUIModule } from '@ng-dynamic-forms/ui-ng-bootstrap';
|
|
||||||
import { AuthorityService } from '../../../../../../core/integration/authority.service';
|
import { AuthorityService } from '../../../../../../core/integration/authority.service';
|
||||||
import { AuthorityServiceStub } from '../../../../../testing/authority-service-stub';
|
import { AuthorityServiceStub } from '../../../../../testing/authority-service-stub';
|
||||||
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
|
||||||
import { DsDynamicScrollableDropdownComponent } from './dynamic-scrollable-dropdown.component';
|
import { DsDynamicScrollableDropdownComponent } from './dynamic-scrollable-dropdown.component';
|
||||||
import { DynamicScrollableDropdownModel } from './dynamic-scrollable-dropdown.model';
|
import { DynamicScrollableDropdownModel } from './dynamic-scrollable-dropdown.model';
|
||||||
import { DsDynamicTypeaheadComponent } from '../typeahead/dynamic-typeahead.component';
|
|
||||||
import { DynamicTypeaheadModel } from '../typeahead/dynamic-typeahead.model';
|
|
||||||
import { TYPEAHEAD_TEST_GROUP, TYPEAHEAD_TEST_MODEL_CONFIG } from '../typeahead/dynamic-typeahead.component.spec';
|
|
||||||
import { By } from '@angular/platform-browser';
|
|
||||||
import { AuthorityValue } from '../../../../../../core/integration/models/authority.value';
|
import { AuthorityValue } from '../../../../../../core/integration/models/authority.value';
|
||||||
import { hasClass, createTestComponent } from '../../../../../testing/utils';
|
import { createTestComponent, hasClass } from '../../../../../testing/utils';
|
||||||
|
|
||||||
export const SD_TEST_GROUP = new FormGroup({
|
export const SD_TEST_GROUP = new FormGroup({
|
||||||
dropdown: new FormControl(),
|
dropdown: new FormControl(),
|
||||||
@@ -165,9 +157,6 @@ describe('Dynamic Dynamic Scrollable Dropdown component', () => {
|
|||||||
let de: any = scrollableDropdownFixture.debugElement.query(By.css('button.ds-form-input-btn'));
|
let de: any = scrollableDropdownFixture.debugElement.query(By.css('button.ds-form-input-btn'));
|
||||||
let btnEl = de.nativeElement;
|
let btnEl = de.nativeElement;
|
||||||
|
|
||||||
de = scrollableDropdownFixture.debugElement.query(By.css('div.scrollable-dropdown-menu'));
|
|
||||||
const menuEl = de.nativeElement;
|
|
||||||
|
|
||||||
btnEl.click();
|
btnEl.click();
|
||||||
scrollableDropdownFixture.detectChanges();
|
scrollableDropdownFixture.detectChanges();
|
||||||
|
|
||||||
|
@@ -137,7 +137,7 @@ describe('DsDynamicTypeaheadComponent test suite', () => {
|
|||||||
expect(typeaheadComp.currentValue).not.toBeDefined();
|
expect(typeaheadComp.currentValue).not.toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should search when 3+ characters typed', fakeAsync((done) => {
|
it('should search when 3+ characters typed', fakeAsync(() => {
|
||||||
|
|
||||||
spyOn((typeaheadComp as any).authorityService, 'getEntriesByName').and.callThrough();
|
spyOn((typeaheadComp as any).authorityService, 'getEntriesByName').and.callThrough();
|
||||||
|
|
||||||
|
@@ -1,31 +1,30 @@
|
|||||||
// Load the implementations that should be tested
|
// Load the implementations that should be tested
|
||||||
import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
import { async, ComponentFixture, fakeAsync, inject, TestBed, tick, } from '@angular/core/testing';
|
import { CommonModule } from '@angular/common';
|
||||||
import { BrowserModule, By } from '@angular/platform-browser';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { async, ComponentFixture, inject, TestBed, } from '@angular/core/testing';
|
||||||
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
|
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { of as observableOf } from 'rxjs';
|
||||||
import 'rxjs/add/observable/of';
|
import { ActionsSubject, Store } from '@ngrx/store';
|
||||||
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to';
|
||||||
|
|
||||||
import { SectionContainerComponent } from './section-container.component';
|
import { SectionContainerComponent } from './section-container.component';
|
||||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
||||||
import { createTestComponent } from '../../../shared/testing/utils';
|
import { createTestComponent } from '../../../shared/testing/utils';
|
||||||
import { SectionsType } from '../sections-type';
|
import { SectionsType } from '../sections-type';
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
|
||||||
import { SectionsDirective } from '../sections.directive';
|
import { SectionsDirective } from '../sections.directive';
|
||||||
import { ActionsSubject, Store } from '@ngrx/store';
|
|
||||||
import { SubmissionState } from '../../submission.reducers';
|
import { SubmissionState } from '../../submission.reducers';
|
||||||
import { SubmissionService } from '../../submission.service';
|
import { SubmissionService } from '../../submission.service';
|
||||||
import { GLOBAL_CONFIG } from '../../../../config';
|
import { GLOBAL_CONFIG } from '../../../../config';
|
||||||
import { SubmissionRestService } from '../../submission-rest.service';
|
import { SubmissionRestService } from '../../submission-rest.service';
|
||||||
import { SubmissionRestServiceStub } from '../../../shared/testing/submission-rest-service-stub';
|
import { SubmissionRestServiceStub } from '../../../shared/testing/submission-rest-service-stub';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
|
||||||
import { MockRouter } from '../../../shared/mocks/mock-router';
|
import { MockRouter } from '../../../shared/mocks/mock-router';
|
||||||
import { RouteService } from '../../../shared/services/route.service';
|
import { RouteService } from '../../../shared/services/route.service';
|
||||||
import { MockActivatedRoute } from '../../../shared/mocks/mock-active-router';
|
import { MockActivatedRoute } from '../../../shared/mocks/mock-active-router';
|
||||||
import { SectionsService } from '../sections.service';
|
import { SectionsService } from '../sections.service';
|
||||||
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||||
import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to';
|
|
||||||
|
|
||||||
describe('SectionContainerComponent test suite', () => {
|
describe('SectionContainerComponent test suite', () => {
|
||||||
|
|
||||||
@@ -68,7 +67,7 @@ describe('SectionContainerComponent test suite', () => {
|
|||||||
} as any;
|
} as any;
|
||||||
const restService = new SubmissionRestServiceStub();
|
const restService = new SubmissionRestServiceStub();
|
||||||
const router = new MockRouter();
|
const router = new MockRouter();
|
||||||
const store = new Store<SubmissionState>(Observable.of({}), new ActionsSubject(), undefined);
|
const store = new Store<SubmissionState>(observableOf({}), new ActionsSubject(), undefined);
|
||||||
|
|
||||||
// async beforeEach
|
// async beforeEach
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
|
@@ -1,14 +1,11 @@
|
|||||||
import { StoreModule } from '@ngrx/store';
|
import { StoreModule } from '@ngrx/store';
|
||||||
import { async, fakeAsync, flush, TestBed, tick } from '@angular/core/testing';
|
import { async, fakeAsync, TestBed, tick } from '@angular/core/testing';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { HttpHeaders } from '@angular/common/http';
|
import { HttpHeaders } from '@angular/common/http';
|
||||||
|
|
||||||
import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to';
|
import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to';
|
||||||
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||||
import { cold, hot } from 'jasmine-marbles';
|
import { cold, hot, } from 'jasmine-marbles';
|
||||||
import { Observable } from 'rxjs/Observable';
|
|
||||||
import 'rxjs/add/observable/of'
|
|
||||||
import 'rxjs/add/observable/timer'
|
|
||||||
|
|
||||||
import { MockRouter } from '../shared/mocks/mock-router';
|
import { MockRouter } from '../shared/mocks/mock-router';
|
||||||
import { SubmissionService } from './submission.service';
|
import { SubmissionService } from './submission.service';
|
||||||
@@ -23,43 +20,10 @@ import { SubmissionScopeType } from '../core/submission/submission-scope-type';
|
|||||||
import { submissionRestREsponse } from '../shared/mocks/mock-submission';
|
import { submissionRestREsponse } from '../shared/mocks/mock-submission';
|
||||||
import { NotificationsService } from '../shared/notifications/notifications.service';
|
import { NotificationsService } from '../shared/notifications/notifications.service';
|
||||||
import { MockTranslateLoader } from '../shared/mocks/mock-translate-loader';
|
import { MockTranslateLoader } from '../shared/mocks/mock-translate-loader';
|
||||||
|
import { MOCK_SUBMISSION_CONFIG } from '../shared/testing/mock-submission-config';
|
||||||
|
|
||||||
describe('SubmissionService test suite', () => {
|
describe('SubmissionService test suite', () => {
|
||||||
const config = {
|
const config = MOCK_SUBMISSION_CONFIG;
|
||||||
submission: {
|
|
||||||
autosave: {
|
|
||||||
metadata: ['dc.title', 'dc.identifier.doi', 'dc.identifier.pmid', 'dc.identifier.arxiv'],
|
|
||||||
timer: 5
|
|
||||||
},
|
|
||||||
metadata: {
|
|
||||||
icons: [
|
|
||||||
{
|
|
||||||
name: 'dc.contributor.author',
|
|
||||||
config: {
|
|
||||||
withAuthority: {
|
|
||||||
style: 'fa-user'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'local.contributor.affiliation',
|
|
||||||
config: {
|
|
||||||
withAuthority: {
|
|
||||||
style: 'fa-university'
|
|
||||||
},
|
|
||||||
withoutAuthority: {
|
|
||||||
style: 'fa-university text-muted'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'default',
|
|
||||||
config: {}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
} as any;
|
|
||||||
|
|
||||||
const subState = {
|
const subState = {
|
||||||
objects: {
|
objects: {
|
||||||
@@ -359,7 +323,7 @@ describe('SubmissionService test suite', () => {
|
|||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
StoreModule.forRoot({ submissionReducers }),
|
StoreModule.forRoot({ submissionReducers } as any),
|
||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
loader: {
|
loader: {
|
||||||
provide: TranslateLoader,
|
provide: TranslateLoader,
|
||||||
@@ -607,7 +571,7 @@ describe('SubmissionService test suite', () => {
|
|||||||
|
|
||||||
it('should return properly submission scope', () => {
|
it('should return properly submission scope', () => {
|
||||||
let expected = SubmissionScopeType.WorkspaceItem;
|
let expected = SubmissionScopeType.WorkspaceItem;
|
||||||
;
|
|
||||||
router.setRoute('/workspaceitems/826/edit');
|
router.setRoute('/workspaceitems/826/edit');
|
||||||
expect(service.getSubmissionScope()).toBe(expected);
|
expect(service.getSubmissionScope()).toBe(expected);
|
||||||
|
|
||||||
@@ -690,16 +654,22 @@ describe('SubmissionService test suite', () => {
|
|||||||
expect(result).toBeObservable(expected);
|
expect(result).toBeObservable(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should start Auto Save', () => {
|
it('should start Auto Save', fakeAsync(() => {
|
||||||
|
const duration = config.submission.autosave.timer * (1000 * 60);
|
||||||
spyOn((service as any).store, 'dispatch');
|
spyOn((service as any).store, 'dispatch');
|
||||||
|
|
||||||
const duration = config.submission.autosave.timer * (1000 * 60);
|
|
||||||
const expected = Observable.timer(duration, duration);
|
|
||||||
|
|
||||||
service.startAutoSave('826');
|
service.startAutoSave('826');
|
||||||
|
const sub = (service as any).timerObs.subscribe();
|
||||||
|
|
||||||
expect((service as any).timerObs).toEqual(expected);
|
tick(duration / 2);
|
||||||
});
|
expect((service as any).store.dispatch).not.toHaveBeenCalled();
|
||||||
|
|
||||||
|
tick(duration / 2);
|
||||||
|
expect((service as any).store.dispatch).toHaveBeenCalled();
|
||||||
|
|
||||||
|
sub.unsubscribe();
|
||||||
|
(service as any).autoSaveSub.unsubscribe();
|
||||||
|
}));
|
||||||
|
|
||||||
it('should stop Auto Save', () => {
|
it('should stop Auto Save', () => {
|
||||||
service.startAutoSave('826');
|
service.startAutoSave('826');
|
||||||
|
Reference in New Issue
Block a user