Esempio n. 1
0
        public MissingLicensePlate InsertPlateRecord(string plateNumber, DateTime searchStartDatetime)
        {
            if (!plateNumber.IsValidPlateNumber())
            {
                throw new ArgumentException(Resources.Error_PlateNumberFomatInvalid);
            }

            var missingPlateObj = new MissingLicensePlate()
            {
                PlateNumber         = plateNumber,
                SearchStartDateTime = searchStartDatetime,
                Status = LicensePlateFoundStatus.Searching
            };

            using (var ctx = _dbContextFactory.BuildHucaresContext())
            {
                if (ctx.MissingLicensePlates.Any(m => m.PlateNumber == plateNumber &&
                                                 m.Status == LicensePlateFoundStatus.Searching))
                {
                    throw new Exception(Resources.Error_MissingPlateExists);
                }

                ctx.MissingLicensePlates.Add(missingPlateObj);
                ctx.SaveChanges();
            }

            return(missingPlateObj);
        }
Esempio n. 2
0
        public async Task DeletePlateByNumber_WhenCalled_ShouldCallHelper()
        {
            //Arrange
            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            var expectedPlateNumber      = "RRR587";
            var expectedMissingPlateInfo = new MissingLicensePlate()
            {
                PlateNumber = expectedPlateNumber
            };

            A.CallTo(() => fakeMissingPlateHelper.DeletePlateByNumber(expectedPlateNumber))
            .Returns(expectedMissingPlateInfo);

            var mlpController = new MissingPlateController()
            {
                MissingPlateHelper = fakeMissingPlateHelper, Request = new HttpRequestMessage()
            };

            //Act
            var result = mlpController.DeletePlateRecordByNumber(expectedPlateNumber);

            //Assert
            A.CallTo(() => fakeMissingPlateHelper.DeletePlateByNumber(expectedPlateNumber))
            .MustHaveHappenedOnceExactly();

            var httpResponse = await result.ExecuteAsync(new CancellationToken());

            var jsonContent = await httpResponse.Content.ReadAsStringAsync();

            var expectedJson = JsonConvert.SerializeObject(expectedMissingPlateInfo);

            jsonContent.ShouldBe(expectedJson);
        }
Esempio n. 3
0
        public IHttpActionResult Post([FromBody] MLPPostParams mlpParams)
        {
            var mlp = new MissingLicensePlate()
            {
                PlateNumber         = mlpParams.PlateNumber,
                SearchStartDateTime = mlpParams.SearchStartDateTime
            };

            using (var ctx = DbContextFactory.BuildHucaresContext())
            {
                ctx.MissingLicensePlates.Add(mlp);
                ctx.SaveChanges();
            }
            return(Json(mlp));
        }
Esempio n. 4
0
        public void DeletePlateByNumber_WhenPlateNumberExist_ShouldSucceed()
        {
            //Arrange
            var missingPlateObj = new MissingLicensePlate()
            {
                PlateNumber = "ZOO555"
            };
            var fakeIQueryable = new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    PlateNumber = "ZZZ123"
                },
                missingPlateObj
            }.AsQueryable();

            var fakeDbSet = StorageTestsUtil.SetupFakeDbSet(fakeIQueryable);

            var fakeHucaresContext = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.MissingLicensePlates)
            .Returns(fakeDbSet);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var missingPlateHelper = new MissingPlateHelper(fakeDbContextFactory);

            //Act
            var result = missingPlateHelper.DeletePlateByNumber(missingPlateObj.PlateNumber);

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => fakeDbSet.Remove(missingPlateObj))
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => fakeHucaresContext.SaveChanges())
            .MustHaveHappenedOnceExactly();

            result.ShouldBe(missingPlateObj);
        }
Esempio n. 5
0
        public void UpdatePlateRecord_WhenRecordWithIdExist_ShouldUpdateRecord()
        {
            //Arrange
            var missingPlateObj = new MissingLicensePlate()
            {
                Id = 1, PlateNumber = "FOF150"
            };
            var fakeIQueryable = new List <MissingLicensePlate>()
            {
                missingPlateObj
            }.AsQueryable();

            var fakeDbSet = StorageTestsUtil.SetupFakeDbSet(fakeIQueryable);

            var fakeHucaresContext = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.MissingLicensePlates)
            .Returns(fakeDbSet);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var missingPlateHelper = new MissingPlateHelper(fakeDbContextFactory);

            //Act
            var expectedPlateNumber = "TRE145";
            var result = missingPlateHelper.UpdatePlateRecord(missingPlateObj.Id, expectedPlateNumber, DateTime.Now);

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => fakeDbSet.Add(A <MissingLicensePlate> .Ignored))
            .MustNotHaveHappened();

            A.CallTo(() => fakeHucaresContext.SaveChanges())
            .MustHaveHappenedOnceExactly();

            result.ShouldBe(missingPlateObj);
            missingPlateObj.PlateNumber.ShouldBe(expectedPlateNumber);
        }
