Browse Source

Fix for when dataDraft is null.

Added unit tests for dataDraft.
pull/344/head
Niklas Isenius 7 years ago
parent
commit
8fed5cea76
  1. 2
      src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentGraphType.cs
  2. 93
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs
  3. 5
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs

2
src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentGraphType.cs

@ -99,7 +99,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
AddField(new FieldType
{
Name = "dataDraft",
ResolvedType = new NonNullGraphType(contentDataType),
ResolvedType = contentDataType,
Resolver = Resolve(x => x.DataDraft),
Description = $"The draft data of the {schemaName} content."
});

93
tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLQueriesTests.cs

@ -823,6 +823,99 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
Assert.Contains("\"data\":null", json);
}
[Fact]
public async Task Should_return_draft_content_when_querying_dataDraft()
{
var dataDraft = new NamedContentData()
.AddField("my-string",
new ContentFieldData()
.AddValue("de", "draft value"))
.AddField("my-number",
new ContentFieldData()
.AddValue("iv", 42));
var contentId = Guid.NewGuid();
var content = CreateContent(contentId, Guid.Empty, Guid.Empty, null, dataDraft);
var query = $@"
query {{
findMySchemaContent(id: ""{contentId}"") {{
dataDraft {{
myString {{
de
}}
myNumber {{
iv
}}
}}
}}
}}";
A.CallTo(() => contentQuery.FindContentAsync(MatchsContentContext(), schemaId.ToString(), contentId, EtagVersion.Any))
.Returns(content);
var result = await sut.QueryAsync(context, new GraphQLQuery { Query = query });
var expected = new
{
data = new
{
findMySchemaContent = new
{
dataDraft = new
{
myString = new
{
de = "draft value"
},
myNumber = new
{
iv = 42
}
}
}
}
};
AssertResult(expected, result);
}
[Fact]
public async Task Should_return_null_when_querying_dataDraft_and_no_draft_content_is_available()
{
var contentId = Guid.NewGuid();
var content = CreateContent(contentId, Guid.Empty, Guid.Empty, null);
var query = $@"
query {{
findMySchemaContent(id: ""{contentId}"") {{
dataDraft {{
myString {{
de
}}
}}
}}
}}";
A.CallTo(() => contentQuery.FindContentAsync(MatchsContentContext(), schemaId.ToString(), contentId, EtagVersion.Any))
.Returns(content);
var result = await sut.QueryAsync(context, new GraphQLQuery { Query = query });
var expected = new
{
data = new
{
findMySchemaContent = new
{
dataDraft = (object)null
}
}
};
AssertResult(expected, result);
}
private QueryContext MatchsAssetContext()
{
return A<QueryContext>.That.Matches(x => x.App == app && x.User == user && !x.Archived);

5
tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs

@ -97,7 +97,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
sut = new CachingGraphQLService(cache, appProvider, assetQuery, contentQuery, new FakeUrlGenerator());
}
protected static IContentEntity CreateContent(Guid id, Guid refId, Guid assetId, NamedContentData data = null)
protected static IContentEntity CreateContent(Guid id, Guid refId, Guid assetId, NamedContentData data = null, NamedContentData dataDraft = null)
{
var now = SystemClock.Instance.GetCurrentInstant();
@ -151,7 +151,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL
CreatedBy = new RefToken(RefTokenType.Subject, "user1"),
LastModified = now,
LastModifiedBy = new RefToken(RefTokenType.Subject, "user2"),
Data = data
Data = data,
DataDraft = dataDraft
};
return content;

Loading…
Cancel
Save