Browse Source

build fix

pull/107/head
Sebastian Stehle 9 years ago
parent
commit
d8eae6911f
  1. 34
      src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/EdmModelExtensions.cs
  2. 22
      src/Squidex/Controllers/ContentApi/ContentSwaggerController.cs
  3. 36
      tests/Squidex.Domain.Apps.Read.Tests/Contents/GraphQLTests.cs

34
src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/EdmModelExtensions.cs

@ -1,34 +0,0 @@
// ==========================================================================
// EdmModelExtensions.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System;
using System.Linq;
using Microsoft.OData.Edm;
using Microsoft.OData.UriParser;
namespace Squidex.Domain.Apps.Read.MongoDb.Contents.Visitors
{
public static class EdmModelExtensions
{
public static ODataUriParser ParseQuery(this IEdmModel model, string query)
{
query = query ?? string.Empty;
var path = model.EntityContainer.EntitySets().First().Path.Path.Split('.').Last();
if (query.StartsWith("?"))
{
query = query.Substring(1);
}
var parser = new ODataUriParser(model, new Uri($"{path}?{query}", UriKind.Relative));
return parser;
}
}
}

22
src/Squidex/Controllers/ContentApi/ContentSwaggerController.cs

@ -10,8 +10,8 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using NSwag.Annotations;
using Squidex.Controllers.ContentApi.Generator;
using Squidex.Domain.Apps.Read.Apps.Services;
using Squidex.Domain.Apps.Read.Schemas.Repositories;
using Squidex.Infrastructure.CQRS.Commands;
using Squidex.Pipeline;
// ReSharper disable UseObjectOrCollectionInitializer
@ -20,17 +20,14 @@ namespace Squidex.Controllers.ContentApi
{
[ApiExceptionFilter]
[SwaggerIgnore]
public sealed class ContentSwaggerController : Controller
public sealed class ContentSwaggerController : ControllerBase
{
private readonly ISchemaRepository schemaRepository;
private readonly IAppProvider appProvider;
private readonly SchemasSwaggerGenerator schemasSwaggerGenerator;
public ContentSwaggerController(ISchemaRepository schemaRepository, IAppProvider appProvider,
SchemasSwaggerGenerator schemasSwaggerGenerator)
public ContentSwaggerController(ICommandBus commandBus, ISchemaRepository schemaRepository, SchemasSwaggerGenerator schemasSwaggerGenerator)
: base(commandBus)
{
this.appProvider = appProvider;
this.schemaRepository = schemaRepository;
this.schemasSwaggerGenerator = schemasSwaggerGenerator;
}
@ -50,16 +47,9 @@ namespace Squidex.Controllers.ContentApi
[ApiCosts(0)]
public async Task<IActionResult> GetSwagger(string app)
{
var appEntity = await appProvider.FindAppByNameAsync(app);
if (appEntity == null)
{
return NotFound();
}
var schemas = await schemaRepository.QueryAllAsync(appEntity.Id);
var schemas = await schemaRepository.QueryAllAsync(App.Id);
var swaggerDocument = await schemasSwaggerGenerator.Generate(appEntity, schemas);
var swaggerDocument = await schemasSwaggerGenerator.Generate(App, schemas);
return Content(swaggerDocument.ToJson(), "application/json");
}

36
tests/Squidex.Domain.Apps.Read.Tests/Contents/GraphQLTests.cs

@ -63,10 +63,8 @@ namespace Squidex.Domain.Apps.Read.Contents
new GeolocationFieldProperties()));
private readonly ISchemaRepository schemaRepository = A.Fake<ISchemaRepository>();
private readonly ISchemaProvider schemas = A.Fake<ISchemaProvider>();
private readonly ISchemaEntity schemaEntity = A.Fake<ISchemaEntity>();
private readonly IScriptEngine scriptEngine = A.Fake<IScriptEngine>();
private readonly IContentRepository contentRepository = A.Fake<IContentRepository>();
private readonly IContentQueryService contentQuery = A.Fake<IContentQueryService>();
private readonly IAssetRepository assetRepository = A.Fake<IAssetRepository>();
private readonly IAppEntity appEntity = A.Dummy<IAppEntity>();
private readonly IMemoryCache cache = new MemoryCache(Options.Create(new MemoryCacheOptions()));
@ -84,17 +82,11 @@ namespace Squidex.Domain.Apps.Read.Contents
A.CallTo(() => schemaEntity.IsPublished).Returns(true);
A.CallTo(() => schemaEntity.ScriptQuery).Returns("<script-query>");
A.CallTo(() => scriptEngine.Transform(A<ScriptContext>.That.Matches(x => x.User == user), "<script-query>"))
.ReturnsLazily((ScriptContext c, string s) => c.Data);
A.CallTo(() => schemas.FindSchemaByIdAsync(A<Guid>.Ignored, false))
.Returns(Task.FromResult(schemaEntity));
var allSchemas = new List<ISchemaEntity> { schemaEntity };
A.CallTo(() => schemaRepository.QueryAllAsync(appId)).Returns(Task.FromResult<IReadOnlyList<ISchemaEntity>>(allSchemas));
sut = new CachingGraphQLService(cache, assetRepository, contentRepository, new FakeUrlGenerator(), schemaRepository, schemas, scriptEngine);
sut = new CachingGraphQLService(cache, assetRepository, contentQuery, new FakeUrlGenerator(), schemaRepository);
}
[Fact]
@ -265,8 +257,8 @@ namespace Squidex.Domain.Apps.Read.Contents
var contents = new List<IContentEntity> { contentEntity };
A.CallTo(() => contentRepository.QueryAsync(appEntity, schemaId, false, null, "?$top=30&$skip=5"))
.Returns(Task.FromResult<IReadOnlyList<IContentEntity>>(contents));
A.CallTo(() => contentQuery.QueryWithCountAsync(appEntity, schemaEntity.Id.ToString(), user, null, "?$top=30&$skip=5"))
.Returns(Task.FromResult((schemaEntity, 0L, (IReadOnlyList<IContentEntity>)contents)));
var result = await sut.QueryAsync(appEntity, user, new GraphQLQuery { Query = query });
@ -366,8 +358,8 @@ namespace Squidex.Domain.Apps.Read.Contents
}}
}}";
A.CallTo(() => contentRepository.FindContentAsync(appEntity, schemaId, contentId))
.Returns(Task.FromResult(contentEntity));
A.CallTo(() => contentQuery.FindContentAsync(appEntity, schemaEntity.ToString(), user, contentId))
.Returns(Task.FromResult((schemaEntity, contentEntity)));
var result = await sut.QueryAsync(appEntity, user, new GraphQLQuery { Query = query });
@ -450,11 +442,11 @@ namespace Squidex.Domain.Apps.Read.Contents
var refContents = new List<IContentEntity> { contentRefEntity };
A.CallTo(() => contentRepository.FindContentAsync(appEntity, schemaId, contentId))
.Returns(Task.FromResult(contentEntity));
A.CallTo(() => contentQuery.FindContentAsync(appEntity, schemaEntity.ToString(), user, contentId))
.Returns(Task.FromResult((schemaEntity, contentEntity)));
A.CallTo(() => contentRepository.QueryAsync(appEntity, schemaId, false, A<HashSet<Guid>>.That.Matches(x => x.Contains(contentRefId)), null))
.Returns(Task.FromResult<IReadOnlyList<IContentEntity>>(refContents));
A.CallTo(() => contentQuery.QueryWithCountAsync(appEntity, schemaEntity.Id.ToString(), user, A<HashSet<Guid>>.That.Matches(x => x.Contains(contentRefId)), null))
.Returns(Task.FromResult((schemaEntity, 0L, (IReadOnlyList<IContentEntity>)refContents)));
var result = await sut.QueryAsync(appEntity, user, new GraphQLQuery { Query = query });
@ -510,8 +502,8 @@ namespace Squidex.Domain.Apps.Read.Contents
var refAssets = new List<IAssetEntity> { assetRefEntity };
A.CallTo(() => contentRepository.FindContentAsync(appEntity, schemaId, contentId))
.Returns(Task.FromResult(contentEntity));
A.CallTo(() => contentQuery.FindContentAsync(appEntity, schemaEntity.ToString(), user, contentId))
.Returns(Task.FromResult((schemaEntity, contentEntity)));
A.CallTo(() => assetRepository.QueryAsync(appEntity.Id, null, A<HashSet<Guid>>.That.Matches(x => x.Contains(assetRefId)), null, int.MaxValue, 0))
.Returns(Task.FromResult<IReadOnlyList<IAssetEntity>>(refAssets));
@ -569,8 +561,8 @@ namespace Squidex.Domain.Apps.Read.Contents
}}
}}";
A.CallTo(() => contentRepository.FindContentAsync(appEntity, schemaId, contentId))
.Returns(Task.FromResult(contentEntity));
A.CallTo(() => contentQuery.FindContentAsync(appEntity, schemaEntity.ToString(), user, contentId))
.Returns(Task.FromResult((schemaEntity, contentEntity)));
var result = await sut.QueryAsync(appEntity, user, new GraphQLQuery { Query = query });

Loading…
Cancel
Save