public async Task Create_Post_ModelIsInvalid_SetViewBagEmployees()
        {
            Mock <AnnualLeaveService> almock = new Mock <AnnualLeaveService>();

            almock.Setup(m => m.CreateAsync(It.IsAny <AnnualLeaveDTO>())).Throws(new ValidationException("", ""));
            Mock <EmployeeService> emock = new Mock <EmployeeService>();

            emock.Setup(m => m.GetAllAsync()).ReturnsAsync(new EmployeeDTO[] {
                new EmployeeDTO()
                {
                    Id = 2, LastName = "Петров", FirstName = "Петр", Patronymic = "Петрович", Post = new PostDTO {
                        Department = new DepartmentDTO {
                            DepartmentName = "IT"
                        }
                    }
                }
            });
            AnnualLeaveController controller = GetNewAnnualLeaveController(almock.Object, emock.Object);

            ViewResult result = (await controller.Create(null)) as ViewResult;

            SelectListItem item = (result.ViewBag.Employees as SelectList).FirstOrDefault();

            Assert.AreEqual("Петров Петр Петрович [IT]", item.Text);
            Assert.AreEqual("2", item.Value);
        }
        public async Task Create_Post_ModelIsValid_RedirectToIndex()
        {
            Mock <AnnualLeaveService> mock       = new Mock <AnnualLeaveService>();
            AnnualLeaveController     controller = GetNewAnnualLeaveController(mock.Object, null);

            RedirectToRouteResult result = (await controller.Create(null)) as RedirectToRouteResult;

            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
        public async Task Create_Get_NoEmployees_AsksForErrorView()
        {
            Mock <EmployeeService> mock = new Mock <EmployeeService>();

            mock.Setup(m => m.CountAsync()).ReturnsAsync(0);
            AnnualLeaveController controller = GetNewAnnualLeaveController(null, mock.Object);

            ViewResult result = (await controller.Create()) as ViewResult;

            Assert.AreEqual("Error", result.ViewName);
        }
        public async Task Create_Post_ModelIsInvalid_AsksForCreateView()
        {
            Mock <AnnualLeaveService> almock = new Mock <AnnualLeaveService>();

            almock.Setup(m => m.CreateAsync(It.IsAny <AnnualLeaveDTO>())).Throws(new ValidationException("", ""));
            Mock <EmployeeService> emock      = new Mock <EmployeeService>();
            AnnualLeaveController  controller = GetNewAnnualLeaveController(almock.Object, emock.Object);

            ViewResult result = (await controller.Create(null)) as ViewResult;

            Assert.AreEqual("Create", result.ViewName);
        }
        public async Task Create_Post_ModelIsInvalid_RetrievesAnnualLeaveFromModel()
        {
            Mock <AnnualLeaveService> almock = new Mock <AnnualLeaveService>();

            almock.Setup(m => m.CreateAsync(It.IsAny <AnnualLeaveDTO>())).Throws(new ValidationException("", ""));
            Mock <EmployeeService> emock      = new Mock <EmployeeService>();
            AnnualLeaveController  controller = GetNewAnnualLeaveController(almock.Object, emock.Object);

            ViewResult result = (await controller.Create(new AnnualLeaveViewModel {
                Id = 7
            })) as ViewResult;

            AnnualLeaveViewModel model = result.ViewData.Model as AnnualLeaveViewModel;

            Assert.AreEqual(7, model.Id);
        }
        public async Task Create_Get_ExistsEmployees_SetViewBagEmployees()
        {
            Mock <EmployeeService> mock = new Mock <EmployeeService>();

            mock.Setup(m => m.CountAsync()).ReturnsAsync(1);
            mock.Setup(m => m.GetAllAsync()).ReturnsAsync(new EmployeeDTO[] {
                new EmployeeDTO()
                {
                    Id = 2, LastName = "Петров", FirstName = "Петр", Patronymic = "Петрович", Post = new PostDTO {
                        Department = new DepartmentDTO {
                            DepartmentName = "IT"
                        }
                    }
                }
            });
            AnnualLeaveController controller = GetNewAnnualLeaveController(null, mock.Object);

            ViewResult result = (await controller.Create()) as ViewResult;

            SelectListItem item = (result.ViewBag.Employees as SelectList).FirstOrDefault();

            Assert.AreEqual("Петров Петр Петрович [IT]", item.Text);
            Assert.AreEqual("2", item.Value);
        }