|
|
|
@ -21,7 +21,7 @@ import { |
|
|
|
SchemaDto, |
|
|
|
SchemasService, |
|
|
|
UpdateSchemaCategoryDto, |
|
|
|
Versioned |
|
|
|
versioned |
|
|
|
} from './../'; |
|
|
|
|
|
|
|
import { TestValues } from './_test-helpers'; |
|
|
|
@ -65,21 +65,20 @@ describe('SchemasState', () => { |
|
|
|
dialogs = Mock.ofType<DialogService>(); |
|
|
|
|
|
|
|
schemasService = Mock.ofType<SchemasService>(); |
|
|
|
schemasState = new SchemasState(appsState.object, authService.object, dialogs.object, schemasService.object); |
|
|
|
}); |
|
|
|
|
|
|
|
schemasService.setup(x => x.getSchemas(app)) |
|
|
|
.returns(() => of(oldSchemas)); |
|
|
|
|
|
|
|
schemasService.setup(x => x.getSchema(app, schema.name)) |
|
|
|
.returns(() => of(schema)); |
|
|
|
afterEach(() => { |
|
|
|
schemasService.verifyAll(); |
|
|
|
}); |
|
|
|
|
|
|
|
schemasService.setup(x => x.getSchema(app, schema.name)) |
|
|
|
.returns(() => of(schema)); |
|
|
|
describe('Loading', () => { |
|
|
|
it('should load schemas', () => { |
|
|
|
schemasService.setup(x => x.getSchemas(app)) |
|
|
|
.returns(() => of(oldSchemas)).verifiable(); |
|
|
|
|
|
|
|
schemasState = new SchemasState(appsState.object, authService.object, dialogs.object, schemasService.object); |
|
|
|
schemasState.load().subscribe(); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should load schemas', () => { |
|
|
|
expect(schemasState.snapshot.schemas.values).toEqual(oldSchemas); |
|
|
|
expect(schemasState.snapshot.isLoaded).toBeTruthy(); |
|
|
|
expect(schemasState.snapshot.categories).toEqual({ 'category1': false, 'category2': false }); |
|
|
|
@ -88,6 +87,9 @@ describe('SchemasState', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
it('should not remove custom category when loading schemas', () => { |
|
|
|
schemasService.setup(x => x.getSchemas(app)) |
|
|
|
.returns(() => of(oldSchemas)).verifiable(); |
|
|
|
|
|
|
|
schemasState.addCategory('category3'); |
|
|
|
schemasState.load(true).subscribe(); |
|
|
|
|
|
|
|
@ -99,12 +101,24 @@ describe('SchemasState', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
it('should show notification on load when reload is true', () => { |
|
|
|
schemasService.setup(x => x.getSchemas(app)) |
|
|
|
.returns(() => of(oldSchemas)).verifiable(); |
|
|
|
|
|
|
|
schemasState.load(true).subscribe(); |
|
|
|
|
|
|
|
expect().nothing(); |
|
|
|
|
|
|
|
dialogs.verify(x => x.notifyInfo(It.isAnyString()), Times.once()); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
describe('Updates', () => { |
|
|
|
beforeEach(() => { |
|
|
|
schemasService.setup(x => x.getSchemas(app)) |
|
|
|
.returns(() => of(oldSchemas)).verifiable(); |
|
|
|
|
|
|
|
schemasState.load().subscribe(); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should add category', () => { |
|
|
|
schemasState.addCategory('category3'); |
|
|
|
@ -119,15 +133,19 @@ describe('SchemasState', () => { |
|
|
|
}); |
|
|
|
|
|
|
|
it('should return schema on select and reload when already loaded', () => { |
|
|
|
schemasService.setup(x => x.getSchema(app, schema.name)) |
|
|
|
.returns(() => of(schema)).verifiable(Times.exactly(2)); |
|
|
|
|
|
|
|
schemasState.select('name2').subscribe(); |
|
|
|
schemasState.select('name2').subscribe(); |
|
|
|
|
|
|
|
schemasService.verify(x => x.getSchema(app, 'name2'), Times.exactly(2)); |
|
|
|
|
|
|
|
expect().nothing(); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should return schema on select and load when not loaded', () => { |
|
|
|
schemasService.setup(x => x.getSchema(app, schema.name)) |
|
|
|
.returns(() => of(schema)).verifiable(); |
|
|
|
|
|
|
|
let selectedSchema: SchemaDetailsDto; |
|
|
|
|
|
|
|
schemasState.select('name2').subscribe(x => { |
|
|
|
@ -141,7 +159,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should return null on select when loading failed', () => { |
|
|
|
schemasService.setup(x => x.getSchema(app, 'failed')) |
|
|
|
.returns(() => throwError({})); |
|
|
|
.returns(() => throwError({})).verifiable(); |
|
|
|
|
|
|
|
let selectedSchema: SchemaDetailsDto; |
|
|
|
|
|
|
|
@ -162,13 +180,11 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
expect(selectedSchema!).toBeNull(); |
|
|
|
expect(schemasState.snapshot.selectedSchema).toBeNull(); |
|
|
|
|
|
|
|
schemasService.verify(x => x.getSchema(app, It.isAnyString()), Times.never()); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should mark published and update user info when published', () => { |
|
|
|
schemasService.setup(x => x.publishSchema(app, oldSchemas[0].name, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.publish(oldSchemas[0], modified).subscribe(); |
|
|
|
|
|
|
|
@ -180,7 +196,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should unmark published and update user info when unpublished', () => { |
|
|
|
schemasService.setup(x => x.unpublishSchema(app, oldSchemas[1].name, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.unpublish(oldSchemas[1], modified).subscribe(); |
|
|
|
|
|
|
|
@ -194,7 +210,7 @@ describe('SchemasState', () => { |
|
|
|
const category = 'my-new-category'; |
|
|
|
|
|
|
|
schemasService.setup(x => x.putCategory(app, oldSchemas[0].name, It.is<UpdateSchemaCategoryDto>(i => i.name === category), version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.changeCategory(oldSchemas[0], category, modified).subscribe(); |
|
|
|
|
|
|
|
@ -206,12 +222,15 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
describe('with selection', () => { |
|
|
|
beforeEach(() => { |
|
|
|
schemasService.setup(x => x.getSchema(app, schema.name)) |
|
|
|
.returns(() => of(schema)).verifiable(); |
|
|
|
|
|
|
|
schemasState.select(schema.name).subscribe(); |
|
|
|
}); |
|
|
|
|
|
|
|
it('should nmark published and update user info when published selected schema', () => { |
|
|
|
schemasService.setup(x => x.publishSchema(app, schema.name, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.publish(schema, modified).subscribe(); |
|
|
|
|
|
|
|
@ -225,7 +244,7 @@ describe('SchemasState', () => { |
|
|
|
const category = 'my-new-category'; |
|
|
|
|
|
|
|
schemasService.setup(x => x.putCategory(app, oldSchemas[0].name, It.is<UpdateSchemaCategoryDto>(i => i.name === category), version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.changeCategory(oldSchemas[0], category, modified).subscribe(); |
|
|
|
|
|
|
|
@ -239,7 +258,7 @@ describe('SchemasState', () => { |
|
|
|
const request = { label: 'name2_label', hints: 'name2_hints' }; |
|
|
|
|
|
|
|
schemasService.setup(x => x.putSchema(app, schema.name, It.isAny(), version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.update(schema, request, modified).subscribe(); |
|
|
|
|
|
|
|
@ -254,7 +273,7 @@ describe('SchemasState', () => { |
|
|
|
const request = { query: '<query-script>' }; |
|
|
|
|
|
|
|
schemasService.setup(x => x.putScripts(app, schema.name, It.isAny(), version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.configureScripts(schema, request, modified).subscribe(); |
|
|
|
|
|
|
|
@ -268,7 +287,7 @@ describe('SchemasState', () => { |
|
|
|
const request = { web: 'url' }; |
|
|
|
|
|
|
|
schemasService.setup(x => x.putPreviewUrls(app, schema.name, It.isAny(), version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.configurePreviewUrls(schema, request, modified).subscribe(); |
|
|
|
|
|
|
|
@ -284,7 +303,7 @@ describe('SchemasState', () => { |
|
|
|
const result = new SchemaDetailsDto('id4', 'newName', '', {}, false, false, modified, modifier, modified, modifier, version); |
|
|
|
|
|
|
|
schemasService.setup(x => x.postSchema(app, request, modifier, modified)) |
|
|
|
.returns(() => of(result)); |
|
|
|
.returns(() => of(result)).verifiable(); |
|
|
|
|
|
|
|
schemasState.create(request, modified).subscribe(); |
|
|
|
|
|
|
|
@ -294,7 +313,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should remove schema from snapshot when deleted', () => { |
|
|
|
schemasService.setup(x => x.deleteSchema(app, schema.name, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.delete(schema).subscribe(); |
|
|
|
|
|
|
|
@ -308,7 +327,7 @@ describe('SchemasState', () => { |
|
|
|
const newField = new RootFieldDto(3, '3', createProperties('String'), 'invariant'); |
|
|
|
|
|
|
|
schemasService.setup(x => x.postField(app, schema.name, It.isAny(), undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, newField))); |
|
|
|
.returns(() => of(versioned(newVersion, newField))).verifiable(); |
|
|
|
|
|
|
|
schemasState.addField(schema, request, undefined, modified).subscribe(); |
|
|
|
|
|
|
|
@ -324,7 +343,7 @@ describe('SchemasState', () => { |
|
|
|
const newField = new NestedFieldDto(3, '3', createProperties('String'), 2); |
|
|
|
|
|
|
|
schemasService.setup(x => x.postField(app, schema.name, It.isAny(), 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, newField))); |
|
|
|
.returns(() => of(versioned(newVersion, newField))).verifiable(); |
|
|
|
|
|
|
|
schemasState.addField(schema, request, field2, modified).subscribe(); |
|
|
|
|
|
|
|
@ -336,7 +355,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should remove field and update user info when field removed', () => { |
|
|
|
schemasService.setup(x => x.deleteField(app, schema.name, field1.fieldId, undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.deleteField(schema, field1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -348,7 +367,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should remove field and update user info when nested field removed', () => { |
|
|
|
schemasService.setup(x => x.deleteField(app, schema.name, nested1.fieldId, 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.deleteField(schema, nested1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -360,7 +379,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should sort fields and update user info when fields sorted', () => { |
|
|
|
schemasService.setup(x => x.putFieldOrdering(app, schema.name, [field2.fieldId, field1.fieldId], undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.sortFields(schema, [field2, field1], undefined, modified).subscribe(); |
|
|
|
|
|
|
|
@ -372,7 +391,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should sort fields and update user info when nested fields sorted', () => { |
|
|
|
schemasService.setup(x => x.putFieldOrdering(app, schema.name, [nested2.fieldId, nested1.fieldId], 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.sortFields(schema, [nested2, nested1], field2, modified).subscribe(); |
|
|
|
|
|
|
|
@ -386,7 +405,7 @@ describe('SchemasState', () => { |
|
|
|
const request = { properties: createProperties('String') }; |
|
|
|
|
|
|
|
schemasService.setup(x => x.putField(app, schema.name, field1.fieldId, request, undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.updateField(schema, field1, request, modified).subscribe(); |
|
|
|
|
|
|
|
@ -400,7 +419,7 @@ describe('SchemasState', () => { |
|
|
|
const request = { properties: createProperties('String') }; |
|
|
|
|
|
|
|
schemasService.setup(x => x.putField(app, schema.name, nested1.fieldId, request, 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.updateField(schema, nested1, request, modified).subscribe(); |
|
|
|
|
|
|
|
@ -412,7 +431,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should mark field hidden and update user info when field hidden', () => { |
|
|
|
schemasService.setup(x => x.hideField(app, schema.name, field1.fieldId, undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.hideField(schema, field1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -424,7 +443,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should mark field hidden and update user info when nested field hidden', () => { |
|
|
|
schemasService.setup(x => x.hideField(app, schema.name, nested1.fieldId, 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.hideField(schema, nested1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -436,7 +455,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should mark field disabled and update user info when field disabled', () => { |
|
|
|
schemasService.setup(x => x.disableField(app, schema.name, field1.fieldId, undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))); |
|
|
|
|
|
|
|
schemasState.disableField(schema, field1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -448,7 +467,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should mark field disabled and update user info when nested disabled', () => { |
|
|
|
schemasService.setup(x => x.disableField(app, schema.name, nested1.fieldId, 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.disableField(schema, nested1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -460,7 +479,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should mark field locked and update user info when field locked', () => { |
|
|
|
schemasService.setup(x => x.lockField(app, schema.name, field1.fieldId, undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.lockField(schema, field1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -472,7 +491,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should mark field locked and update user info when nested field locked', () => { |
|
|
|
schemasService.setup(x => x.lockField(app, schema.name, nested1.fieldId, 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.lockField(schema, nested1, modified).subscribe(); |
|
|
|
|
|
|
|
@ -484,7 +503,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should unmark field hidden and update user info when field shown', () => { |
|
|
|
schemasService.setup(x => x.showField(app, schema.name, field2.fieldId, undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.showField(schema, field2, modified).subscribe(); |
|
|
|
|
|
|
|
@ -496,7 +515,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should unmark field hidden and update user info when nested field shown', () => { |
|
|
|
schemasService.setup(x => x.showField(app, schema.name, nested2.fieldId, 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.showField(schema, nested2, modified).subscribe(); |
|
|
|
|
|
|
|
@ -508,7 +527,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should unmark field disabled and update user info when field enabled', () => { |
|
|
|
schemasService.setup(x => x.enableField(app, schema.name, field2.fieldId, undefined, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.enableField(schema, field2, modified).subscribe(); |
|
|
|
|
|
|
|
@ -520,7 +539,7 @@ describe('SchemasState', () => { |
|
|
|
|
|
|
|
it('should unmark field disabled and update user info when nested field enabled', () => { |
|
|
|
schemasService.setup(x => x.enableField(app, schema.name, nested2.fieldId, 2, version)) |
|
|
|
.returns(() => of(new Versioned(newVersion, {}))); |
|
|
|
.returns(() => of(versioned(newVersion))).verifiable(); |
|
|
|
|
|
|
|
schemasState.enableField(schema, nested2, modified).subscribe(); |
|
|
|
|
|
|
|
@ -537,3 +556,4 @@ describe('SchemasState', () => { |
|
|
|
expect(schema_1.version).toEqual(newVersion); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |