Browse Source

Tests improved.

pull/204/head
Sebastian Stehle 8 years ago
parent
commit
0587541df4
  1. 5
      src/Squidex.Domain.Apps.Core.Operations/EnrichContent/DefaultValueFactory.cs
  2. 65
      src/Squidex/app/shared/services/schemas.fields.spec.ts
  3. 33
      src/Squidex/app/shared/services/schemas.service.spec.ts
  4. 17
      src/Squidex/app/shared/services/schemas.service.ts
  5. 6
      tests/Squidex.Domain.Apps.Core.Tests/Operations/EnrichContent/ContentEnrichmentTests.cs

5
src/Squidex.Domain.Apps.Core.Operations/EnrichContent/DefaultValueFactory.cs

@ -1,11 +1,12 @@
// ========================================================================== // ==========================================================================
// ValidatorsFactory.cs // DefaultValueFactory.cs
// Squidex Headless CMS // Squidex Headless CMS
// ========================================================================== // ==========================================================================
// Copyright (c) Squidex Group // Copyright (c) Squidex Group
// All rights reserved. // All rights reserved.
// ========================================================================== // ==========================================================================
using System.Globalization;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NodaTime; using NodaTime;
using Squidex.Domain.Apps.Core.Schemas; using Squidex.Domain.Apps.Core.Schemas;
@ -78,7 +79,7 @@ namespace Squidex.Domain.Apps.Core.EnrichContent
if (properties.CalculatedDefaultValue == DateTimeCalculatedDefaultValue.Today) if (properties.CalculatedDefaultValue == DateTimeCalculatedDefaultValue.Today)
{ {
return now.ToString().Substring(10); return now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
} }
return properties.DefaultValue?.ToString(); return properties.DefaultValue?.ToString();

65
src/Squidex/app/shared/services/schemas.fields.spec.ts

