Skip to content

Commit

Permalink
Fixing tests for id validator
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Jun 20, 2018
1 parent 2435e84 commit 4d5d26a
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 33 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,44 @@
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { ReactiveFormsModule } from '@angular/forms';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { ViewChild, Component } from '@angular/core';
import { NgbPopoverModule, NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap/popover/popover.module';
import { Observable, of } from 'rxjs';
import { ProviderValueEmitter, ProviderStatusEmitter } from '../../../domain/service/provider-change-emitter.service';
import { AdvancedInfoFormComponent } from './advanced-info-form.component';
import { NgbPopoverModule, NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap/popover/popover.module';
import * as stubs from '../../../../../testing/resolver.stub';
import { FileBackedHttpMetadataResolver } from '../../entity';

@Component({
template: `<adv-info-form [resolver]="resolver" [ids]="ids$"></adv-info-form>`
})
class TestHostComponent {

ids$: Observable<string[]> = of(['foo']);
resolver = new FileBackedHttpMetadataResolver({
...stubs.resolver,
serviceProviderSsoDescriptor: {
protocolSupportEnum: 'foo',
nameIdFormats: []
}
});

@ViewChild(AdvancedInfoFormComponent)
public formUnderTest: AdvancedInfoFormComponent;

changeProvider(opts: any): void {
this.resolver = Object.assign({}, this.resolver, opts);
}

addFormat(value: string): void {
this.resolver.serviceProviderSsoDescriptor.nameIdFormats.push(value);
}
}


describe('Advanced Info Form Component', () => {
let fixture: ComponentFixture<AdvancedInfoFormComponent>;
let instance: AdvancedInfoFormComponent;
let fixture: ComponentFixture<TestHostComponent>;
let instance: TestHostComponent;

beforeEach(() => {
TestBed.configureTestingModule({
Expand All @@ -23,11 +53,12 @@ describe('Advanced Info Form Component', () => {
NgbPopoverModule
],
declarations: [
AdvancedInfoFormComponent
AdvancedInfoFormComponent,
TestHostComponent
],
});

fixture = TestBed.createComponent(AdvancedInfoFormComponent);
fixture = TestBed.createComponent(TestHostComponent);
instance = fixture.componentInstance;
fixture.detectChanges();
});
Expand All @@ -38,37 +69,34 @@ describe('Advanced Info Form Component', () => {

describe('ngOnChanges method', () => {
it('should set properties on the resolver', () => {
instance.resolver = stubs.resolver;
instance.changeProvider(stubs.resolver);
fixture.detectChanges();
instance.ngOnChanges();
expect(instance.resolver.organization).toEqual({});
expect(instance.resolver.contacts).toEqual([]);
expect(instance.formUnderTest.resolver.organization).toEqual({});
expect(instance.formUnderTest.resolver.contacts).toEqual([]);
});
});

describe('removeContact method', () => {
it('should remove the contact at the given index', () => {
instance.resolver = {
instance.changeProvider({
...stubs.resolver,
contacts: [stubs.contact]
};
});
fixture.detectChanges();
instance.ngOnChanges();
instance.removeContact(0);
expect(instance.contacts.length).toBe(0);
instance.formUnderTest.removeContact(0);
expect(instance.formUnderTest.contacts.length).toBe(0);
});
});

describe('addContact method', () => {
it('should remove the contact at the given index', () => {
instance.resolver = {
instance.changeProvider({
...stubs.resolver,
contacts: [stubs.contact]
};
});
fixture.detectChanges();
instance.ngOnChanges();
instance.addContact();
expect(instance.contacts.length).toBe(2);
instance.formUnderTest.addContact();
expect(instance.formUnderTest.contacts.length).toBe(2);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { EntityValidators } from '../../../domain/service/entity-validators.serv
})
export class AdvancedInfoFormComponent extends ProviderFormFragmentComponent implements OnInit, OnChanges, OnDestroy {
@Input() resolver: MetadataResolver;
@Input() ids: Observable<string[]>;

contactTypes: string[] = [
'support',
Expand All @@ -27,7 +28,6 @@ export class AdvancedInfoFormComponent extends ProviderFormFragmentComponent imp

hasValue$: Observable<boolean>;
totalValue$: Observable<string>;
ids$: Observable<string[]> = of([]);

private validationSubscription: Subscription;

Expand All @@ -37,17 +37,6 @@ export class AdvancedInfoFormComponent extends ProviderFormFragmentComponent imp
protected valueEmitter: ProviderValueEmitter
) {
super(fb, statusEmitter, valueEmitter);

/*
this.ids$ = this.store
.select(fromCollection.getAllEntityIds)
.pipe(
takeUntil(this.ngUnsubscribe),
combineLatest(this.store.select(fromCollection.getSelectedProvider), (ids: string[], provider: MetadataResolver) => {
return ids.filter(id => provider.entityId !== id);
})
);
*/
}

createForm(): void {
Expand Down Expand Up @@ -82,7 +71,7 @@ export class AdvancedInfoFormComponent extends ProviderFormFragmentComponent imp
this.form
.get('entityId')
.setAsyncValidators(
EntityValidators.createUniqueIdValidator(this.ids$)
EntityValidators.createUniqueIdValidator(this.ids)
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
</div>
<div class="col-lg-9" *ngIf="latest">
<div [ngSwitch]="editorIndex$ | async" class="px-3">
<adv-info-form *ngSwitchDefault [resolver]="latest$ | async"></adv-info-form>
<adv-info-form *ngSwitchDefault [resolver]="latest$ | async" [ids]="ids$"></adv-info-form>
<metadata-ui-form *ngSwitchCase="3" [resolver]="latest$ | async"></metadata-ui-form>
<descriptor-info-form *ngSwitchCase="4" [resolver]="latest$ | async"></descriptor-info-form>
<logout-form *ngSwitchCase="5" [resolver]="latest$ | async"></logout-form>
Expand Down
11 changes: 11 additions & 0 deletions ui/src/app/metadata/resolver/container/editor.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ export class EditorComponent implements OnInit, OnDestroy {
latest: MetadataResolver;
latest$: Observable<MetadataResolver>;

ids$: Observable<string[]>;

resolver$: Observable<MetadataResolver>;
providerName$: Observable<string>;
resolver: MetadataResolver;
Expand Down Expand Up @@ -84,6 +86,15 @@ export class EditorComponent implements OnInit, OnDestroy {

this.wizardIsValid$ = this.store.select(fromResolver.getEditorIsValid);
this.wizardIsInvalid$ = this.wizardIsValid$.pipe(map(valid => !valid));

this.ids$ = this.store
.select(fromResolver.getAllEntityIds)
.pipe(
takeUntil(this.ngUnsubscribe),
combineLatest(this.store.select(fromResolver.getSelectedResolver), (ids: string[], provider: MetadataResolver) => {
return ids.filter(id => provider.entityId !== id);
})
);
}

save(): void {
Expand Down

0 comments on commit 4d5d26a

Please sign in to comment.