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
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System.Globalization;
using Newtonsoft.Json.Linq;
using NodaTime;
using Squidex.Domain.Apps.Core.Schemas;
@ -78,7 +79,7 @@ namespace Squidex.Domain.Apps.Core.EnrichContent
if (properties.CalculatedDefaultValue == DateTimeCalculatedDefaultValue.Today)
{
return now.ToString().Substring(10);
return now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
}
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
*/
import { DateTime } from 'framework';
import {
AssetsFieldPropertiesDto,
BooleanFieldPropertiesDto,
@ -84,6 +86,10 @@ describe('AssetsField', () => {
it('should return zero formatting if other type', () => {
expect(field.formatValue(1)).toBe('0 Assets');
});
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
});
describe('TagsField', () => {
@ -104,6 +110,10 @@ describe('TagsField', () => {
it('should return zero formatting if other type', () => {
expect(field.formatValue(1)).toBe('');
});
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
});
describe('BooleanField', () => {
@ -124,9 +134,16 @@ describe('BooleanField', () => {
it('should format to minus if false', () => {
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', () => {
const now = DateTime.parseISO_UTC('2017-10-12T16:30:10Z');
const field = createField(new DateTimeFieldPropertiesDto(null, null, null, true, false, 'Date'));
it('should create validators', () => {
@ -147,10 +164,28 @@ describe('DateTimeField', () => {
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'));
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', () => {
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', () => {
@ -184,6 +223,10 @@ describe('JsonField', () => {
it('should format to constant', () => {
expect(field.formatValue({})).toBe('<Json />');
});
it('should return null for default properties', () => {
expect(field.defaultValue()).toBeNull();
});
});
describe('NumberField', () => {
@ -200,6 +243,12 @@ describe('NumberField', () => {
it('should format to number', () => {
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', () => {
@ -220,9 +269,13 @@ describe('ReferencesField', () => {
it('should return zero formatting if other type', () => {
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']));
it('should create validators', () => {
@ -236,6 +289,12 @@ describe('NumberField', () => {
it('should format to string', () => {
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) {

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

@ -12,18 +12,15 @@ import {
AddFieldDto,
AnalyticsService,
ApiUrlConfig,
AssetsFieldPropertiesDto,
CreateSchemaDto,
createProperties,
DateTime,
DateTimeFieldPropertiesDto,
FieldDto,
LocalCacheService,
SchemaDetailsDto,
SchemaDto,
SchemaPropertiesDto,
SchemasService,
StringFieldPropertiesDto,
UpdateFieldDto,
UpdateSchemaDto,
UpdateSchemaScriptsDto,
@ -686,33 +683,3 @@ describe('SchemasService', () => {
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,16 +494,17 @@ export class DateTimeFieldPropertiesDto extends FieldPropertiesDto {
return validators;
}
public getDefaultValue(): any {
if (this.calculatedDefaultValue != null) {
let now = DateTime.now();
if (this.calculatedDefaultValue === 'Today') {
now = now.date;
}
return now.toUTCStringFormat('ddd, DD MMM YYYY hh:mm:ss Z');
}
public getDefaultValue(now?: DateTime): any {
now = now || DateTime.now();
if (this.calculatedDefaultValue === 'Now') {
return now.toUTCStringFormat('YYYY-MM-DDTHH:mm:ss') + 'Z';
} else if (this.calculatedDefaultValue === 'Today') {
return now.toUTCStringFormat('YYYY-MM-DD');
} else {
return this.defaultValue;
}
}
}
export class BooleanFieldPropertiesDto extends FieldPropertiesDto {

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
{
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 Schema schema;
@ -119,7 +119,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
new DateTimeField(1, "1", Partitioning.Invariant,
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]
@ -129,7 +129,7 @@ namespace Squidex.Domain.Apps.Core.Operations.EnrichContent
new DateTimeField(1, "1", Partitioning.Invariant,
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]

Loading…
Cancel
Save