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);
        }
Exemplo n.º 3
0
        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");

        }