Browse Source

Improved namings and updated schema service client.

pull/304/head
Sebastian 8 years ago
parent
commit
1c74592f7d
  1. 6
      src/Squidex.Domain.Apps.Entities/Contents/Guards/GuardContent.cs
  2. 2
      src/Squidex.Domain.Apps.Entities/Schemas/ISchemaEntity.cs
  3. 4
      src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs
  4. 8
      src/Squidex/Areas/Api/Controllers/Schemas/Models/CreateSchemaDto.cs
  5. 8
      src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDto.cs
  6. 13
      src/Squidex/app/shared/services/schemas.service.spec.ts
  7. 11
      src/Squidex/app/shared/services/schemas.service.ts
  8. 2
      src/Squidex/app/shared/state/contents.forms.spec.ts
  9. 8
      src/Squidex/app/shared/state/schemas.state.spec.ts
  10. 10
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/Guard/GuardContentTests.cs
  11. 2
      tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaGrainTests.cs

6
src/Squidex.Domain.Apps.Entities/Contents/Guards/GuardContent.cs

@ -25,7 +25,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guards
ValidateData(command, e); ValidateData(command, e);
}); });
if (schema.Singleton && command.ContentId != Guid.Empty) if (schema.IsSingleton && command.ContentId != Guid.Empty)
{ {
throw new DomainException("Singleton content cannot be created."); throw new DomainException("Singleton content cannot be created.");
} }
@ -65,7 +65,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guards
{ {
Guard.NotNull(command, nameof(command)); Guard.NotNull(command, nameof(command));
if (schema.Singleton && command.Status != Status.Published) if (schema.IsSingleton && command.Status != Status.Published)
{ {
throw new DomainException("Singleton content archived or unpublished."); throw new DomainException("Singleton content archived or unpublished.");
} }
@ -102,7 +102,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guards
{ {
Guard.NotNull(command, nameof(command)); Guard.NotNull(command, nameof(command));
if (schema.Singleton) if (schema.IsSingleton)
{ {
throw new DomainException("Singleton content cannot be deleted."); throw new DomainException("Singleton content cannot be deleted.");
} }

2
src/Squidex.Domain.Apps.Entities/Schemas/ISchemaEntity.cs

@ -23,7 +23,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas
string Category { get; } string Category { get; }
bool Singleton { get; } bool IsSingleton { get; }
bool IsPublished { get; } bool IsPublished { get; }

4
src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs

@ -38,7 +38,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.State
public bool IsDeleted { get; set; } public bool IsDeleted { get; set; }
[JsonProperty] [JsonProperty]
public bool Singleton { get; set; } public bool IsSingleton { get; set; }
[JsonProperty] [JsonProperty]
public string ScriptQuery { get; set; } public string ScriptQuery { get; set; }
@ -68,7 +68,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.State
{ {
Name = @event.Name; Name = @event.Name;
Singleton = @event.Singleton; IsSingleton = @event.Singleton;
var schema = new Schema(@event.Name); var schema = new Schema(@event.Name);

8
src/Squidex/Areas/Api/Controllers/Schemas/Models/CreateSchemaDto.cs

@ -33,14 +33,14 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models
public List<CreateSchemaFieldDto> Fields { get; set; } public List<CreateSchemaFieldDto> Fields { get; set; }
/// <summary> /// <summary>
/// Set it to true to autopublish the schema. /// Set to true to allow a single content item only.
/// </summary> /// </summary>
public bool Publish { get; set; } public bool Singleton { get; set; }
/// <summary> /// <summary>
/// Set to true to allow a single content item only. /// Set it to true to autopublish the schema.
/// </summary> /// </summary>
public bool Singleton { get; set; } public bool Publish { get; set; }
public CreateSchema ToCommand() public CreateSchema ToCommand()
{ {

8
src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDto.cs

@ -40,14 +40,14 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models
public SchemaPropertiesDto Properties { get; set; } public SchemaPropertiesDto Properties { get; set; }
/// <summary> /// <summary>
/// Indicates if the schema is published. /// Indicates if the schema is a singleton.
/// </summary> /// </summary>
public bool IsPublished { get; set; } public bool IsSingleton { get; set; }
/// <summary> /// <summary>
/// Indicates if the schema is a singleton. /// Indicates if the schema is published.
/// </summary> /// </summary>
public bool IsSingleton { get; set; } public bool IsPublished { get; set; }
/// <summary> /// <summary>
/// The user that has created the schema. /// The user that has created the schema.

13
src/Squidex/app/shared/services/schemas.service.spec.ts

@ -78,6 +78,7 @@ describe('SchemasService', () => {
label: 'label1', label: 'label1',
hints: 'hints1' hints: 'hints1'
}, },
isSingleton: true,
isPublished: true, isPublished: true,
created: '2016-12-12T10:10', created: '2016-12-12T10:10',
createdBy: 'Created1', createdBy: 'Created1',
@ -94,6 +95,7 @@ describe('SchemasService', () => {
label: 'label2', label: 'label2',
hints: 'hints2' hints: 'hints2'
}, },
isSingleton: true,
isPublished: true, isPublished: true,
created: '2016-10-12T10:10', created: '2016-10-12T10:10',
createdBy: 'Created2', createdBy: 'Created2',
@ -106,11 +108,11 @@ describe('SchemasService', () => {
expect(schemas!).toEqual( expect(schemas!).toEqual(
[ [
new SchemaDto('id1', 'name1', 'category1', new SchemaPropertiesDto('label1', 'hints1'), true, new SchemaDto('id1', 'name1', 'category1', new SchemaPropertiesDto('label1', 'hints1'), true, true,
DateTime.parseISO_UTC('2016-12-12T10:10'), 'Created1', DateTime.parseISO_UTC('2016-12-12T10:10'), 'Created1',
DateTime.parseISO_UTC('2017-12-12T10:10'), 'LastModifiedBy1', DateTime.parseISO_UTC('2017-12-12T10:10'), 'LastModifiedBy1',
new Version('11')), new Version('11')),
new SchemaDto('id2', 'name2', 'category2', new SchemaPropertiesDto('label2', 'hints2'), true, new SchemaDto('id2', 'name2', 'category2', new SchemaPropertiesDto('label2', 'hints2'), true, true,
DateTime.parseISO_UTC('2016-10-12T10:10'), 'Created2', DateTime.parseISO_UTC('2016-10-12T10:10'), 'Created2',
DateTime.parseISO_UTC('2017-10-12T10:10'), 'LastModifiedBy2', DateTime.parseISO_UTC('2017-10-12T10:10'), 'LastModifiedBy2',
new Version('22')) new Version('22'))
@ -135,6 +137,7 @@ describe('SchemasService', () => {
id: 'id1', id: 'id1',
name: 'name1', name: 'name1',
category: 'category1', category: 'category1',
isSingleton: true,
isPublished: true, isPublished: true,
created: '2016-12-12T10:10', created: '2016-12-12T10:10',
createdBy: 'Created1', createdBy: 'Created1',
@ -290,7 +293,7 @@ describe('SchemasService', () => {
}); });
expect(schema!).toEqual( expect(schema!).toEqual(
new SchemaDetailsDto('id1', 'name1', 'category1', new SchemaPropertiesDto('label1', 'hints1'), true, new SchemaDetailsDto('id1', 'name1', 'category1', new SchemaPropertiesDto('label1', 'hints1'), true, true,
DateTime.parseISO_UTC('2016-12-12T10:10'), 'Created1', DateTime.parseISO_UTC('2016-12-12T10:10'), 'Created1',
DateTime.parseISO_UTC('2017-12-12T10:10'), 'LastModifiedBy1', DateTime.parseISO_UTC('2017-12-12T10:10'), 'LastModifiedBy1',
new Version('2'), new Version('2'),
@ -319,7 +322,7 @@ describe('SchemasService', () => {
it('should make post request to create schema', it('should make post request to create schema',
inject([SchemasService, HttpTestingController], (schemasService: SchemasService, httpMock: HttpTestingController) => { inject([SchemasService, HttpTestingController], (schemasService: SchemasService, httpMock: HttpTestingController) => {
const dto = new CreateSchemaDto('name'); const dto = new CreateSchemaDto('name', undefined, undefined, true);
let schema: SchemaDetailsDto; let schema: SchemaDetailsDto;
@ -341,7 +344,7 @@ describe('SchemasService', () => {
}); });
expect(schema!).toEqual( expect(schema!).toEqual(
new SchemaDetailsDto('1', dto.name, '', new SchemaPropertiesDto(), false, now, user, now, user, new Version('2'), [])); new SchemaDetailsDto('1', dto.name, '', new SchemaPropertiesDto(), true, false, now, user, now, user, new Version('2'), []));
})); }));
it('should make put request to update schema', it('should make put request to update schema',

11
src/Squidex/app/shared/services/schemas.service.ts

@ -34,6 +34,7 @@ export class SchemaDto extends Model {
public readonly name: string, public readonly name: string,
public readonly category: string, public readonly category: string,
public readonly properties: SchemaPropertiesDto, public readonly properties: SchemaPropertiesDto,
public readonly isSingleton: boolean,
public readonly isPublished: boolean, public readonly isPublished: boolean,
public readonly created: DateTime, public readonly created: DateTime,
public readonly createdBy: string, public readonly createdBy: string,
@ -53,7 +54,7 @@ export class SchemaDetailsDto extends SchemaDto {
public listFields: RootFieldDto[]; public listFields: RootFieldDto[];
public listFieldsEditable: RootFieldDto[]; public listFieldsEditable: RootFieldDto[];
constructor(id: string, name: string, category: string, properties: SchemaPropertiesDto, isPublished: boolean, created: DateTime, createdBy: string, lastModified: DateTime, lastModifiedBy: string, version: Version, constructor(id: string, name: string, category: string, properties: SchemaPropertiesDto, isSingleton: boolean, isPublished: boolean, created: DateTime, createdBy: string, lastModified: DateTime, lastModifiedBy: string, version: Version,
public readonly fields: RootFieldDto[], public readonly fields: RootFieldDto[],
public readonly scriptQuery?: string, public readonly scriptQuery?: string,
public readonly scriptCreate?: string, public readonly scriptCreate?: string,
@ -61,7 +62,7 @@ export class SchemaDetailsDto extends SchemaDto {
public readonly scriptDelete?: string, public readonly scriptDelete?: string,
public readonly scriptChange?: string public readonly scriptChange?: string
) { ) {
super(id, name, category, properties, isPublished, created, createdBy, lastModified, lastModifiedBy, version); super(id, name, category, properties, isSingleton, isPublished, created, createdBy, lastModified, lastModifiedBy, version);
this.onCloned(); this.onCloned();
} }
@ -177,7 +178,8 @@ export class CreateSchemaDto {
constructor( constructor(
public readonly name: string, public readonly name: string,
public readonly fields?: RootFieldDto[], public readonly fields?: RootFieldDto[],
public readonly properties?: SchemaPropertiesDto public readonly properties?: SchemaPropertiesDto,
public readonly singleton?: boolean
) { ) {
} }
} }
@ -240,6 +242,7 @@ export class SchemasService {
item.id, item.id,
item.name, item.name,
item.category, properties, item.category, properties,
item.isSingleton,
item.isPublished, item.isPublished,
DateTime.parseISO_UTC(item.created), item.createdBy, DateTime.parseISO_UTC(item.created), item.createdBy,
DateTime.parseISO_UTC(item.lastModified), item.lastModifiedBy, DateTime.parseISO_UTC(item.lastModified), item.lastModifiedBy,
@ -300,6 +303,7 @@ export class SchemasService {
body.name, body.name,
body.category, body.category,
properties, properties,
body.isSingleton,
body.isPublished, body.isPublished,
DateTime.parseISO_UTC(body.created), body.createdBy, DateTime.parseISO_UTC(body.created), body.createdBy,
DateTime.parseISO_UTC(body.lastModified), body.lastModifiedBy, DateTime.parseISO_UTC(body.lastModified), body.lastModifiedBy,
@ -328,6 +332,7 @@ export class SchemasService {
dto.name, dto.name,
'', '',
dto.properties || new SchemaPropertiesDto(), dto.properties || new SchemaPropertiesDto(),
dto.singleton === true,
false, false,
now, user, now, user,
now, user, now, user,

2
src/Squidex/app/shared/state/contents.forms.spec.ts

@ -371,7 +371,7 @@ describe('StringField', () => {
}); });
function createSchema(properties: SchemaPropertiesDto, index = 1, fields: RootFieldDto[]) { function createSchema(properties: SchemaPropertiesDto, index = 1, fields: RootFieldDto[]) {
return new SchemaDetailsDto('id' + index, 'schema' + index, '', properties, true, null!, null!, null!, null!, null!, fields); return new SchemaDetailsDto('id' + index, 'schema' + index, '', properties, false, true, null!, null!, null!, null!, null!, fields);
} }
function createField(properties: FieldPropertiesDto, index = 1, partitioning = 'languages') { function createField(properties: FieldPropertiesDto, index = 1, partitioning = 'languages') {

8
src/Squidex/app/shared/state/schemas.state.spec.ts

@ -41,8 +41,8 @@ describe('SchemasState', () => {
const newVersion = new Version('2'); const newVersion = new Version('2');
const oldSchemas = [ const oldSchemas = [
new SchemaDto('id1', 'name1', 'category1', {}, false, creation, creator, creation, creator, version), new SchemaDto('id1', 'name1', 'category1', {}, false, false, creation, creator, creation, creator, version),
new SchemaDto('id2', 'name2', 'category2', {}, true , creation, creator, creation, creator, version) new SchemaDto('id2', 'name2', 'category2', {}, false, true , creation, creator, creation, creator, version)
]; ];
const nested1 = new NestedFieldDto(3, '3', createProperties('Number'), 2); const nested1 = new NestedFieldDto(3, '3', createProperties('Number'), 2);
@ -52,7 +52,7 @@ describe('SchemasState', () => {
const field2 = new RootFieldDto(2, '2', createProperties('Array'), 'invariant', true, true, true, [nested1, nested2]); const field2 = new RootFieldDto(2, '2', createProperties('Array'), 'invariant', true, true, true, [nested1, nested2]);
const schema = const schema =
new SchemaDetailsDto('id2', 'name2', 'category2', {}, true, new SchemaDetailsDto('id2', 'name2', 'category2', {}, false, true,
creation, creator, creation, creator,
creation, creator, creation, creator,
version, version,
@ -284,7 +284,7 @@ describe('SchemasState', () => {
it('should add schema to snapshot when created', () => { it('should add schema to snapshot when created', () => {
const request = new CreateSchemaDto('newName'); const request = new CreateSchemaDto('newName');
const result = new SchemaDetailsDto('id4', 'newName', '', {}, false, modified, modifier, modified, modifier, version, []); const result = new SchemaDetailsDto('id4', 'newName', '', {}, false, false, modified, modifier, modified, modifier, version, []);
schemasService.setup(x => x.postSchema(app, request, modifier, modified)) schemasService.setup(x => x.postSchema(app, request, modifier, modified))
.returns(() => of(result)); .returns(() => of(result));

10
tests/Squidex.Domain.Apps.Entities.Tests/Contents/Guard/GuardContentTests.cs

@ -35,7 +35,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guard
[Fact] [Fact]
public void CanCreate_should_throw_exception_if_singleton() public void CanCreate_should_throw_exception_if_singleton()
{ {
A.CallTo(() => schema.Singleton).Returns(true); A.CallTo(() => schema.IsSingleton).Returns(true);
var command = new CreateContent { Data = new NamedContentData() }; var command = new CreateContent { Data = new NamedContentData() };
@ -45,7 +45,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guard
[Fact] [Fact]
public void CanCreate_should_not_throw_exception_if_singleton_and_id_empty() public void CanCreate_should_not_throw_exception_if_singleton_and_id_empty()
{ {
A.CallTo(() => schema.Singleton).Returns(true); A.CallTo(() => schema.IsSingleton).Returns(true);
var command = new CreateContent { Data = new NamedContentData(), ContentId = Guid.Empty }; var command = new CreateContent { Data = new NamedContentData(), ContentId = Guid.Empty };
@ -133,7 +133,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guard
[Fact] [Fact]
public void CanChangeContentStatus_should_throw_exception_if_singleton() public void CanChangeContentStatus_should_throw_exception_if_singleton()
{ {
A.CallTo(() => schema.Singleton).Returns(true); A.CallTo(() => schema.IsSingleton).Returns(true);
var command = new ChangeContentStatus { Status = Status.Draft }; var command = new ChangeContentStatus { Status = Status.Draft };
@ -143,7 +143,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guard
[Fact] [Fact]
public void CanChangeContentStatus_should_not_throw_exception_if_publishing_with_pending_changes() public void CanChangeContentStatus_should_not_throw_exception_if_publishing_with_pending_changes()
{ {
A.CallTo(() => schema.Singleton).Returns(true); A.CallTo(() => schema.IsSingleton).Returns(true);
var command = new ChangeContentStatus { Status = Status.Published }; var command = new ChangeContentStatus { Status = Status.Published };
@ -177,7 +177,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Guard
[Fact] [Fact]
public void CanDelete_should_throw_exception_if_singleton() public void CanDelete_should_throw_exception_if_singleton()
{ {
A.CallTo(() => schema.Singleton).Returns(true); A.CallTo(() => schema.IsSingleton).Returns(true);
var command = new DeleteContent(); var command = new DeleteContent();

2
tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaGrainTests.cs

@ -72,7 +72,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas
Assert.Equal(SchemaName, sut.Snapshot.Name); Assert.Equal(SchemaName, sut.Snapshot.Name);
Assert.Equal(SchemaName, sut.Snapshot.SchemaDef.Name); Assert.Equal(SchemaName, sut.Snapshot.SchemaDef.Name);
Assert.True(sut.Snapshot.Singleton); Assert.True(sut.Snapshot.IsSingleton);
LastEvents LastEvents
.ShouldHaveSameEvents( .ShouldHaveSameEvents(

Loading…
Cancel
Save