public async Task BuildsServiceMetricsRequestSuccessfully() { const string startLocation = "TND"; const string endLocation = "OFM"; var startDate = new DateTime(2021, 03, 31, 5, 3, 0); var endDate = new DateTime(2021, 03, 31, 5, 20, 0); var expectedRequest = new ServiceMetricsRequest { FromLocation = startLocation, ToLocation = endLocation, FromTime = "0503", ToTime = "0520", FromDate = "2021-03-31", ToDate = "2021-03-31", Days = Days.Weekday }; var mockHttp = new MockHttpMessageHandler(); mockHttp.When(serviceMetricsUrl.ToString()) .WithContent(JsonConvert.SerializeObject(expectedRequest)) .Respond("application/json", "{}"); var mockclient = mockHttp.ToHttpClient(); var clientFactory = Mock.Of <IHttpClientFactory>(i => i.CreateClient(darwinClientName) == mockclient); var options = Mock.Of <IOptionsMonitor <HistoricServiceUris> >(i => i.CurrentValue == new HistoricServiceUris { ServiceDetails = serviceDetailsUrl, ServiceMetrics = serviceMetricsUrl }); var repository = new HistoricServiceRepository(clientFactory, options); await repository.GetTrainTimes( startDate, endDate, startLocation, endLocation, CancellationToken.None); }
public async Task WhenHistoricServiceCallIsNotSuccessful_ThrowsHistoricServiceException() { var mockHttp = new MockHttpMessageHandler(); mockHttp.When("https://service*") .Respond(HttpStatusCode.BadRequest); var mockclient = mockHttp.ToHttpClient(); var clientFactory = Mock.Of <IHttpClientFactory>(i => i.CreateClient(darwinClientName) == mockclient); var options = Mock.Of <IOptionsMonitor <HistoricServiceUris> >(i => i.CurrentValue == new HistoricServiceUris { ServiceDetails = serviceDetailsUrl, ServiceMetrics = serviceMetricsUrl }); var repository = new HistoricServiceRepository(clientFactory, options); var getTrainTimesTask = repository.GetTrainTimes(DateTime.Now, DateTime.Now, "ABC", "DEF", CancellationToken.None); await Assert.ThrowsAsync <HistoricServiceException>(() => getTrainTimesTask); }
public async Task CallsGetServiceDetailsEndpoint_ForEachRid() { const string startLocation = "TND"; const string endLocation = "OFM"; var startDate = new DateTime(2021, 03, 31, 5, 3, 0); var endDate = new DateTime(2021, 03, 31, 5, 20, 0); var serviceMetricsResponse = new ServiceMetricsResponse { Services = { new Service { ServiceAttributesMetrics = new ServiceAttributesMetrics { Rids ={ "123", "456" } } }, new Service { ServiceAttributesMetrics = new ServiceAttributesMetrics { Rids ={ "789" } } } } }; var serviceDetailsResponse = new ServiceDetailsResponse { ServiceAttributesDetails = new ServiceAttributesDetails { Locations = { new LocationDetail { Location = startLocation }, new LocationDetail { Location = endLocation } } } }; var mockHttp = new MockHttpMessageHandler(); mockHttp.When(serviceMetricsUrl.ToString()) .Respond("application/json", JsonConvert.SerializeObject(serviceMetricsResponse)); var serviceDetailsRequest = mockHttp.When(serviceDetailsUrl.ToString()) .Respond("application/json", JsonConvert.SerializeObject(serviceDetailsResponse)); var mockclient = mockHttp.ToHttpClient(); var clientFactory = Mock.Of <IHttpClientFactory>(i => i.CreateClient(darwinClientName) == mockclient); var options = Mock.Of <IOptionsMonitor <HistoricServiceUris> >(i => i.CurrentValue == new HistoricServiceUris { ServiceDetails = serviceDetailsUrl, ServiceMetrics = serviceMetricsUrl }); var repository = new HistoricServiceRepository(clientFactory, options); await repository.GetTrainTimes( startDate, endDate, startLocation, endLocation, CancellationToken.None); Assert.Equal(3, mockHttp.GetMatchCount(serviceDetailsRequest)); }