Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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;