DefinitelyTyped/types/algoliasearch/algoliasearch-tests.ts
Chris Moyer 562214ee84 SecuredApiOptions can contain any search parameter (#38502)
And restrictIndexes can be an array of strings, rather than just a
single string

See https://www.algolia.com/doc/api-reference/api-methods/generate-secured-api-key/
2019-09-23 10:19:26 -07:00

250 lines
6.4 KiB
TypeScript

import * as algoliasearch from 'algoliasearch';
import {
ClientOptions,
SynonymOption,
ApiKeyOptions,
SearchSynonymOptions,
SecuredApiOptions,
Index,
Response,
IndexSettings,
QueryParameters,
ApiKey,
MultiResponse,
Client,
} from 'algoliasearch';
import * as algoliasearchLite from 'algoliasearch/lite';
let _algoliaResponse: Response = {
hits: [{}, {}],
page: 0,
nbHits: 12,
nbPages: 6,
hitsPerPage: 2,
processingTimeMS: 32,
query: '',
params: '',
index: '',
exhaustiveFacetsCount: true,
exhaustiveNbHits: false,
};
let _clientOptions: ClientOptions = {
timeout: 12,
protocol: '',
httpAgent: '',
};
let _synonymOption: SynonymOption = {
forwardToReplicas: false,
replaceExistingSynonyms: false,
};
let _algoliaApiKeyOptions: ApiKeyOptions = {
validity: 0,
maxQueriesPerIPPerHour: 0,
indexes: [''],
queryParameters: { attributesToRetrieve: ['algolia'] },
description: '',
};
let _searchSynonymOptions: SearchSynonymOptions = {
query: '',
page: 0,
type: '',
hitsPerPage: 0,
};
let _algoliaSecuredApiOptions: SecuredApiOptions = {
filters: '',
validUntil: 0,
restrictIndices: '',
userToken: '',
};
let _algoliaSecuredApiOptionsAdvanced: SecuredApiOptions = {
filters: '',
validUntil: 0,
restrictIndices: ['', ''],
userToken: '',
attributesToRetrieve: ['foo', 'bar'],
restrictSearchableAttributes: [''],
};
let _algoliaIndexSettings: IndexSettings = {
attributesToIndex: [''],
attributesForFaceting: [''],
unretrievableAttributes: [''],
attributesToRetrieve: [''],
ranking: [''],
customRanking: [''],
replicas: [''],
maxValuesPerFacet: 100,
attributesToHighlight: [''],
attributesToSnippet: [''],
highlightPreTag: '',
highlightPostTag: '',
snippetEllipsisText: '',
restrictHighlightAndSnippetArrays: false,
hitsPerPage: 0,
minWordSizefor1Typo: 0,
minWordSizefor2Typos: 0,
typoTolerance: false,
allowTyposOnNumericTokens: false,
ignorePlurals: false,
disableTypoToleranceOnAttributes: '',
separatorsToIndex: '',
queryType: 'prefixAll',
removeWordsIfNoResults: '',
advancedSyntax: false,
optionalWords: [''],
removeStopWords: [''],
disablePrefixOnAttributes: [''],
disableExactOnAttributes: [''],
exactOnSingleWordQuery: '',
alternativesAsExact: ['ignorePlurals'],
attributeForDistinct: '',
distinct: false,
numericAttributesToIndex: [''],
allowCompressionOfIntegerArray: false,
altCorrections: [{}],
minProximity: 0,
placeholders: { '': [''] },
camelCaseAttributes: [''],
sortFacetValuesBy: 'count',
queryLanguages: ['fr', 'es'],
paginationLimitedTo: 500,
};
let _algoliaQueryParameters: QueryParameters = {
query: '',
filters: '',
attributesToRetrieve: [''],
restrictSearchableAttributes: [''],
facets: [''],
facetingAfterDistinct: true,
maxValuesPerFacet: 2,
attributesToHighlight: [''],
attributesToSnippet: [''],
highlightPreTag: '',
highlightPostTag: '',
snippetEllipsisText: '',
restrictHighlightAndSnippetArrays: false,
hitsPerPage: 0,
page: 0,
offset: 0,
length: 0,
minWordSizefor1Typo: 0,
minWordSizefor2Typos: 0,
typoTolerance: false,
allowTyposOnNumericTokens: false,
ignorePlurals: false,
disableTypoToleranceOnAttributes: [''],
aroundLatLng: '',
aroundLatLngViaIP: true,
aroundRadius: 0,
aroundPrecision: 0,
minimumAroundRadius: 0,
insideBoundingBox: [[0]],
queryType: 'prefixAll',
insidePolygon: [[0]],
removeWordsIfNoResults: 'firstWords',
advancedSyntax: false,
optionalWords: [''],
removeStopWords: [''],
disableExactOnAttributes: [''],
exactOnSingleWordQuery: 'attribute',
alternativesAsExact: ['ignorePlurals'],
distinct: 0,
getRankingInfo: false,
numericAttributesToIndex: [''],
numericAttributesForFiltering: [''],
numericFilters: [''],
tagFilters: [''],
facetFilters: ['', ['']],
analytics: false,
clickAnalytics: true,
analyticsTags: [''],
synonyms: true,
replaceSynonymsInHighlight: false,
minProximity: 0,
sortFacetValuesBy: 'alpha',
};
let _apiKey: ApiKey = {
value: '0eb3e6308abccdf9b67d70ddacb418b4',
createdAt: 1513462891,
acl: ['search'],
validity: 0,
};
let client: Client = algoliasearch('', '');
let index: Index = client.initIndex('');
let search = index.search({ query: '' });
index.search({ query: '' }, (err, res) => {});
// partialUpdateObject
index.partialUpdateObject({}, () => {});
index.partialUpdateObject({}, false, () => {});
index.partialUpdateObject({}).then(() => {});
index.partialUpdateObject({}, false).then(() => {});
// partialUpdateObjects
index.partialUpdateObjects([{}], () => {});
index.partialUpdateObjects([{}], false, () => {});
index.partialUpdateObjects([{}]).then(() => {});
index.partialUpdateObjects([{}], false).then(() => {});
let indexName: string = index.indexName;
// complete copy
client.copyIndex('from', 'to').then(() => {});
client.copyIndex('from', 'to', () => {});
// with scope
client.copyIndex('from', 'to', ['settings']).then(() => {});
client.copyIndex('from', 'to', ['synonyms', 'rules'], () => {});
// Browsing
const browser = index.browseAll();
index.browseAll('query');
index.browseAll('', {
filters: 'dog',
});
let hits: Object[] = [];
browser.on('result', function onResult(content) {
hits = hits.concat(content.hits);
});
browser.on('end', function onEnd() {
const _message = `We got ${hits.length} hits`;
});
browser.on('error', function onError(err) {
throw err;
});
browser.stop();
index.setSettings({ hitsPerPage: 10 }, () => {});
index.setSettings({ hitsPerPage: 10 }, { forwardToReplicas: true }, () => {});
index.setSettings({ hitsPerPage: 10 }).then(() => {});
index.setSettings({ hitsPerPage: 10 }, { forwardToReplicas: true }).then(() => {});
index.browse('', {
advancedSyntax: false,
attributesToRetrieve: ['dogs'],
});
client.copyIndex('from', 'to', ['settings']).then(() => {});
client.copyIndex('from', 'to', ['synonyms', 'rules'], () => {});
const liteClient: algoliasearchLite.Client = algoliasearchLite('', '');
liteClient.search([], (err: Error, res: MultiResponse) => {});
liteClient.search([]).then((res: MultiResponse) => {});
type Res = { zipzop: true };
liteClient.search<Res>([]).then((res: MultiResponse<Res>) => {});