public Task OnInvalidInput(CreateTenantCmd op, CreateTenantResult.ICreateTenantResult result, BackofficeWriteContext state)
        {
            result.Match(created =>
            {
                Assert.True(op.ValidateObject(), "The command is expected to be invalid");
                Assert.True(false, "We shouldn't create a tenant with invalid input");
                return(created);
            },
                         notCreated =>
            {
                Assert.True(false, "Received 'NotCreated', expected InvalidRequest");
                return(notCreated);
            }, invalidRequest =>
            {
                Assert.True(true);
                Assert.False(op.ValidateObject(), "The command should be invalid");
                return(invalidRequest);
            });

            return(Task.CompletedTask);
        }
 public override Task PostConditions(CreateTenantCmd op, CreateTenantResult.ICreateTenantResult result, BackofficeWriteContext state)
 {
     result.Match(created =>
     {
         Assert.True(true);
         Assert.True(op.ValidateObject());
         Assert.Contains(state.Tenants, tenant => tenant.OrganisationId.Equals(op.OrganisationId));
         return(created);
     }, notCreated =>
     {
         Assert.True(false);
         Assert.DoesNotContain(state.Tenants, tenant => tenant.OrganisationId.Equals(op.OrganisationId));
         return(notCreated);
     },
                  invalidRequest =>
     {
         Assert.False(op.ValidateObject());
         Assert.True(false);
         return(invalidRequest);
     });
     return(Task.CompletedTask);
 }