public void TestImageCaptureAndStorage()
 {
     var context = new MyBigBroContext(Settings.Default.connectionString);
     var repository = new MyBigBroRepository();
     var location = new Location(repository);
     var geometry = new Geometry();
     repository.Context = context;
     location.MyBigBroRepository = repository;
     var pointInRangeOfWebCamId4Only = new Point { XCoord = 174.706, YCoord = -36.872 };
     if (location.IsPointWithinWebCamRadiusOfVisibility(pointInRangeOfWebCamId4Only))
     {
         var webCamControl = new WebCamControl(new AwsStorageServiceAgent(), repository, geometry);
         webCamControl.MyBigBroRepository = repository;
         webCamControl.StorageServiceAgent = new AwsStorageServiceAgent();
         var webCams = location.GetWebCamsWithinWebCamRadiusOfVisibility(pointInRangeOfWebCamId4Only);
         foreach (var webCam in webCams)
         {
             webCamControl.WebCam = webCam;
             webCamControl.WebCamImage = new WebCamImage();
             webCamControl.CapturedImage = new CapturedImage();
             webCamControl.CaptureCurrentImage(new WebCamDataRequest());
             webCamControl.StoreCapturedImage();
         }
     }
 }
        public void TestCaptureCurrentImage()
        {
            // arrange
            var webCamControl = new WebCamControl(storageServiceAgent.Object, myBigBroRepository.Object);
            string key = null;
            webCam.SetupProperty(x => x.Url, "Dummy URL - should this be validated?");
            webCamControl.WebCam = webCam.Object;
            storageServiceAgent.Setup(x => x.PutImage(It.IsAny<IWebCamImage>(), out key)).Returns(string.Empty);
            webCamControl.StorageServiceAgent = storageServiceAgent.Object;
            webCamImage.SetupProperty(x => x.Data, Encoding.ASCII.GetBytes(dummyImageData));
            webCamControl.WebCamImage = webCamImage.Object;
            webCamDataRequest.Setup(x => x.GetWebCamResponse(It.IsAny<string>())).Returns(new WebCamWebResponse());
            webCamDataRequest.Setup(x => x.GetWebCamResponseStream(It.IsAny<WebCamWebResponse>())).Returns(new MemoryStream(Encoding.ASCII.GetBytes(dummyImageData)));

            // act
            webCamControl.CaptureCurrentImage(webCamDataRequest.Object);

            // assert
            Assert.NotNull(webCamControl.WebCamImage.Data);
            Assert.AreEqual(webCamControl.WebCamImage.Data.Length, dummyImageData.Length);
        }
        public void TestGetNearestWebCam()
        {
            // arrange
            var webCamControl = new WebCamControl(storageServiceAgent.Object, myBigBroRepository.Object, geometry.Object);
            myBigBroRepository.Setup(x => x.Set<WebCam>())
                .Returns(
                    (new []
                    {
                        new WebCam() {Id = 2, XCoord = 3, YCoord = 5},
                        new WebCam() {Id = 3, XCoord = 2, YCoord = 2},
                        new WebCam() {Id = 4, XCoord = 1, YCoord = 1}
                    }.AsQueryable()));
            webCamControl.MyBigBroRepository = myBigBroRepository.Object;
            webCamControl.CapturedImage = new CapturedImage();

            // act
            var nearestWebCam = webCamControl.GetNearestWebCam(new GeoMarker(){XCoord = 0.5, YCoord = 0.5});

            // assert
            Assert.IsNotNull(nearestWebCam);
            Assert.AreEqual(4, nearestWebCam.Id);
        }
        public void TestStoreCapturedImage()
        {
            // arrange
            var webCamControl = new WebCamControl(storageServiceAgent.Object, myBigBroRepository.Object);
            string key = null;
            webCam.SetupProperty(x => x.Id, 14);
            webCamControl.WebCam = webCam.Object;
            webCamImage.SetupProperty(x => x.Data, Encoding.ASCII.GetBytes(dummyImageData));
            webCamControl.WebCamImage = webCamImage.Object;
            storageServiceAgent.Setup(x => x.PutImage(It.IsAny<IWebCamImage>(), out key)).Returns("test.file");
            webCamControl.StorageServiceAgent = storageServiceAgent.Object;
            myBigBroRepository.Setup(x => x.Add(It.IsAny<ICapturedImage>()));
            myBigBroRepository.Setup(x => x.SaveChanges()).Returns(1);
            webCamControl.MyBigBroRepository = myBigBroRepository.Object;
            webCamControl.CapturedImage = new CapturedImage();

            // act
            webCamControl.StoreCapturedImage();

            // assert
            Assert.NotNull(webCamControl.CapturedImage);
            Assert.AreEqual(webCamControl.CapturedImage.Url, "test.file");
            Assert.AreEqual(webCamControl.CapturedImage.WebCamId, 14);
        }