public void ShouldChangeStatusOfDelegation() { var del = new Delegation() { Id = 1, DelegationStatusId = 1 }; var delWithAccounant = new Delegation() { Id = 2, DelegationStatusId = 3, AccoutantApprovedDate = DateTime.Now }; var config = new MapperConfiguration(cfg => { cfg.AddProfile(new MappingProfile()); }); var mapper = config.CreateMapper(); var delRepo = new Mock <IDelegationRepository>(); delRepo.Setup(d => d.GetDelegationById(1)).Returns(del); delRepo.Setup(d => d.GetDelegationById(2)).Returns(delWithAccounant); var vehRepo = new Mock <IVehicleRepository>(); var empRepo = new Mock <IEmployeeRepository>(); var delServ = new DelegationService(delRepo.Object, empRepo.Object, vehRepo.Object, mapper); var delShouldBeChanged = delServ.ChangeStatusOfDelegation(1, 2); var delShouldNotBeChanged = delServ.ChangeStatusOfDelegation(1, 1); // the same status var delShouldNotBeChangeAccountantDate = delServ.ChangeStatusOfDelegation(1, 4); // try to change status to paid without accountant acceptance var delShouldBeChangedAccounantDate = delServ.ChangeStatusOfDelegation(2, 4); // try to change status to paid with accounant accpetnace delShouldBeChanged.Should().BeTrue(); delShouldNotBeChanged.Should().BeFalse(); delShouldNotBeChangeAccountantDate.Should().BeFalse(); delShouldBeChangedAccounantDate.Should().BeTrue(); }