Skip to content

Commit

Permalink
SHIBUI-1267 unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Jun 6, 2019
1 parent 714c1ed commit 44dea7b
Show file tree
Hide file tree
Showing 7 changed files with 196 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { Component, ViewChild, Input } from '@angular/core';
import { TestBed, async, ComponentFixture } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { MetadataConfigurationComponent } from './metadata-configuration.component';

import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { MetadataConfiguration } from '../model/metadata-configuration';
import { Property } from '../../domain/model/property';
import { MockI18nModule } from '../../../../testing/i18n.stub';

@Component({
selector: 'object-property',
template: ``
})
class ObjectPropertyComponent {
@Input() property: Property;
}

@Component({
template: `
<metadata-configuration [configuration]="configuration"></metadata-configuration>
`
})
class TestHostComponent {
@ViewChild(MetadataConfigurationComponent)
public componentUnderTest: MetadataConfigurationComponent;

configuration: MetadataConfiguration = {sections: []};
}

describe('Metadata Configuration Component', () => {

let fixture: ComponentFixture<TestHostComponent>;
let instance: TestHostComponent;
let app: MetadataConfigurationComponent;

beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
NgbDropdownModule,
MockI18nModule,
RouterTestingModule
],
declarations: [
MetadataConfigurationComponent,
ObjectPropertyComponent,
TestHostComponent
],
}).compileComponents();

fixture = TestBed.createComponent(TestHostComponent);
instance = fixture.componentInstance;
app = instance.componentUnderTest;
fixture.detectChanges();
}));

it('should accept a configuration input', async(() => {
expect(app).toBeTruthy();
}));
});
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
import { MetadataConfiguration } from '../model/metadata-configuration';
import { Property } from '../../domain/model/property';
import Section from '../model/section';

@Component({
selector: 'metadata-configuration',
Expand All @@ -13,8 +11,4 @@ export class MetadataConfigurationComponent {
@Input() configuration: MetadataConfiguration;

constructor() { }

edit(section: Section): void {
console.log(section);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import { Component, ViewChild, Input } from '@angular/core';
import { TestBed, async, ComponentFixture } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { StoreModule, combineReducers } from '@ngrx/store';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';

import { MetadataConfiguration } from '../model/metadata-configuration';
import { ConfigurationComponent } from './configuration.component';
import * as fromConfiguration from '../reducer';
import { MockI18nModule } from '../../../../testing/i18n.stub';

@Component({
selector: 'metadata-configuration',
template: ``
})
class MetadataConfigurationComponent {
@Input() configuration: MetadataConfiguration;
}

@Component({
template: `
<configuration-page></configuration-page>
`
})
class TestHostComponent {
@ViewChild(ConfigurationComponent)
public componentUnderTest: ConfigurationComponent;

configuration: MetadataConfiguration = { sections: [] };
}

describe('Metadata Configuration Page Component', () => {

let fixture: ComponentFixture<TestHostComponent>;
let instance: TestHostComponent;
let app: ConfigurationComponent;

beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
NgbDropdownModule,
StoreModule.forRoot({
'metadata-configuration': combineReducers(fromConfiguration.reducers),
}),
MockI18nModule,
RouterTestingModule
],
declarations: [
ConfigurationComponent,
MetadataConfigurationComponent,
TestHostComponent
],
}).compileComponents();

fixture = TestBed.createComponent(TestHostComponent);
instance = fixture.componentInstance;
app = instance.componentUnderTest;
fixture.detectChanges();
}));

it('should load metadata objects', async(() => {
expect(app).toBeTruthy();
}));
});
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { ActivatedRoute } from '@angular/router';

import * as fromConfiguration from '../reducer';
import { MetadataConfiguration } from '../model/metadata-configuration';
import { METADATA_SOURCE_EDITOR } from '../../resolver/wizard-definition';
import { takeUntil, map } from 'rxjs/operators';
import { LoadMetadataRequest, ClearConfiguration } from '../action/configuration.action';

Expand All @@ -30,8 +29,6 @@ export class ConfigurationComponent implements OnDestroy {
takeUntil(this.ngUnsubscribe),
map(params => new LoadMetadataRequest({id: params.id, type: params.type}))
).subscribe(store);

this.configuration$.subscribe(c => console.log(c));
}

ngOnDestroy() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { reducer } from './configuration.reducer';
import * as fromConfig from './configuration.reducer';
import * as actions from '../action/configuration.action';
import { MetadataSourceEditor } from '../../domain/model/wizards/metadata-source-editor';
import { SCHEMA } from '../../../../testing/form-schema.stub';
import { MetadataResolver } from '../../domain/model';

describe('Configuration Reducer', () => {
const initialState: fromConfig.State = { ...fromConfig.initialState };

describe('undefined action', () => {
it('should return the default state', () => {
const result = reducer(undefined, {} as any);

expect(result).toEqual(initialState);
});
});

describe('SET_DEFINITION action', () => {
it('should set the state definition', () => {
const definition = new MetadataSourceEditor();
const action = new actions.SetDefinition(definition);
const result = reducer(initialState, action);

expect(result).toEqual({ ...initialState, definition });
});
});

describe('SET_SCHEMA action', () => {
it('should set the state schema', () => {
const action = new actions.SetSchema(SCHEMA);
const result = reducer(initialState, action);

expect(result).toEqual({ ...initialState, schema: SCHEMA });
});
});

describe('SET_METADATA action', () => {
it('should set the state metadata model', () => {
const model: MetadataResolver = {
id: 'foo',
serviceProviderName: 'foo',
'@type': 'MetadataResolver'
};
const action = new actions.SetMetadata(model as MetadataResolver);
const result = reducer(initialState, action);

expect(result).toEqual({ ...initialState, model });
});
});
});
19 changes: 19 additions & 0 deletions ui/src/app/metadata/configuration/reducer/index.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { getConfigurationSectionsFn } from './index';
import { SCHEMA as schema } from '../../../../testing/form-schema.stub';
import { MetadataSourceEditor } from '../../domain/model/wizards/metadata-source-editor';

describe('Configuration Reducer', () => {
const model = {
name: 'foo',
'@type': 'MetadataResolver'
};

const definition = new MetadataSourceEditor();

describe('getConfigurationSectionsFn', () => {
it('should parse the schema, definition, and model into a MetadataConfiguration', () => {
const config = getConfigurationSectionsFn(model, definition, schema);
expect(config.sections).toBeDefined();
});
});
});
2 changes: 2 additions & 0 deletions ui/src/app/metadata/domain/model/metadata-resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@ export interface MetadataResolver extends MetadataBase {
serviceEnabled?: boolean;
relyingPartyOverrides?: RelyingPartyOverrides;
attributeRelease?: string[];

[property: string]: unknown;
}

0 comments on commit 44dea7b

Please sign in to comment.