public async Task Get()
        {
            var commission = new CommissionEdit()
            {
                Id = Guid.NewGuid(),
                AmountIncludingVAT = 100,
                VAT = 20,
                CommissionStatementId = Guid.NewGuid(),
                CommissionTypeId      = Guid.NewGuid(),
                PolicyId   = Guid.NewGuid(),
                SourceData = null
            };

            var service     = new Mock <ICommissionService>();
            var authService = TestHelper.MockAuthenticationService(Scope.Branch);

            service.Setup(c => c.GetCommission(It.IsAny <ScopeOptions>(), It.Is <Guid>(m => m == commission.Id.Value)))
            .ReturnsAsync(commission);

            var controller = new CommissionsController(service.Object, authService.Object);

            var result = await controller.Get(commission.Id.Value);

            var okResult    = Assert.IsType <OkObjectResult>(result);
            var returnValue = Assert.IsType <CommissionEdit>(okResult.Value);

            Assert.Same(commission, returnValue);
        }
        public async Task Index()
        {
            var commission = new OneAdvisor.Model.Commission.Model.Commission.Commission()
            {
                Id = Guid.NewGuid(),
                AmountIncludingVAT = 100,
                VAT = 20,
                CommissionStatementId = Guid.NewGuid(),
                CommissionTypeId      = Guid.NewGuid(),
                PolicyId     = Guid.NewGuid(),
                PolicyNumber = "123456",
                UserId       = Guid.NewGuid()
            };

            var pagedItems = new PagedCommissions()
            {
                TotalItems            = 1,
                SumAmountIncludingVAT = 300,
                SumVAT = 400,
                Items  = new List <OneAdvisor.Model.Commission.Model.Commission.Commission>()
                {
                    commission
                }
            };

            var service     = new Mock <ICommissionService>();
            var authService = TestHelper.MockAuthenticationService(Scope.Branch);

            CommissionQueryOptions queryOptions = null;

            service.Setup(c => c.GetCommissions(It.IsAny <CommissionQueryOptions>()))
            .Callback((CommissionQueryOptions options) => queryOptions = options)
            .ReturnsAsync(pagedItems);

            var controller = new CommissionsController(service.Object, authService.Object);

            var result = await controller.Index("policyNumber", "desc", 15, 2, $"commissionTypeId={commission.CommissionTypeId}");

            Assert.Equal(Scope.Branch, queryOptions.Scope.Scope);
            Assert.Equal("policyNumber", queryOptions.SortOptions.Column);
            Assert.Equal(SortDirection.Descending, queryOptions.SortOptions.Direction);
            Assert.Equal(15, queryOptions.PageOptions.Size);
            Assert.Equal(2, queryOptions.PageOptions.Number);

            Assert.Equal(commission.CommissionTypeId, queryOptions.CommissionTypeId.Single());

            var okResult    = Assert.IsType <OkObjectResult>(result);
            var returnValue = Assert.IsType <PagedCommissions>(okResult.Value);

            Assert.Same(pagedItems, returnValue);
        }
        public async Task Update()
        {
            var commission = new CommissionEdit()
            {
                Id = Guid.NewGuid(),
                AmountIncludingVAT = 100,
                VAT = 20,
                CommissionStatementId = Guid.NewGuid(),
                CommissionTypeId      = Guid.NewGuid(),
                PolicyId   = Guid.NewGuid(),
                SourceData = null
            };

            var service     = new Mock <ICommissionService>();
            var authService = TestHelper.MockAuthenticationService(Scope.Branch);

            var result = new Result()
            {
                Success = true
            };

            ScopeOptions   options = null;
            CommissionEdit updated = null;

            service.Setup(c => c.UpdateCommission(It.IsAny <ScopeOptions>(), It.IsAny <CommissionEdit>()))
            .Callback((ScopeOptions o, CommissionEdit i) =>
            {
                updated = i;
                options = o;
            })
            .ReturnsAsync(result);

            var controller = new CommissionsController(service.Object, authService.Object);

            var actual = await controller.Update(commission.Id.Value, commission);

            Assert.Same(commission, updated);
            Assert.Equal(Scope.Branch, options.Scope);

            var okResult    = Assert.IsType <OkObjectResult>(actual);
            var returnValue = Assert.IsType <Result>(okResult.Value);

            Assert.Same(result, returnValue);
        }