Example #1
0
        ///<inheritdoc/>
        public DetectedLicensePlate InsertNewDetectedPlate(string plateNumber, DateTime detectedDateTime, int camId,
                                                           string imgUrl, double confidence)
        {
            if (!plateNumber.IsValidPlateNumber())
            {
                throw new ArgumentException(Resources.Error_PlateNumberFomatInvalid);
            }

            if (confidence < 0 || confidence > 100)
            {
                // It seems like I can't edit resource file on Rider
                throw new ArgumentException(string.Format($"The confidence parameter must be between 0 and 100, is: {confidence}"));
            }
            var detectedPlateToInsert = new DetectedLicensePlate()
            {
                PlateNumber      = plateNumber,
                DetectedDateTime = detectedDateTime,
                CamId            = camId,
                ImgUrl           = imgUrl,
                Confidence       = confidence
            };

            using (var ctx = _dbContextFactory.BuildHucaresContext())
            {
                ctx.DetectedLicensePlates.Add(detectedPlateToInsert);
                ctx.SaveChanges();
            }

            return(detectedPlateToInsert);
        }
        public void GetAllActiveDetectedPlatesByPlateNumber_WithEndDateAfterMLP_ShouldReturn()
        {
            //Arrange
            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                Id = 0, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 10, 10)
            };

            var fakeDetectedPlateList = new List <DetectedLicensePlate>()
            {
                expectedDetectedPlate,
                new DetectedLicensePlate()
                {
                    Id = 2, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 09, 10)
                },
                new DetectedLicensePlate()
                {
                    Id = 3, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 11, 10)
                }
            };

            var fakeMissingPlateList = new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    Id                  = 0,
                    PlateNumber         = expectedDetectedPlate.PlateNumber,
                    SearchStartDateTime = new DateTime(2018, 10, 05),
                    SearchEndDateTime   = new DateTime(2018, 10, 15)
                }
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlateList.AsQueryable());

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

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

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

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

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

            A.CallTo(() => fakeMissingPlateHelper.GetPlateRecordByPlateNumber(expectedDetectedPlate.PlateNumber))
            .Returns(fakeMissingPlateList);

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var result = detectedPlateHelper.GetAllActiveDetectedPlatesByPlateNumber(plateNumber: expectedDetectedPlate.PlateNumber,
                                                                                     endDateTime: new DateTime(2018, 11, 25)).ToList();

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustHaveHappened();
            result.Count().ShouldBe(1);
            result.FirstOrDefault().ShouldBe(expectedDetectedPlate);
        }
        public void DeletePlatesOlderThanDatetime_WithCorrectDateWithMissingNumber_ShouldReturn()
        {
            //Arrange
            var expectedRemainingDetectedLicensePlate = new DetectedLicensePlate()
            {
                DetectedDateTime = new DateTime(2018, 09, 10), PlateNumber = "FFF999"
            };
            var expectedDeletedDetectedLicensePlate = new DetectedLicensePlate()
            {
                DetectedDateTime = new DateTime(2018, 09, 10), PlateNumber = "ABC123"
            };

            var fakeDetectedPlatesList = new List <DetectedLicensePlate>()
            {
                expectedRemainingDetectedLicensePlate,
                expectedDeletedDetectedLicensePlate
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlatesList.AsQueryable());

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

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

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

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

            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords())
            .Returns(new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    PlateNumber = expectedRemainingDetectedLicensePlate.PlateNumber
                }
            });

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var deletedPlates = detectedPlateHelper.DeletePlatesOlderThanDatetime(new DateTime(2018, 10, 01)).ToList();

            //Assert
            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates).MustHaveHappened();
            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords()).MustHaveHappened();

            deletedPlates.Count.ShouldBe(1);
            deletedPlates.FirstOrDefault().ShouldBe(expectedDeletedDetectedLicensePlate);

            fakeHucaresContext.DetectedLicensePlates.FirstOrDefault()
            .ShouldBe(expectedRemainingDetectedLicensePlate);
        }
        public void GetAllDetectedPlatesByCamera_WithDates_ShouldReturn()
        {
            //Arrange
            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                Id = 0, CamId = 0, DetectedDateTime = new DateTime(2018, 10, 10)
            };

            var fakeDetectedPlateList = new List <DetectedLicensePlate>()
            {
                expectedDetectedPlate,
                new DetectedLicensePlate()
                {
                    Id = 1, CamId = 0, DetectedDateTime = new DateTime(2018, 09, 10)
                },
                new DetectedLicensePlate()
                {
                    Id = 2, CamId = 0, DetectedDateTime = new DateTime(2018, 11, 30)
                },
                new DetectedLicensePlate()
                {
                    Id = 3, CamId = 1, DetectedDateTime = new DateTime(2018, 10, 10)
                }
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlateList.AsQueryable());

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

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

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

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

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();
            var detectedPlateHelper    = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var result = detectedPlateHelper.GetAllDetectedPlatesByCamera(cameraId: expectedDetectedPlate.CamId,
                                                                          startDateTime: new DateTime(2018, 10, 05), endDateTime: new DateTime(2018, 10, 15)).ToList();

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustHaveHappened();
            result.Count().ShouldBe(1);
            result.FirstOrDefault().ShouldBe(expectedDetectedPlate);
        }
        public void InsertNewDetectedPlate_WhenAllInfoCorrect_ShouldSucceedAndReturn()
        {
            //Arrange
            var fakeIQueryable = new List <DetectedLicensePlate>().AsQueryable();
            var fakeDbSet      = A.Fake <DbSet <DetectedLicensePlate> >();

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

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

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

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

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();
            var detectedPlateHelper    = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                PlateNumber      = "ABC001",
                DetectedDateTime = new DateTime(2018, 09, 29),
                CamId            = 1,
                ImgUrl           = "http://localhost:6969/images/cam01_21080929_235959",
                Confidence       = 75.75
            };

            var result = detectedPlateHelper.InsertNewDetectedPlate(expectedDetectedPlate.PlateNumber,
                                                                    expectedDetectedPlate.DetectedDateTime, expectedDetectedPlate.CamId, expectedDetectedPlate.ImgUrl,
                                                                    expectedDetectedPlate.Confidence);

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

            A.CallTo(() => fakeDbSet.Add(result))
            .MustHaveHappened();

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

            result.ShouldBe(expectedDetectedPlate);
        }
        public void GetAllDetectedMissingPlates_ShouldReturn()
        {
            //Arrange

            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                Id    = 1, PlateNumber = "ABC002", DetectedDateTime = new DateTime(2018, 09, 30),
                CamId = 2, ImgUrl = "http://localhost:6969/images", Confidence = 0.80
            };

            var fakeDetectedPlateList = new List <DetectedLicensePlate>()
            {
                expectedDetectedPlate,
                new DetectedLicensePlate()
                {
                    Id    = 0, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 09, 29),
                    CamId = 1, ImgUrl = "http://localhost:6969/images", Confidence = 80
                },
                new DetectedLicensePlate()
                {
                    Id    = 2, PlateNumber = "ABC003", DetectedDateTime = new DateTime(2018, 09, 30),
                    CamId = 2, ImgUrl = "http://localhost:6969/images", Confidence = 90.0
                }
            };

            var fakeMissingPlateList = new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    Id                  = 0,
                    PlateNumber         = expectedDetectedPlate.PlateNumber,
                    SearchStartDateTime = new DateTime(2018, 09, 29),
                    SearchEndDateTime   = null,
                    Status              = LicensePlateFoundStatus.NotFound
                }
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlateList.AsQueryable());
            var fakeHucaresContext      = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

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

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

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

            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords())
            .Returns(fakeMissingPlateList);

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var result = detectedPlateHelper.GetAllDetectedMissingPlates();

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustHaveHappened();
            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords()).MustHaveHappened();
            result.Count().ShouldBe(1);
            result.FirstOrDefault().ShouldBe(expectedDetectedPlate);
        }