1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_AFFILIATIONS_CORE_BROWSER_FAKE_AFFILIATION_API_H_
#define COMPONENTS_AFFILIATIONS_CORE_BROWSER_FAKE_AFFILIATION_API_H_
#include <vector>
#include "base/memory/raw_ptr.h"
#include "components/affiliations/core/browser/affiliation_utils.h"
#include "components/affiliations/core/browser/fake_affiliation_fetcher.h"
namespace affiliations {
// Wraps the fake factory. Manufactures API responses to AffiliationFetcher
// requests based on a set of equivalence classes predefined by the tests.
class FakeAffiliationAPI {
public:
FakeAffiliationAPI();
~FakeAffiliationAPI();
// Adds |affiliated_facets| to the set of equivalence classes that will form
// the basis for calculating the fake API responses.
void AddTestEquivalenceClass(const AffiliatedFacets& affiliated_facets);
// Adds |group| to the array of |groups_| that will form
// the basis for calculating the fake API responses.
void AddTestGrouping(const GroupedFacets& group);
// Returns whether or not there is at least one pending fetch.
bool HasPendingRequest();
// Returns AffiliationFetcher for the next pending fetch;
// or nullptr if there are no pending fetches.
FakeAffiliationFetcher* GetNextAffiliationFetcher();
// Calculates the response to, and completes the next pending fetch, if any,
// with success.
void ServeNextRequest();
// Completes the next pending fetch, if any, with failure.
void FailNextRequest();
// Sets the fetcher factory through which the affiliation fetchers are
// accessed.
void SetFetcherFactory(FakeAffiliationFetcherFactory* fake_fetcher_factory) {
fake_fetcher_factory_ = fake_fetcher_factory;
}
private:
raw_ptr<FakeAffiliationFetcherFactory> fake_fetcher_factory_ = nullptr;
std::vector<AffiliatedFacets> preset_equivalence_relation_;
std::vector<GroupedFacets> groups_;
};
} // namespace affiliations
#endif // COMPONENTS_AFFILIATIONS_CORE_BROWSER_FAKE_AFFILIATION_API_H_
|