public async Task <Result <AvailabilitySearchTaskState> > GetState(Guid searchId, string htId, AgentContext agent) { var settings = await _accommodationBookingSettingsService.Get(agent); var results = await _stateStorage.GetStates(searchId, settings.EnabledConnectors); return(WideAvailabilitySearchState.FromSupplierStates(searchId, results).TaskState); }
private async Task <bool> IsComplete(Guid searchId, AgentContext agent) { var searchSettings = await _accommodationBookingSettingsService.Get(agent); var searchStates = await _stateStorage.GetStates(searchId, searchSettings.EnabledConnectors); var state = WideAvailabilitySearchState.FromSupplierStates(searchId, searchStates); return(state.TaskState is not AvailabilitySearchTaskState.Pending or AvailabilitySearchTaskState.PartiallyCompleted); }
public void Provider_search_results_count_should_sum() { var searchId = new Guid("c273b8eb-5351-424a-a10b-910ed755f6d5"); var supplierStates = new List <(Suppliers, SupplierAvailabilitySearchState)> { (Suppliers.Etg, SupplierAvailabilitySearchState.Completed(searchId, new List <string>(), 10)), (Suppliers.Netstorming, SupplierAvailabilitySearchState.Completed(searchId, new List <string>(), 15)), (Suppliers.Illusions, SupplierAvailabilitySearchState.Completed(searchId, new List <string>(), 144)) }; var wideAvailabilitySearchState = WideAvailabilitySearchState.FromSupplierStates(searchId, supplierStates); Assert.Equal(169, wideAvailabilitySearchState.ResultCount); }
public void Search_state_should_contain_all_errors() { var searchId = new Guid("ae05b78f-4488-4845-9f7d-bad3d4cd177e"); var errors = new[] { "Failed to connect", "Failed to fetch", "Server error" }; var supplierStates = new List <(Suppliers, SupplierAvailabilitySearchState)> { (Suppliers.Etg, SupplierAvailabilitySearchState.Failed(searchId, errors[0])), (Suppliers.Netstorming, SupplierAvailabilitySearchState.Failed(searchId, errors[1])), (Suppliers.Illusions, SupplierAvailabilitySearchState.Failed(searchId, errors[2])) }; var wideAvailabilitySearchState = WideAvailabilitySearchState.FromSupplierStates(searchId, supplierStates); foreach (var error in errors) { Assert.Contains(error, wideAvailabilitySearchState.Error); } }
public void Provider_search_results_with_duplicates_should_sum_unique_results_count() { var searchId = new Guid("c273b8eb-5351-424a-a10b-910ed755f6d5"); var supplierStates = new List <(Suppliers, SupplierAvailabilitySearchState)> { (Suppliers.Etg, SupplierAvailabilitySearchState.Completed(searchId, new List <string?> { "1", "2", "6", null }, 10)), (Suppliers.Netstorming, SupplierAvailabilitySearchState.Completed(searchId, new List <string?> { "1", "3", null }, 15)), (Suppliers.Illusions, SupplierAvailabilitySearchState.Completed(searchId, new List <string?> { "1", "4", "6" }, 144)) }; var wideAvailabilitySearchState = WideAvailabilitySearchState.FromSupplierStates(searchId, supplierStates); Assert.Equal(166, wideAvailabilitySearchState.ResultCount); }
public async Task <Result <AvailabilitySearchTaskState> > GetState(Guid searchId, Guid resultId, AgentContext agent) { var(_, isFailure, selectedResult, error) = await GetSelectedResult(searchId, resultId, agent); if (isFailure) { return(Result.Failure <AvailabilitySearchTaskState>(error)); } var supplierAccommodationIds = new List <SupplierAccommodationId> { new SupplierAccommodationId(selectedResult.Supplier, selectedResult.Result.Accommodation.Id) }; var otherSuppliersAccommodations = await _duplicatesService.GetDuplicateReports(supplierAccommodationIds); var suppliers = otherSuppliersAccommodations .Select(a => a.Key.Supplier) .ToList(); var results = await _wideAvailabilityStorage.GetStates(searchId, suppliers); return(WideAvailabilitySearchState.FromSupplierStates(searchId, results).TaskState); }
public void One_supplier_search_should_return_supplier_state(Suppliers supplier, AvailabilitySearchTaskState supplierTaskState) { var searchId = new Guid("45a364fb-33be-4115-97fe-c94090d86452"); var supplierSearchState = CreateSupplierAvailabilitySearchState(searchId, supplierTaskState); var wideSearchState = WideAvailabilitySearchState.FromSupplierStates(searchId, new[] { (supplier, supplierSearchState: supplierSearchState) });
public bool Equals(WideAvailabilitySearchState other) => Id.Equals(other.Id) && TaskState == other.TaskState && ResultCount == other.ResultCount && Error == other.Error;