public void Add_PassedDate_Successful()
        {
            // arrange/given
            var request = DiaryTestData.CreateCreationRequest(date: DateTime.Now.AddDays(-1));

            // act/when
            var result = _unitUnderTest.Add(request);

            // assert/than
            Assert.IsFalse(result);
        }
        public void Create_MissingCar_Fails()
        {
            var car = VehiclesTestData.CreateCar();

            _repoMock.Setup(r => r.Exists(car.Name)).Returns(false);

            var request = DiaryTestData.CreateCreationDto(car.Name);

            var result = _unitUnderTest.Create(request);

            Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode);
        }
        public void Create_ExistingCar_Passes()
        {
            var car = VehiclesTestData.CreateCar();

            _repoMock.Setup(r => r.Exists(car.Name)).Returns(true);


            var request = DiaryTestData.CreateCreationDto(car.Name);

            var result = _unitUnderTest.Create(request);

            Assert.AreEqual(HttpStatusCode.Accepted, result.StatusCode);
        }
        public void Add_MileageSmallerThanLastKnown_Rejected()
        {
            // arrange/given
            var diaryItem = DiaryTestData.CreateDiaryItem();

            _diaryRepo.Setup(m => m.GetAll()).Returns(new[] { diaryItem });

            var request = DiaryTestData.CreateCreationRequest(diaryItem.Car, diaryItem.Mileage - 1);

            // act/when
            var result = _unitUnderTest.Add(request);

            // assert/than
            Assert.IsFalse(result);
        }
        public void Add_MileageSmallerThanPreviousDate_Rejected()
        {
            // arrange/given
            var knownDate = DateTime.Now.AddDays(-2);
            var diaryItem = DiaryTestData.CreateDiaryItem(timestamp: knownDate);

            _diaryRepo.Setup(m => m.GetAll()).Returns(new[] { diaryItem });
            var request = DiaryTestData.CreateCreationRequest(
                diaryItem.Car,
                diaryItem.Mileage - 1,
                diaryItem.DateTime.AddDays(1));

            // act/when
            var result = _unitUnderTest.Add(request);

            // assert/than
            Assert.IsFalse(result);
        }
        public void Add_MileageHigherBetweenOtherEvents_Success()
        {
            // arrange/given
            var knownDate = DateTime.Now.AddDays(-2);
            var prevItem  = DiaryTestData.CreateDiaryItem(timestamp: knownDate);
            var nextItem  = DiaryTestData.CreateDiaryItem(
                car: prevItem.Car,
                mileage: prevItem.Mileage + 2,
                timestamp: knownDate.AddDays(2));

            _diaryRepo.Setup(m => m.GetAll()).Returns(new[] { prevItem, nextItem });
            var request = DiaryTestData.CreateCreationRequest(
                prevItem.Car,
                prevItem.Mileage + 1,
                prevItem.DateTime.AddDays(1));

            // act/when
            var result = _unitUnderTest.Add(request);

            // assert/than
            Assert.IsFalse(result);
        }