Esempio n. 6
0
        public void MarkFoundPlate_WhenPlateIdExist_ShouldSucceed()
        {
            var missingPlateObj = new MissingLicensePlate()
            {
                Id     = 1, SearchStartDateTime = new DateTime(2018, 05, 08),
                Status = LicensePlateFoundStatus.NotFound
            };
            //Arrange
            var fakeIQueryable = new List <MissingLicensePlate>()
            {
                missingPlateObj
            }.AsQueryable();
            var fakeDbSet = StorageTestsUtil.SetupFakeDbSet(fakeIQueryable);

            var fakeHucaresContext = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.MissingLicensePlates)
            .Returns(fakeDbSet);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var expectedSearch = LicensePlateFoundStatus.Found;

            var missingPlateHelper = new MissingPlateHelper(fakeDbContextFactory);
            var result             = missingPlateHelper.MarkFoundPlate(missingPlateObj.Id, DateTime.Now, expectedSearch);

            //Act & Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => fakeDbSet.Add(A <MissingLicensePlate> .Ignored))
            .MustNotHaveHappened();

            A.CallTo(() => fakeHucaresContext.SaveChanges())
            .MustHaveHappenedOnceExactly();

            result.ShouldBe(missingPlateObj);
            missingPlateObj.Status.ShouldBe(expectedSearch);
        }
Esempio n. 7
0
        public async Task UpdateMissingPlateRecord_WhenCalled_ShouldCallHelper()
        {
            //Arrange
            var expectedPlateNumber    = "BAA254";
            var expectedSearchDateTime = new DateTime(2018, 05, 17);
            var expectedDataModel      = new PostPlateRecordDataModel()
            {
                PlateNumber         = expectedPlateNumber,
                SearchStartDateTime = expectedSearchDateTime,
            };

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            var expectedId = 5;
            var expectedMissingPlateInfo = new MissingLicensePlate()
            {
                Id = expectedId
            };

            A.CallTo(() => fakeMissingPlateHelper.UpdatePlateRecord(expectedId, expectedPlateNumber, expectedSearchDateTime))
            .Returns(expectedMissingPlateInfo);

            var mlpController = new MissingPlateController()
            {
                MissingPlateHelper = fakeMissingPlateHelper, Request = new HttpRequestMessage()
            };

            //Act
            var result = mlpController.UpdatePlateRecordById(expectedId, expectedDataModel);

            //Assert
            A.CallTo(() => fakeMissingPlateHelper.UpdatePlateRecord(expectedId, expectedPlateNumber, expectedSearchDateTime))
            .MustHaveHappenedOnceExactly();

            var httpResponse = await result.ExecuteAsync(new CancellationToken());

            var jsonContent = await httpResponse.Content.ReadAsStringAsync();

            var expectedJson = JsonConvert.SerializeObject(expectedMissingPlateInfo);

            jsonContent.ShouldBe(expectedJson);
        }
Esempio n. 8
0
        public async Task MarkFoundMissingPlate_WhenCalled_ShouldCallHelper()
        {
            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            var expectedId        = 5;
            var requestedDateTime = new DateTime(2018, 05, 15);
            var expectedSearch    = LicensePlateFoundStatus.Found;
            var expectedDataModel = new MarkFoundRecordDataModel()
            {
                EndDateTime = new DateTime(2018, 05, 15),
                Status      = LicensePlateFoundStatus.Found,
            };
            var expectedMissingPlateInfo = new MissingLicensePlate()
            {
                Id = expectedId
            };

            A.CallTo(() => fakeMissingPlateHelper.MarkFoundPlate(expectedId, requestedDateTime, expectedSearch))
            .Returns(expectedMissingPlateInfo);

            var mlpController = new MissingPlateController()
            {
                MissingPlateHelper = fakeMissingPlateHelper, Request = new HttpRequestMessage()
            };
            //Act
            var result = mlpController.MarkFoundMissingPlate(expectedId, expectedDataModel);

            //Assert
            A.CallTo(() => fakeMissingPlateHelper.MarkFoundPlate(expectedId, requestedDateTime, expectedSearch))
            .MustHaveHappenedOnceExactly();

            var httpResponse = await result.ExecuteAsync(new CancellationToken());

            var jsonContent = await httpResponse.Content.ReadAsStringAsync();

            var expectedJson = JsonConvert.SerializeObject(expectedMissingPlateInfo);

            jsonContent.ShouldBe(expectedJson);
        }