public void GetCreateShouldReturnView()
        {
            // Arrange
            var controller = new DrugGroupsController(null, null);

            // Act
            var result = controller.Create();

            // Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <ViewResult>();
            var viewName = result.As <ViewResult>().ViewName;

            viewName.Should().BeNull();
        }
        public async Task PostCreateShouldReturnsViewWithModelWhenModelNameExists()
        {
            // Arrange
            var resultDrugGroup        = new DrugGroup();
            var drugGroupFormModel     = DataHelper.GetDrugGroupFormModel();
            var adminDrugGroupsService = new Mock <IAdminDrugGroupsService>();
            var userManager            = this.GetUserManagerMock();

            adminDrugGroupsService
            .Setup(s => s.CreateAsync(It.IsAny <DrugGroup>()))
            .Callback((DrugGroup model) => { resultDrugGroup = model; })
            .ReturnsAsync(false);

            var controller = new DrugGroupsController(adminDrugGroupsService.Object, userManager.Object);

            // Act
            var result = await controller.Create(drugGroupFormModel);

            // Assert
            result.Should().NotBeNull();
            controller.ModelState[WebConstants.StatusMessage].Errors[0].ErrorMessage.Should().Be(WebConstants.DrugGroupNameExists);
        }
        public async Task PostCreateShouldReturnRedirectWithValidModel()
        {
            // Arrange
            var    resultDrugGroup        = new DrugGroup();
            var    drugGroupFormModel     = DataHelper.GetDrugGroupFormModel();
            string successMessage         = null;
            var    userManager            = this.GetUserManagerMock();
            var    adminDrugGroupsService = new Mock <IAdminDrugGroupsService>();

            adminDrugGroupsService
            .Setup(s => s.CreateAsync(It.IsAny <DrugGroup>()))
            .Callback((DrugGroup model) => { resultDrugGroup = model; })
            .ReturnsAsync(true);

            var tempData = new Mock <ITempDataDictionary>();

            tempData
            .SetupSet(t => t[WebConstants.TempDataSuccessMessageKey] = It.IsAny <string>())
            .Callback((string key, object message) => successMessage = message as string);

            var controller = new DrugGroupsController(adminDrugGroupsService.Object, userManager.Object);

            controller.TempData = tempData.Object;

            // Act
            var result = await controller.Create(drugGroupFormModel);

            // Assert
            resultDrugGroup.Should().NotBeNull();
            resultDrugGroup.Name.Should().Be(drugGroupFormModel.Name);

            successMessage.Should().Be($"Drug group {drugGroupFormModel.Name} successfully created.");

            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Index");
        }