@ -31,6 +31,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
private readonly ICommandBus commandBus = A . Dummy < ICommandBus > ( ) ;
private readonly NamedId < DomainId > appId = NamedId . Of ( DomainId . NewGuid ( ) , "my-app" ) ;
private readonly NamedId < DomainId > schemaId = NamedId . Of ( DomainId . NewGuid ( ) , "my-schema" ) ;
private readonly NamedId < DomainId > schemaCustomId = NamedId . Of ( DomainId . NewGuid ( ) , "my-schema2" ) ;
private readonly Instant time = Instant . FromDateTimeUtc ( DateTime . UtcNow ) ;
private readonly ContentsBulkUpdateCommandMiddleware sut ;
@ -96,7 +97,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
schemaId . Name , A < Q > . That . Matches ( x = > x . JsonQuery = = query ) , ct ) )
. Returns ( ResultList . CreateFrom ( 2 , CreateContent ( id ) , CreateContent ( id ) ) ) ;
var command = BulkCommand ( BulkUpdateContentType . ChangeStatus , query ) ;
var command = BulkCommand ( BulkUpdateContentType . ChangeStatus , new BulkUpdateJob { Query = query } ) ;
var result = await PublishAsync ( command ) ;
@ -122,7 +123,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
schemaId . Name , A < Q > . That . Matches ( x = > x . JsonQuery = = query ) , ct ) )
. Returns ( ResultList . CreateFrom ( 1 , CreateContent ( id ) ) ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , query : query , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , new BulkUpdateJob { Query = query , Data = data } ) ;
var result = await PublishAsync ( command ) ;
@ -154,7 +155,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
CreateContent ( id1 ) ,
CreateContent ( id2 ) ) ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , query : query , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , new BulkUpdateJob { Query = query , Data = data } ) ;
command . Jobs ! [ 0 ] . ExpectedCount = 2 ;
@ -180,7 +181,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( _ , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , new BulkUpdateJob { Data = data } ) ;
var result = await PublishAsync ( command ) ;
@ -199,7 +200,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( _ , data , query ) = CreateTestData ( true ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , query : query , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , new BulkUpdateJob { Query = query , Data = data } ) ;
var result = await PublishAsync ( command ) ;
@ -218,7 +219,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -237,7 +238,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( true ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Upsert , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -256,7 +257,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Create , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Create , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -275,7 +276,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Create , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Create , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -293,7 +294,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Update , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Update , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -312,7 +313,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Update , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Update , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -330,7 +331,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Patch , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Patch , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -349,7 +350,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , data , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Delete , id : id , data : data ) ;
var command = BulkCommand ( BulkUpdateContentType . Delete , new BulkUpdateJob { Data = data } , id ) ;
var result = await PublishAsync ( command ) ;
@ -386,7 +387,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
var ( id , _ , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . ChangeStatus , id : id , dueTime : time ) ;
var command = BulkCommand ( BulkUpdateContentType . ChangeStatus , new BulkUpdateJob { DueTime = time } , id ) ;
var result = await PublishAsync ( command ) ;
@ -490,6 +491,28 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
. MustNotHaveHappened ( ) ;
}
[Fact]
public async Task Should_override_schema_name ( )
{
SetupContext ( Permissions . AppContentsDeleteOwn ) ;
A . CallTo ( ( ) = > contentQuery . GetSchemaOrThrowAsync ( A < Context > . _ , schemaCustomId . Name , ct ) )
. Returns ( Mocks . Schema ( appId , schemaCustomId ) ) ;
var ( id , _ , _ ) = CreateTestData ( false ) ;
var command = BulkCommand ( BulkUpdateContentType . Delete , new BulkUpdateJob { Schema = schemaCustomId . Name } , id ) ;
var result = await PublishAsync ( command ) ;
Assert . Single ( result ) ;
Assert . Single ( result , x = > x . JobIndex = = 0 & & x . Id = = id & & x . Exception = = null ) ;
A . CallTo ( ( ) = > commandBus . PublishAsync (
A < DeleteContent > . That . Matches ( x = > x . SchemaId = = schemaCustomId ) , ct ) )
. MustHaveHappened ( ) ;
}
private async Task < BulkUpdateResult > PublishAsync ( ICommand command )
{
var context = new CommandContext ( command , commandBus ) ;
@ -499,22 +522,18 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
return ( context . PlainResult as BulkUpdateResult ) ! ;
}
private BulkUpdateContents BulkCommand ( BulkUpdateContentType type , Query < JsonValue > ? query = null ,
DomainId ? id = null , ContentData ? data = null , Instant ? dueTime = null )
private BulkUpdateContents BulkCommand ( BulkUpdateContentType type , BulkUpdateJob ? job = null , DomainId ? id = null )
{
job ? ? = new BulkUpdateJob ( ) ;
job . Id = id ;
job . Type = type ;
return new BulkUpdateContents
{
AppId = appId ,
Jobs = new [ ]
{
new BulkUpdateJob
{
Type = type ,
Id = id ,
Data = data ! ,
DueTime = dueTime ,
Query = query
}
job
} ,
SchemaId = schemaId
} ;
@ -522,12 +541,16 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject
private Context SetupContext ( string id )
{
var permission = Permissions . ForApp ( id , appId . Name , schemaId . Name ) . Id ;
var claimsIdentity = new ClaimsIdentity ( ) ;
var claimsPrincipal = new ClaimsPrincipal ( claimsIdentity ) ;
claimsIdentity . AddClaim ( new Claim ( SquidexClaimTypes . Permissions , permission ) ) ;
claimsIdentity . AddClaim (
new Claim ( SquidexClaimTypes . Permissions ,
Permissions . ForApp ( id , appId . Name , schemaId . Name ) . Id ) ) ;
claimsIdentity . AddClaim (
new Claim ( SquidexClaimTypes . Permissions ,
Permissions . ForApp ( id , appId . Name , schemaCustomId . Name ) . Id ) ) ;
var requestContext = new Context ( claimsPrincipal , Mocks . App ( appId ) ) ;