@ -5,6 +5,8 @@
* Copyright (c) Sebastian Stehle. All rights reserved * Copyright (c) Sebastian Stehle. All rights reserved
*/ */
import { DateTime } from 'framework';
import { import {
AssetsFieldPropertiesDto, AssetsFieldPropertiesDto,
BooleanFieldPropertiesDto, BooleanFieldPropertiesDto,
@ -84,6 +86,10 @@ describe('AssetsField', () => {
it('should return zero formatting if other type', () => { it('should return zero formatting if other type', () => {
expect(field.formatValue(1)).toBe('0 Assets'); expect(field.formatValue(1)).toBe('0 Assets');
}); });
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
}); });
describe('TagsField', () => { describe('TagsField', () => {
@ -104,6 +110,10 @@ describe('TagsField', () => {
it('should return zero formatting if other type', () => { it('should return zero formatting if other type', () => {
expect(field.formatValue(1)).toBe(''); expect(field.formatValue(1)).toBe('');
}); });
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
}); });
describe('BooleanField', () => { describe('BooleanField', () => {
@ -124,9 +134,16 @@ describe('BooleanField', () => {
it('should format to minus if false', () => { it('should format to minus if false', () => {
expect(field.formatValue(false)).toBe('-'); expect(field.formatValue(false)).toBe('-');
}); });
it('should return default value for default properties', () => {
Object.assign(field.properties, { defaultValue : true });
expect(field.defaultValue()).toBeTruthy();
});
}); });
describe('DateTimeField', () => { describe('DateTimeField', () => {
const now = DateTime.parseISO_UTC('2017-10-12T16:30:10Z');
const field = createField(new DateTimeFieldPropertiesDto(null, null, null, true, false, 'Date')); const field = createField(new DateTimeFieldPropertiesDto(null, null, null, true, false, 'Date'));
it('should create validators', () => { it('should create validators', () => {
@ -147,10 +164,28 @@ describe('DateTimeField', () => {
expect(dateField.formatValue('2017-12-12T16:00:00Z')).toBe('2017-12-12'); expect(dateField.formatValue('2017-12-12T16:00:00Z')).toBe('2017-12-12');
}); });
it('should format to date', () => { it('should format to date time', () => {
const dateTimeField = createField(new DateTimeFieldPropertiesDto(null, null, null, true, false, 'DateTime')); const dateTimeField = createField(new DateTimeFieldPropertiesDto(null, null, null, true, false, 'DateTime'));
expect(dateTimeField.formatValue('2017-12-12T16:00:00Z').substr(0, 10)).toBe('2017-12-12'); expect(dateTimeField.formatValue('2017-12-12T16:00:00Z')).toBe('2017-12-12 16:00:00');
});
it('should return default for DateFieldProperties', () => {
Object.assign(field.properties, { defaultValue: '2017-10-12T16:00:00Z' });
expect(field.defaultValue()).toEqual('2017-10-12T16:00:00Z');
});
it('should return calculated date when Today for DateFieldProperties', () => {
Object.assign(field.properties, { calculatedDefaultValue: 'Today' });
expect((<any>field).properties.getDefaultValue(now)).toEqual('2017-10-12');
});
it('should return calculated date when Now for DateFieldProperties', () => {
Object.assign(field.properties, { calculatedDefaultValue: 'Now' });
expect((<any>field).properties.getDefaultValue(now)).toEqual('2017-10-12T16:30:10Z');
}); });
}); });
@ -168,6 +203,10 @@ describe('GeolocationField', () => {
it('should format to latitude and longitude', () => { it('should format to latitude and longitude', () => {
expect(field.formatValue({ latitude: 42, longitude: 3.14 })).toBe('3.14, 42'); expect(field.formatValue({ latitude: 42, longitude: 3.14 })).toBe('3.14, 42');
}); });
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
}); });
describe('JsonField', () => { describe('JsonField', () => {
@ -184,6 +223,10 @@ describe('JsonField', () => {
it('should format to constant', () => { it('should format to constant', () => {
expect(field.formatValue({})).toBe('<Json />'); expect(field.formatValue({})).toBe('<Json />');
}); });
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
}); });
describe('NumberField', () => { describe('NumberField', () => {
@ -200,6 +243,12 @@ describe('NumberField', () => {
it('should format to number', () => { it('should format to number', () => {
expect(field.formatValue(42)).toBe(42); expect(field.formatValue(42)).toBe(42);
}); });
it('should return default value for default properties', () => {
Object.assign(field.properties, { defaultValue: 13 });
expect(field.defaultValue()).toEqual(13);
});
}); });
describe('ReferencesField', () => { describe('ReferencesField', () => {
@ -220,9 +269,13 @@ describe('ReferencesField', () => {
it('should return zero formatting if other type', () => { it('should return zero formatting if other type', () => {
expect(field.formatValue(1)).toBe('0 References'); expect(field.formatValue(1)).toBe('0 References');
}); });
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
}); });
describe('NumberField', () => { describe('StringField', () => {
const field = createField(new StringFieldPropertiesDto(null, null, null, true, false, 'Input', undefined, 'pattern', undefined, 3, 1, ['1', '2'])); const field = createField(new StringFieldPropertiesDto(null, null, null, true, false, 'Input', undefined, 'pattern', undefined, 3, 1, ['1', '2']));
it('should create validators', () => { it('should create validators', () => {
@ -236,6 +289,12 @@ describe('NumberField', () => {
it('should format to string', () => { it('should format to string', () => {
expect(field.formatValue('hello')).toBe('hello'); expect(field.formatValue('hello')).toBe('hello');
}); });
it('should return default value for default properties', () => {
Object.assign(field.properties, { defaultValue: 'MyDefault' });
expect(field.defaultValue()).toEqual('MyDefault');
});
}); });
function createField(properties: FieldPropertiesDto) { function createField(properties: FieldPropertiesDto) {

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

@ -12,18 +12,15 @@ import {
AddFieldDto, AddFieldDto,
AnalyticsService, AnalyticsService,
ApiUrlConfig, ApiUrlConfig,
AssetsFieldPropertiesDto,
CreateSchemaDto, CreateSchemaDto,
createProperties, createProperties,
DateTime, DateTime,
DateTimeFieldPropertiesDto,
FieldDto, FieldDto,
LocalCacheService, LocalCacheService,
SchemaDetailsDto, SchemaDetailsDto,
SchemaDto, SchemaDto,
SchemaPropertiesDto, SchemaPropertiesDto,
SchemasService, SchemasService,
StringFieldPropertiesDto,
UpdateFieldDto, UpdateFieldDto,
UpdateSchemaDto, UpdateSchemaDto,
UpdateSchemaScriptsDto, UpdateSchemaScriptsDto,
@ -686,33 +683,3 @@ describe('SchemasService', () => {
req.flush({}); req.flush({});
})); }));
}); });
describe('FieldPropertiesDto', () => {
it('should return default value for StringFieldProperties', () => {
const dto = new StringFieldPropertiesDto(null, null, null, false, false, 'Input', 'Default Value');
expect(dto.getDefaultValue()).toEqual('Default Value');
});
it('should return default for DateFieldProperties', () => {
const now = DateTime.now();
const dto = new DateTimeFieldPropertiesDto(null, null, null, false, false, 'Input', now.toISOString());
expect(dto.getDefaultValue()).toEqual(now.toISOString());
});
it('should return calculated date when Today for DateFieldProperties', () => {
const now = DateTime.now().date;
const dto = new DateTimeFieldPropertiesDto(null, null, null, false, false, 'Input', null, null, null, 'Today');
expect(dto.getDefaultValue()).toEqual(now.toUTCStringFormat('ddd, DD MMM YYYY hh:mm:ss Z'));
});
it('should return calculated date when Now for DateFieldProperties', () => {
const now = DateTime.now();
const dto = new DateTimeFieldPropertiesDto(null, null, null, false, false, 'Input', null, null, null, 'Now');
expect(dto.getDefaultValue()).toEqual(now.toUTCStringFormat('ddd, DD MMM YYYY hh:mm:ss Z'));
});
it('should return null for default properties', () => {
const dto = new AssetsFieldPropertiesDto(null, null, null, false, false);
expect(dto.getDefaultValue()).toEqual(null);
});
});

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

@ -494,15 +494,16 @@ export class DateTimeFieldPropertiesDto extends FieldPropertiesDto {
return validators; return validators;
} }
public getDefaultValue(): any { public getDefaultValue(now?: DateTime): any {
if (this.calculatedDefaultValue != null) { now = now || DateTime.now();
let now = DateTime.now();
if (this.calculatedDefaultValue === 'Today') { if (this.calculatedDefaultValue === 'Now') {
now = now.date; return now.toUTCStringFormat('YYYY-MM-DDTHH:mm:ss') + 'Z';
} } else if (this.calculatedDefaultValue === 'Today') {
return now.toUTCStringFormat('ddd, DD MMM YYYY hh:mm:ss Z'); return now.toUTCStringFormat('YYYY-MM-DD');
} else {
return this.defaultValue;
} }
return this.defaultValue;
} }
} }

6
tests/Squidex.Domain.Apps.Core.Tests/Operations/EnrichContent/ContentEnrichmentTests.cs

@ -22,7 +22,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
{ {
public class ContentEnrichmentTests public class ContentEnrichmentTests
{ {
private static readonly Instant Now = SystemClock.Instance.GetCurrentInstant(); private static readonly Instant Now = Instant.FromDateTimeUtc(new DateTime(2017, 10, 12, 16, 30, 10, DateTimeKind.Utc));
private readonly LanguagesConfig languagesConfig = LanguagesConfig.Build(Language.DE, Language.EN); private readonly LanguagesConfig languagesConfig = LanguagesConfig.Build(Language.DE, Language.EN);
private readonly Schema schema; private readonly Schema schema;
@ -119,7 +119,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
new DateTimeField(1, "1", Partitioning.Invariant, new DateTimeField(1, "1", Partitioning.Invariant,
new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Today }); new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Today });
Assert.Equal(Now.ToString().Substring(10), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal("2017-10-12", DefaultValueFactory.CreateDefaultValue(field, Now));
} }
[Fact] [Fact]
@ -129,7 +129,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
new DateTimeField(1, "1", Partitioning.Invariant, new DateTimeField(1, "1", Partitioning.Invariant,
new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Now }); new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Now });
Assert.Equal(Now.ToString(), DefaultValueFactory.CreateDefaultValue(field, Now)); Assert.Equal("2017-10-12T16:30:10Z", DefaultValueFactory.CreateDefaultValue(field, Now));
} }
[Fact] [Fact]

Loading…
Cancel
Save