mirror of https://github.com/Squidex/squidex.git
97 changed files with 718 additions and 760 deletions
@ -0,0 +1,41 @@ |
|||||
|
// ==========================================================================
|
||||
|
// Squidex Headless CMS
|
||||
|
// ==========================================================================
|
||||
|
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
||||
|
// All rights reserved. Licensed under the MIT license.
|
||||
|
// ==========================================================================
|
||||
|
|
||||
|
using GraphQL.Language.AST; |
||||
|
using GraphQL.Types; |
||||
|
using NodaTime.Text; |
||||
|
|
||||
|
namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Utils |
||||
|
{ |
||||
|
public sealed class InstantGraphType : DateGraphType |
||||
|
{ |
||||
|
public override object Serialize(object value) |
||||
|
{ |
||||
|
return ParseValue(value); |
||||
|
} |
||||
|
|
||||
|
public override object ParseValue(object value) |
||||
|
{ |
||||
|
return InstantPattern.General.Parse(value.ToString()).Value; |
||||
|
} |
||||
|
|
||||
|
public override object ParseLiteral(IValue value) |
||||
|
{ |
||||
|
if (value is InstantValue timeValue) |
||||
|
{ |
||||
|
return ParseValue(timeValue.Value); |
||||
|
} |
||||
|
|
||||
|
if (value is StringValue stringValue) |
||||
|
{ |
||||
|
return ParseValue(stringValue.Value); |
||||
|
} |
||||
|
|
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
// ==========================================================================
|
||||
|
// Squidex Headless CMS
|
||||
|
// ==========================================================================
|
||||
|
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
||||
|
// All rights reserved. Licensed under the MIT license.
|
||||
|
// ==========================================================================
|
||||
|
|
||||
|
using GraphQL.Language.AST; |
||||
|
using NodaTime; |
||||
|
|
||||
|
namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types.Utils |
||||
|
{ |
||||
|
public sealed class InstantValue : ValueNode<Instant> |
||||
|
{ |
||||
|
public InstantValue(Instant value) |
||||
|
{ |
||||
|
Value = value; |
||||
|
} |
||||
|
|
||||
|
protected override bool Equals(ValueNode<Instant> node) |
||||
|
{ |
||||
|
return Value.Equals(node.Value); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,161 +0,0 @@ |
|||||
// ==========================================================================
|
|
||||
// Squidex Headless CMS
|
|
||||
// ==========================================================================
|
|
||||
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|
||||
// All rights reserved. Licensed under the MIT license.
|
|
||||
// ==========================================================================
|
|
||||
|
|
||||
using System; |
|
||||
using Newtonsoft.Json.Linq; |
|
||||
using Xunit; |
|
||||
|
|
||||
namespace Squidex.Domain.Apps.Entities.Backup |
|
||||
{ |
|
||||
public class GuidMapperTests |
|
||||
{ |
|
||||
private readonly Guid id1 = Guid.NewGuid(); |
|
||||
private readonly Guid id2 = Guid.NewGuid(); |
|
||||
private readonly GuidMapper map = new GuidMapper(); |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_guid_string_if_valid() |
|
||||
{ |
|
||||
var result = map.NewGuidString(id1.ToString()); |
|
||||
|
|
||||
Assert.Equal(map.NewGuid(id1).ToString(), result); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_return_null_if_mapping_invalid_guid_string() |
|
||||
{ |
|
||||
var result = map.NewGuidString("invalid"); |
|
||||
|
|
||||
Assert.Null(result); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_return_null_if_mapping_null_guid_string() |
|
||||
{ |
|
||||
var result = map.NewGuidString(null); |
|
||||
|
|
||||
Assert.Null(result); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_guid() |
|
||||
{ |
|
||||
var result = map.NewGuids(id1); |
|
||||
|
|
||||
Assert.Equal(map.NewGuid(id1), result.Value<Guid>()); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_return_old_guid() |
|
||||
{ |
|
||||
var newGuid = map.NewGuids(id1).Value<Guid>(); |
|
||||
|
|
||||
Assert.Equal(id1, map.OldGuid(newGuid)); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_guid_string() |
|
||||
{ |
|
||||
var result = map.NewGuids(id1.ToString()); |
|
||||
|
|
||||
Assert.Equal(map.NewGuid(id1).ToString(), result.Value<string>()); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_named_id() |
|
||||
{ |
|
||||
var result = map.NewGuids($"{id1},name"); |
|
||||
|
|
||||
Assert.Equal($"{map.NewGuid(id1)},name", result.Value<string>()); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_array_with_guid() |
|
||||
{ |
|
||||
var obj = |
|
||||
new JObject( |
|
||||
new JProperty("k", |
|
||||
new JArray(id1, id1, id2))); |
|
||||
|
|
||||
map.NewGuids(obj); |
|
||||
|
|
||||
Assert.Equal(map.NewGuid(id1), obj["k"][0].Value<Guid>()); |
|
||||
Assert.Equal(map.NewGuid(id1), obj["k"][1].Value<Guid>()); |
|
||||
Assert.Equal(map.NewGuid(id2), obj["k"][2].Value<Guid>()); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_objects_with_guid_keys() |
|
||||
{ |
|
||||
var obj = |
|
||||
new JObject( |
|
||||
new JProperty("k", |
|
||||
new JObject( |
|
||||
new JProperty(id1.ToString(), id1), |
|
||||
new JProperty(id2.ToString(), id2)))); |
|
||||
|
|
||||
map.NewGuids(obj); |
|
||||
|
|
||||
Assert.Equal(map.NewGuid(id1), obj["k"].Value<Guid>(map.NewGuid(id1).ToString())); |
|
||||
Assert.Equal(map.NewGuid(id2), obj["k"].Value<Guid>(map.NewGuid(id2).ToString())); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_objects_with_guid() |
|
||||
{ |
|
||||
var obj = |
|
||||
new JObject( |
|
||||
new JProperty("k", |
|
||||
new JObject( |
|
||||
new JProperty("v1", id1), |
|
||||
new JProperty("v2", id1), |
|
||||
new JProperty("v3", id2)))); |
|
||||
|
|
||||
map.NewGuids(obj); |
|
||||
|
|
||||
Assert.Equal(map.NewGuid(id1), obj["k"].Value<Guid>("v1")); |
|
||||
Assert.Equal(map.NewGuid(id1), obj["k"].Value<Guid>("v2")); |
|
||||
Assert.Equal(map.NewGuid(id2), obj["k"].Value<Guid>("v3")); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_objects_with_guid_string() |
|
||||
{ |
|
||||
var obj = |
|
||||
new JObject( |
|
||||
new JProperty("k", |
|
||||
new JObject( |
|
||||
new JProperty("v1", id1.ToString()), |
|
||||
new JProperty("v2", id1.ToString()), |
|
||||
new JProperty("v3", id2.ToString())))); |
|
||||
|
|
||||
map.NewGuids(obj); |
|
||||
|
|
||||
Assert.Equal(map.NewGuid(id1).ToString(), obj["k"].Value<string>("v1")); |
|
||||
Assert.Equal(map.NewGuid(id1).ToString(), obj["k"].Value<string>("v2")); |
|
||||
Assert.Equal(map.NewGuid(id2).ToString(), obj["k"].Value<string>("v3")); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public void Should_map_objects_with_named_id() |
|
||||
{ |
|
||||
var obj = |
|
||||
new JObject( |
|
||||
new JProperty("k", |
|
||||
new JObject( |
|
||||
new JProperty("v1", $"{id1},v1"), |
|
||||
new JProperty("v2", $"{id1},v2"), |
|
||||
new JProperty("v3", $"{id2},v3")))); |
|
||||
|
|
||||
map.NewGuids(obj); |
|
||||
|
|
||||
Assert.Equal($"{map.NewGuid(id1).ToString()},v1", obj["k"].Value<string>("v1")); |
|
||||
Assert.Equal($"{map.NewGuid(id1).ToString()},v2", obj["k"].Value<string>("v2")); |
|
||||
Assert.Equal($"{map.NewGuid(id2).ToString()},v3", obj["k"].Value<string>("v3")); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue