public async Task <IActionResult> Insert([FromBody] CommissionAllocationEdit commissionAllocation) { var scope = AuthenticationService.GetScope(User); var result = await CommissionAllocationService.InsertCommissionAllocation(scope, commissionAllocation); if (!result.Success) { return(BadRequest(result.ValidationFailures)); } return(Ok(result)); }
public async Task InsertCommissionAllocation() { var options = TestHelper.GetDbContext("InsertCommissionAllocation"); var user1 = TestHelper.InsertUserDetailed(options); var client1 = TestHelper.InsertClient(options, user1.Organisation); var client2 = TestHelper.InsertClient(options, user1.Organisation); var user2 = TestHelper.InsertUserDetailed(options); var policy1 = new PolicyEntity { Id = Guid.NewGuid(), ClientId = client1.Client.Id, UserId = user1.User.Id }; using (var context = new DataContext(options)) { context.Policy.Add(policy1); context.SaveChanges(); } using (var context = new DataContext(options)) { var ca1 = new CommissionAllocationEdit { FromClientId = client1.Client.Id, ToClientId = client2.Client.Id, PolicyIds = new List <Guid>() { policy1.Id } }; var auditService = new AuditServiceMock(); var service = new CommissionAllocationService(context, auditService); //When var scope = TestHelper.GetScopeOptions(user1); var result = await service.InsertCommissionAllocation(scope, ca1); //Then Assert.True(result.Success); var actual = await context.CommissionAllocation.FindAsync(((CommissionAllocationEdit)result.Tag).Id); Assert.Equal(ca1.Id, actual.Id); Assert.Equal(ca1.FromClientId, actual.FromClientId); Assert.Equal(ca1.ToClientId, actual.ToClientId); var policyIds = await context.CommissionAllocationPolicy.Where(p => p.CommissionAllocationId == actual.Id).Select(p => p.PolicyId).ToListAsync(); Assert.Equal(ca1.PolicyIds, policyIds); //Out of scope scope = TestHelper.GetScopeOptions(user2, Scope.User); result = await service.InsertCommissionAllocation(scope, ca1); Assert.False(result.Success); Assert.Equal("'Client' does not exist.", result.ValidationFailures.First().ErrorMessage); } }