public void Add_WhenNewShift_ThenShiftShouldBeAdded() { // Arrange var mockedPublisher = new Mock <IMessagePublisher>(); var mockedRepository = new Mock <IRepository>(); mockedRepository.Setup(m => m.AddShift(It.IsAny <AddShift>())).Returns(Task.FromResult(1)); mockedRepository.Setup(m => m.GetWorker(It.IsAny <int>())) .Returns(Task.FromResult(new Worker() { Id = 1, FirstName = "Jan", LastName = "Hello" })); mockedRepository.Setup(m => m.GetShiftsPerWorker(It.IsAny <int>())) .Returns(Task.FromResult((IList <Shift>) new List <Shift>())); var controller = new ShiftController(mockedRepository.Object, mockedPublisher.Object); var newShift = new AddShift() { Day = new DateTime(2020, 1, 1), Type = ShiftType.ShiftFrom0To8, WorkerId = 1 }; // Act var result = controller.AddAsync(newShift); var okResult = result.Result as OkObjectResult; // Assert Assert.IsNotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); Assert.AreEqual(1, okResult.Value); mockedPublisher.Verify(m => m.SendMessageShiftCreated(It.IsAny <Shift>()), Times.Once); }
public void Add_WhenNewShiftWithSameOrCloseTimes_ThenShiftShouldNotBeAdded(int year, int month, int day, ShiftType type, int workerId) { // Arrange var mockedPublisher = new Mock <IMessagePublisher>(); var mockedRepository = new Mock <IRepository>(); var shift = new Shift() { Day = new DateTime(year, month, day), Type = type, WorkerId = workerId }; IList <Shift> list = new List <Shift>(); list.Add(shift); mockedRepository.Setup(m => m.AddShift(It.IsAny <AddShift>())).Returns(Task.FromResult(1)); mockedRepository.Setup(m => m.GetWorker(It.IsAny <int>())) .Returns(Task.FromResult(new Worker() { Id = 1, FirstName = "Jan", LastName = "Hello" })); mockedRepository.Setup(m => m.GetShiftsPerWorker(It.IsAny <int>())).Returns(Task.FromResult(list)); var controller = new ShiftController(mockedRepository.Object, mockedPublisher.Object); var newShift = new AddShift() { Day = new DateTime(2020, 2, 2), Type = ShiftType.ShiftFrom0To8, WorkerId = 1 }; // Act var result = controller.AddAsync(newShift); // Assert var exception = (AggregateException)result.Exception; Assert.IsNotNull(exception); }
public Task <int> AddShift(AddShift shift) { var highestId = _shifts.Count == 0 ? 0 :_shifts.Max(m => m.Id); var entity = _mapper.Map <ShiftEntity>(shift); entity.Id = highestId + 1; _shifts.Add(entity); return(Task.FromResult(entity.Id)); }
public async Task <IActionResult> AddAsync(AddShift shift) { var worker = _repository.GetWorker(shift.WorkerId); if (worker.Result != null) { var shiftsExist = WorkerHasSameOrPreviousOrNextShift(shift.WorkerId, shift.Day, shift.Type); if (!shiftsExist) { var id = _repository.AddShift(shift); if (id.Result > 0) { var newShift = _repository.GetShift(id.Result); await _messagePublisher.SendMessageShiftCreated(newShift.Result); return(Ok(id.Result)); } else { var error = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("Overlapping shift exists", System.Text.Encoding.UTF8, "text/plain"), StatusCode = HttpStatusCode.NotFound }; throw new HttpResponseException(error); } } else { var error = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("Shift same, previous ot next exists", System.Text.Encoding.UTF8, "text/plain"), StatusCode = HttpStatusCode.BadRequest }; throw new HttpResponseException(error); } } else { var response = new HttpResponseMessage(HttpStatusCode.NotFound) { Content = new StringContent("Worker doesn't exist", System.Text.Encoding.UTF8, "text/plain"), StatusCode = HttpStatusCode.NotFound }; throw new HttpResponseException(response); } }
public void AddShift() { shift s = new shift(); AddShift addWindow = new AddShift(); s.end_time = DateTime.Now; s.start_time = DateTime.Now; // Sets the window's context and gives it the types available, that aren't deleted addWindow.DataContext = new { shift = s, employees = dataHandler.GetEntities().employee.ToList().FindAll(type => { return !type.deleted; }) }; addWindow.ShowDialog(); try { dataHandler.AddOrUpdate(s); } catch (Exception e) { System.Windows.MessageBox.Show("Error: " + e.Message); } NotifyOfPropertyChange("Shifts"); }
public void Modify(shift s) { AddShift addWindow = new AddShift(); // Sets the window's context and gives it the types available, that aren't deleted addWindow.DataContext = new { shift = s, employees = dataHandler.GetEntities().employee.ToList().FindAll(type => { return !type.deleted; }) }; if (addWindow.ShowDialog() == true) { try { dataHandler.AddOrUpdate(s); } catch (Exception e) { System.Windows.MessageBox.Show("Error: " + e.Message); } } else { ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dataHandler.GetEntities()).ObjectContext.Refresh(System.Data.Entity.Core.Objects.RefreshMode.StoreWins, s); } NotifyOfPropertyChange("Shifts"); }