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 fixture: ComponentFixture<LoginPageComponent>;
|
||||
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {
|
||||
params: Observable.of({})
|
||||
params: observableOf({})
|
||||
});
|
||||
|
||||
const store: Store<LoginPageComponent> = jasmine.createSpyObj('store', {
|
||||
|
@@ -56,7 +56,7 @@ describe('RequestService', () => {
|
||||
uuidService = getMockUUIDService();
|
||||
|
||||
store = new Store<CoreState>(new BehaviorSubject({}), new ActionsSubject(), null);
|
||||
selectSpy = spyOnProperty(ngrx, 'select')
|
||||
selectSpy = spyOnProperty(ngrx, 'select');
|
||||
selectSpy.and.callFake(() => {
|
||||
return () => {
|
||||
return () => cold('a', { a: undefined });
|
||||
@@ -255,7 +255,6 @@ describe('RequestService', () => {
|
||||
service.configure(request);
|
||||
expect(serviceAsAny.trackRequestsOnTheirWayToTheStore).toHaveBeenCalledWith(request);
|
||||
});
|
||||
|
||||
describe('and it isn\'t cached or pending', () => {
|
||||
beforeEach(() => {
|
||||
spyOn(serviceAsAny, 'isCachedOrPending').and.returnValue(false);
|
||||
@@ -455,15 +454,6 @@ describe('RequestService', () => {
|
||||
});
|
||||
|
||||
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', () => {
|
||||
selectSpy.and.callFake(() => {
|
||||
return () => {
|
||||
@@ -471,7 +461,6 @@ describe('RequestService', () => {
|
||||
};
|
||||
});
|
||||
serviceAsAny.trackRequestsOnTheirWayToTheStore(request);
|
||||
expect(service.getByHref).toHaveBeenCalledWith(request.href);
|
||||
expect(serviceAsAny.requestsOnTheirWayToTheStore.includes(request.href)).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
@@ -167,7 +167,7 @@ describe('RegistryService', () => {
|
||||
const responseEntry = Object.assign(new ResponseCacheEntry(), { response: response });
|
||||
|
||||
beforeEach(() => {
|
||||
(registryService as any).responseCache.get.and.returnValue(Observable.of(responseEntry));
|
||||
(registryService as any).responseCache.get.and.returnValue(observableOf(responseEntry));
|
||||
/* tslint:disable:no-empty */
|
||||
registryService.getMetadataSchemas(pagination).subscribe((value) => {
|
||||
});
|
||||
|
@@ -1,7 +1,9 @@
|
||||
import { async, ComponentFixture, inject, TestBed } from '@angular/core/testing';
|
||||
import { CUSTOM_ELEMENTS_SCHEMA, DebugElement, SimpleChange } from '@angular/core';
|
||||
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing';
|
||||
import { By } from '@angular/platform-browser';
|
||||
|
||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||
import { TextMaskModule } from 'angular2-text-mask';
|
||||
import {
|
||||
@@ -25,11 +27,23 @@ import {
|
||||
DynamicTextAreaModel,
|
||||
DynamicTimePickerModel
|
||||
} 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 {
|
||||
DsDynamicFormControlContainerComponent,
|
||||
dsDynamicFormControlMapFn
|
||||
} from './ds-dynamic-form-control-container.component';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { SharedModule } from '../../../shared.module';
|
||||
import { DynamicDsDatePickerModel } from './models/date-picker/date-picker.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 { DynamicQualdropModel } from './models/ds-dynamic-qualdrop.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 { DsDynamicScrollableDropdownComponent } from './models/scrollable-dropdown/dynamic-scrollable-dropdown.component';
|
||||
import { DsDynamicTagComponent } from './models/tag/dynamic-tag.component';
|
||||
import { DsDynamicListComponent } from './models/list/dynamic-list.component';
|
||||
|
||||
import { DsDatePickerComponent } from './models/date-picker/date-picker.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', () => {
|
||||
|
||||
@@ -258,34 +260,34 @@ describe('DsDynamicFormControlContainerComponent test suite', () => {
|
||||
|
||||
it('should map a form control model to a form control component', () => {
|
||||
const testFn = dsDynamicFormControlMapFn;
|
||||
expect(testFn(formModel[0])).toBe(DynamicNGBootstrapCheckboxComponent);
|
||||
expect(testFn(formModel[1])).toBe(DynamicNGBootstrapCheckboxGroupComponent);
|
||||
expect(testFn(formModel[0])).toEqual(DynamicNGBootstrapCheckboxComponent);
|
||||
expect(testFn(formModel[1])).toEqual(DynamicNGBootstrapCheckboxGroupComponent);
|
||||
expect(testFn(formModel[2])).toBeNull();
|
||||
expect(testFn(formModel[3])).toBe(DynamicNGBootstrapDatePickerComponent);
|
||||
expect(testFn(formModel[3])).toEqual(DynamicNGBootstrapDatePickerComponent);
|
||||
(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[5])).toBeNull();
|
||||
expect(testFn(formModel[6])).toBe(DynamicNGBootstrapFormArrayComponent);
|
||||
expect(testFn(formModel[7])).toBe(DynamicNGBootstrapFormGroupComponent);
|
||||
expect(testFn(formModel[8])).toBe(DynamicNGBootstrapInputComponent);
|
||||
expect(testFn(formModel[9])).toBe(DynamicNGBootstrapRadioGroupComponent);
|
||||
expect(testFn(formModel[6])).toEqual(DsDynamicFormArrayComponent);
|
||||
expect(testFn(formModel[7])).toEqual(DsDynamicFormGroupComponent);
|
||||
expect(testFn(formModel[8])).toEqual(DynamicNGBootstrapInputComponent);
|
||||
expect(testFn(formModel[9])).toEqual(DynamicNGBootstrapRadioGroupComponent);
|
||||
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[13])).toBeNull();
|
||||
expect(testFn(formModel[14])).toBe(DynamicNGBootstrapTextAreaComponent);
|
||||
expect(testFn(formModel[15])).toBe(DynamicNGBootstrapTimePickerComponent);
|
||||
expect(testFn(formModel[16])).toBe(DsDynamicTypeaheadComponent);
|
||||
expect(testFn(formModel[17])).toBe(DsDynamicScrollableDropdownComponent);
|
||||
expect(testFn(formModel[18])).toBe(DsDynamicTagComponent);
|
||||
expect(testFn(formModel[19])).toBe(DsDynamicListComponent);
|
||||
expect(testFn(formModel[20])).toBe(DsDynamicListComponent);
|
||||
expect(testFn(formModel[21])).toBe(DynamicRelationGroupModel);
|
||||
expect(testFn(formModel[22])).toBe(DsDatePickerComponent);
|
||||
expect(testFn(formModel[23])).toBe(DsDynamicLookupComponent);
|
||||
expect(testFn(formModel[24])).toBe(DsDynamicLookupComponent);
|
||||
expect(testFn(formModel[25])).toBe(DynamicNGBootstrapFormGroupComponent);
|
||||
expect(testFn(formModel[14])).toEqual(DynamicNGBootstrapTextAreaComponent);
|
||||
expect(testFn(formModel[15])).toEqual(DynamicNGBootstrapTimePickerComponent);
|
||||
expect(testFn(formModel[16])).toEqual(DsDynamicTypeaheadComponent);
|
||||
expect(testFn(formModel[17])).toEqual(DsDynamicScrollableDropdownComponent);
|
||||
expect(testFn(formModel[18])).toEqual(DsDynamicTagComponent);
|
||||
expect(testFn(formModel[19])).toEqual(DsDynamicListComponent);
|
||||
expect(testFn(formModel[20])).toEqual(DsDynamicListComponent);
|
||||
expect(testFn(formModel[21])).toEqual(DsDynamicRelationGroupComponent);
|
||||
expect(testFn(formModel[22])).toEqual(DsDatePickerComponent);
|
||||
expect(testFn(formModel[23])).toEqual(DsDynamicLookupComponent);
|
||||
expect(testFn(formModel[24])).toEqual(DsDynamicLookupComponent);
|
||||
expect(testFn(formModel[25])).toEqual(DsDynamicFormGroupComponent);
|
||||
});
|
||||
|
||||
});
|
||||
|
@@ -2,14 +2,14 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, QueryL
|
||||
import { FormGroup } from '@angular/forms';
|
||||
import {
|
||||
DynamicFormControlComponent,
|
||||
DynamicFormControlCustomEvent, DynamicFormControlEvent,
|
||||
DynamicFormControlCustomEvent,
|
||||
DynamicFormControlEvent,
|
||||
DynamicFormGroupModel,
|
||||
DynamicFormLayout,
|
||||
DynamicFormLayoutService,
|
||||
DynamicFormValidationService,
|
||||
DynamicTemplateDirective
|
||||
} from '@ng-dynamic-forms/core';
|
||||
import { filter, tap } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
selector: 'ds-dynamic-form-group',
|
||||
|
@@ -2,28 +2,20 @@
|
||||
import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
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 { 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 {
|
||||
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 { 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 { 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 { hasClass, createTestComponent } from '../../../../../testing/utils';
|
||||
import { createTestComponent, hasClass } from '../../../../../testing/utils';
|
||||
|
||||
export const SD_TEST_GROUP = new FormGroup({
|
||||
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 btnEl = de.nativeElement;
|
||||
|
||||
de = scrollableDropdownFixture.debugElement.query(By.css('div.scrollable-dropdown-menu'));
|
||||
const menuEl = de.nativeElement;
|
||||
|
||||
btnEl.click();
|
||||
scrollableDropdownFixture.detectChanges();
|
||||
|
||||
|
@@ -137,7 +137,7 @@ describe('DsDynamicTypeaheadComponent test suite', () => {
|
||||
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();
|
||||
|
||||
|
@@ -1,31 +1,30 @@
|
||||
// Load the implementations that should be tested
|
||||
import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { async, ComponentFixture, fakeAsync, inject, TestBed, tick, } from '@angular/core/testing';
|
||||
import { BrowserModule, By } from '@angular/platform-browser';
|
||||
import { CommonModule } from '@angular/common';
|
||||
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 'rxjs/add/observable/of';
|
||||
import { of as observableOf } from 'rxjs';
|
||||
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 { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||
import { createTestComponent } from '../../../shared/testing/utils';
|
||||
import { SectionsType } from '../sections-type';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { SectionsDirective } from '../sections.directive';
|
||||
import { ActionsSubject, Store } from '@ngrx/store';
|
||||
import { SubmissionState } from '../../submission.reducers';
|
||||
import { SubmissionService } from '../../submission.service';
|
||||
import { GLOBAL_CONFIG } from '../../../../config';
|
||||
import { SubmissionRestService } from '../../submission-rest.service';
|
||||
import { SubmissionRestServiceStub } from '../../../shared/testing/submission-rest-service-stub';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { MockRouter } from '../../../shared/mocks/mock-router';
|
||||
import { RouteService } from '../../../shared/services/route.service';
|
||||
import { MockActivatedRoute } from '../../../shared/mocks/mock-active-router';
|
||||
import { SectionsService } from '../sections.service';
|
||||
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||
import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to';
|
||||
|
||||
describe('SectionContainerComponent test suite', () => {
|
||||
|
||||
@@ -68,7 +67,7 @@ describe('SectionContainerComponent test suite', () => {
|
||||
} as any;
|
||||
const restService = new SubmissionRestServiceStub();
|
||||
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
|
||||
beforeEach(async(() => {
|
||||
|
@@ -1,14 +1,11 @@
|
||||
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 { HttpHeaders } from '@angular/common/http';
|
||||
|
||||
import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to';
|
||||
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { cold, hot } from 'jasmine-marbles';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import 'rxjs/add/observable/of'
|
||||
import 'rxjs/add/observable/timer'
|
||||
import { cold, hot, } from 'jasmine-marbles';
|
||||
|
||||
import { MockRouter } from '../shared/mocks/mock-router';
|
||||
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 { NotificationsService } from '../shared/notifications/notifications.service';
|
||||
import { MockTranslateLoader } from '../shared/mocks/mock-translate-loader';
|
||||
import { MOCK_SUBMISSION_CONFIG } from '../shared/testing/mock-submission-config';
|
||||
|
||||
describe('SubmissionService test suite', () => {
|
||||
const 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 config = MOCK_SUBMISSION_CONFIG;
|
||||
|
||||
const subState = {
|
||||
objects: {
|
||||
@@ -359,7 +323,7 @@ describe('SubmissionService test suite', () => {
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [
|
||||
StoreModule.forRoot({ submissionReducers }),
|
||||
StoreModule.forRoot({ submissionReducers } as any),
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
@@ -607,7 +571,7 @@ describe('SubmissionService test suite', () => {
|
||||
|
||||
it('should return properly submission scope', () => {
|
||||
let expected = SubmissionScopeType.WorkspaceItem;
|
||||
;
|
||||
|
||||
router.setRoute('/workspaceitems/826/edit');
|
||||
expect(service.getSubmissionScope()).toBe(expected);
|
||||
|
||||
@@ -690,16 +654,22 @@ describe('SubmissionService test suite', () => {
|
||||
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');
|
||||
|
||||
const duration = config.submission.autosave.timer * (1000 * 60);
|
||||
const expected = Observable.timer(duration, duration);
|
||||
|
||||
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', () => {
|
||||
service.startAutoSave('826');
|
||||
|
Reference in New Issue
Block a user