public async Task GetNotFound()
        {
            var service = new Mock <ICommissionStatementTemplateService>();

            service.Setup(c => c.GetTemplate(It.IsAny <Guid>()))
            .ReturnsAsync((CommissionStatementTemplateEdit)null);

            var controller = new CommissionStatementTemplateController(service.Object);

            var result = await controller.Get(Guid.NewGuid());

            var notFoundResult = Assert.IsType <NotFoundResult>(result);
        }
        public async Task Index()
        {
            var template = new CommissionStatementTemplate()
            {
                Id        = Guid.NewGuid(),
                CompanyId = Guid.NewGuid(),
                Name      = "Template 1"
            };

            var pagedItems = new PagedItems <CommissionStatementTemplate>()
            {
                TotalItems = 1,
                Items      = new List <CommissionStatementTemplate>()
                {
                    template
                }
            };

            var service = new Mock <ICommissionStatementTemplateService>();

            CommissionStatementTemplateQueryOptions queryOptions = null;

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

            var controller = new CommissionStatementTemplateController(service.Object);

            var result = await controller.Index("Name", "desc", 15, 2, $"CompanyId={template.CompanyId}");

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

            Assert.Equal(template.CompanyId, queryOptions.CompanyId.Single());

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

            Assert.Same(pagedItems, returnValue);
        }
        public async Task Update()
        {
            var template = new CommissionStatementTemplateEdit()
            {
                Id        = Guid.NewGuid(),
                CompanyId = Guid.NewGuid(),
                Name      = "Template 1",
                Config    = new Config()
            };

            var service = new Mock <ICommissionStatementTemplateService>();

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

            CommissionStatementTemplateEdit updated = null;

            service.Setup(c => c.UpdateTemplate(It.IsAny <CommissionStatementTemplateEdit>()))
            .Callback((CommissionStatementTemplateEdit u) =>
            {
                updated = u;
            })
            .ReturnsAsync(result);

            var controller = new CommissionStatementTemplateController(service.Object);

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

            Assert.Same(template, updated);

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

            Assert.Same(result, returnValue);
        }
        public async Task Get()
        {
            var template = new CommissionStatementTemplateEdit()
            {
                Id        = Guid.NewGuid(),
                CompanyId = Guid.NewGuid(),
                Name      = "Template 1",
                Config    = new Config()
            };

            var service = new Mock <ICommissionStatementTemplateService>();

            service.Setup(c => c.GetTemplate(It.Is <Guid>(m => m == template.Id.Value)))
            .ReturnsAsync(template);

            var controller = new CommissionStatementTemplateController(service.Object);

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

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

            Assert.Same(template, returnValue);
        }