예제 #1
0
        public async Task SaveDbShouldCorrectlyGetDataFromQuery()
        {
            // Arrange
            //

            var connectionSettings = _factory.Services.GetRequiredService <IConnectionSettings>();
            var dbConnection       = new DataConnectionFactory(connectionSettings.GetDataProvider(), connectionSettings.BuildConnectionString())
                                     .Create();

            var dataProvider = new PostgresDataProvider(
                TestHelper.GetLoggerMock <PostgresDataProvider>().Object,
                new DataConnectionFactory(connectionSettings),
                MapperConfig.CreateMapper(), null);

            var watchRequest = new WatchRequest
            {
                DeviceId        = "device-id",
                DeviceName      = "device-name",
                Version         = "version",
                CiqVersion      = "ciq-version",
                Framework       = "framework",
                WeatherProvider = "weather-provider",
                DarkskyKey      = "dark-key",
                Lat             = (decimal)1.1,
                Lon             = (decimal)2.2,
                BaseCurrency    = "USD",
                TargetCurrency  = "EUR"
            };

            // Act
            //
            await dataProvider.SaveRequestInfo(watchRequest,
                                               new WeatherInfo { WindSpeed = (decimal)5.5, Temperature = (decimal)4.4 },
                                               new LocationInfo { CityName = "city-name" },
                                               new ExchangeRateInfo { ExchangeRate = (decimal)3.3 });

            // Assert
            //
            var actualDevice = await dbConnection.GetTable <DeviceData>().SingleAsync(d => d.DeviceId == watchRequest.DeviceId);

            var actualRequest = await dbConnection.GetTable <RequestData>().SingleAsync(r => r.DeviceDataId == actualDevice.Id);


            Assert.Equal("device-name", actualDevice.DeviceName);
            Assert.Equal("device-id", actualDevice.DeviceId);


            Assert.Equal(watchRequest.Framework, actualRequest.Framework);
            Assert.Equal(watchRequest.CiqVersion, actualRequest.CiqVersion);
            Assert.Equal(watchRequest.Version, actualRequest.Version);
            Assert.Equal(watchRequest.Lon, actualRequest.Lon);
            Assert.Equal(watchRequest.Lat, actualRequest.Lat);
            Assert.Equal(watchRequest.BaseCurrency, actualRequest.BaseCurrency);
            Assert.Equal(watchRequest.TargetCurrency, actualRequest.TargetCurrency);

            Assert.Equal((decimal)4.4, actualRequest.Temperature);
            Assert.Equal("city-name", actualRequest.CityName);
            Assert.Equal((decimal)3.3, actualRequest.ExchangeRate);
        }
예제 #2
0
 public YAFaceController(
     ILogger <YAFaceController> logger, PostgresDataProvider postgresDataProvider, KafkaProvider kafkaProvider,
     ExchangeRateCacheStrategy exchangeRateCacheStrategy,
     VirtualearthClient virtualearthClient,
     DarkSkyClient darkSkyClient,
     OpenWeatherClient openWeatherClient,
     FaceSettings faceSettings)
 {
     _logger = logger;
     _postgresDataProvider      = postgresDataProvider;
     _kafkaProvider             = kafkaProvider;
     _exchangeRateCacheStrategy = exchangeRateCacheStrategy;
     _virtualearthClient        = virtualearthClient;
     _darkSkyClient             = darkSkyClient;
     _openWeatherClient         = openWeatherClient;
     _faceSettings = faceSettings;
 }
예제 #3
0
        public async Task SameDeviceWithTheSameCoordinatesShouldReturnCity()
        {
            // Arrange
            //
            var connectionSettings = _factory.Services.GetRequiredService <IConnectionSettings>();

            var dataProvider = new PostgresDataProvider(
                TestHelper.GetLoggerMock <PostgresDataProvider>().Object,
                new DataConnectionFactory(connectionSettings),
                MapperConfig.CreateMapper(),
                TestHelper.GetMetricsMock().Object);

            var watchRequest = new WatchRequest
            {
                DeviceId        = "device-id",
                DeviceName      = "device-name",
                Version         = "version",
                CiqVersion      = "ciq-version",
                Framework       = "framework",
                WeatherProvider = "weather-provider",
                DarkskyKey      = "dark-key",
                Lat             = (decimal)1.1,
                Lon             = (decimal)2.2,
                BaseCurrency    = "USD",
                TargetCurrency  = "EUR"
            };


            await dataProvider.SaveRequestInfo(watchRequest,
                                               new WeatherInfo { WindSpeed = (decimal)5.5, Temperature = (decimal)4.4 },
                                               new LocationInfo { CityName = "city-name2" },
                                               new ExchangeRateInfo { ExchangeRate = (decimal)3.3 });


            // Act
            //
            var actualLocationInfo = await dataProvider.LoadLastLocation("device-id", (decimal)1.1, (decimal)2.2);

            // Assert
            //
            Assert.Equal("city-name2", actualLocationInfo.CityName);
            Assert.Equal(RequestStatusCode.Ok, actualLocationInfo.RequestStatus.StatusCode);
        }
예제 #4
0
        public async Task NoLocationShouldReturnNull()
        {
            // Arrange
            //
            var connectionSettings = _factory.Services.GetRequiredService <IConnectionSettings>();

            var dataProvider = new PostgresDataProvider(
                TestHelper.GetLoggerMock <PostgresDataProvider>().Object,
                new DataConnectionFactory(connectionSettings),
                MapperConfig.CreateMapper(),
                TestHelper.GetMetricsMock().Object);

            // Act
            //
            var actualLocationInfo = await dataProvider.LoadLastLocation("device-id", (decimal)1.1, (decimal)2.2);

            // Assert
            //
            Assert.Null(actualLocationInfo);
        }
예제 #5
0
 public TicketModelsFactory(PostgresDataProvider postgreDataProvider)
 {
     this.postgreDataProvider = postgreDataProvider;
 }