Skip to content

Commit e36a4ad

Browse files
author
James Vidler
authored
Merge pull request #26 from agility/additional-unittests
Additional unittests
2 parents fe91261 + ea48bd0 commit e36a4ad

File tree

8 files changed

+123
-13
lines changed

8 files changed

+123
-13
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@agility/content-fetch",
3-
"version": "0.4.5",
3+
"version": "0.4.6",
44
"description": "JavaScript library for the Agility Fetch API (node and browser)",
55
"main": "dist/agility-content-fetch.node.js",
66
"scripts": {

src/api-client.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import getSitemapNested from './methods/getSitemapNested'
55
import getContentItem from './methods/getContentItem'
66
import getContentList from './methods/getContentList'
77
import getPage from './methods/getPage'
8+
import FilterOperators from './types/FilterOperator'
9+
import FilterLogicOperators from './types/FilterLogicOperator'
10+
import SortDirections from './types/SortDirection'
811

912
const defaultConfig = {
1013
baseUrl: null,
@@ -73,7 +76,12 @@ export default function createClient(userConfig) {
7376
getSitemapNested: getSitemapNested,
7477
getContentItem: getContentItem,
7578
getContentList: getContentList,
76-
getPage: getPage
79+
getPage: getPage,
80+
types: {
81+
FilterOperators: FilterOperators,
82+
FilterLogicOperators: FilterLogicOperators,
83+
SortDirections: SortDirections
84+
}
7785
}
7886

7987
}

src/methods/getContentList.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import {buildPathUrl, buildRequestUrlPath, buildAuthHeader } from '../utils'
99
* @param {number} [requestParams.take] - The maximum number of items to retrieve in this request. Default is **10**. Maximum allowed is **50**.
1010
* @param {number} [requestParams.skip] - The number of items to skip from the list. Default is **0**. Used for implementing pagination.
1111
* @param {string} [requestParams.sort] - The field to sort the results by. Example *fields.title* or *properties.created*.
12-
* @param {string} [requestParams.direction] - The direction to sort the results by. Default is **asc**. Valid values are **asc**, **desc**.
13-
* @param {Array} [requestParams.filters] - The collection of filters to filter the results by. A filter object contains properties called **property**, **operator**, **value**. Operators can be **eq** Equal To, **ne** Not Equal To, **gt** Greater Than, **gte** Greater Than or Equal To, **lt * @param {Array} [requestParams.filters] - The collection of filters to filter the results by. A filter object contains properties called **property**, **operator**, **value**. Operators can be **eq** Equal To, **ne** Not Equal To, **gt** Greater Than, **gte** Greater Than or Equal To, **lt** Less Than, **lte** Less Than or Equal To, **like** Like (string only)
14-
* @param (string) [requestParams.filtersLogicOperator] - The logic operator to combine multiple filters. **AND** (default), **OR**.
12+
* @param {AgilityFetch.Types.SortDirection} [requestParams.direction] - The direction to sort the results by.
13+
* @param {Array.<AgilityFetch.Types.Filter>} [requestParams.filters] - The collection of filters to filter the results by.
14+
* @param {AgilityFetch.Types.FilterLogicOperator} [requestParams.filtersLogicOperator] - The logic operator to combine multiple filters.
1515
* @returns {Promise<AgilityFetch.Types.ContentList>} - Returns a list of content items.
1616
* @example
1717
*
@@ -28,7 +28,25 @@ import {buildPathUrl, buildRequestUrlPath, buildAuthHeader } from '../utils'
2828
* take: 50,
2929
* skip: 0,
3030
* sort: 'properties.created',
31-
* direction: 'asc'
31+
* direction: api.types.SortDirections.ASC
32+
* })
33+
* .then(function(contentList) {
34+
* console.log(contentList);
35+
* })
36+
* .catch(function(error) {
37+
* console.log(error);
38+
* });
39+
*
40+
* api.getContentList({
41+
* referenceName: 'posts',
42+
* languageCode: 'en-us',
43+
* take: 50,
44+
* skip: 0,
45+
* filters: [
46+
* {property: 'properties.versionID', operator: api.types.FilterOperators.EQUAL_TO, value: '40'},
47+
* {property: 'properties.referenceName', operator: api.types.FilterOperators.LIKE, value: 'posts'}
48+
* ],
49+
* filtersLogicOperator: api.types.FilterLogicOperators.OR
3250
* })
3351
* .then(function(contentList) {
3452
* console.log(contentList);

src/types/Filter.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* Defines a **Filter** for filtering lists.
3+
* @typedef Filter
4+
* @memberof AgilityFetch.Types
5+
* @property {string} property - The property to filter the request on.
6+
* @property {AgilityFetch.Types.FilterOperator} operator - The operator to use for the filter.
7+
* @property {string} value - The value to compare for the property.
8+
*/
9+
10+
11+
12+
13+

src/types/FilterLogicOperator.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* Defines a FilterLogicOperator - Refer to {@link AgilityFetch.Types.FilterLogicOperators} Enum for available Logic Operators.
3+
* @typedef {string} FilterLogicOperator
4+
* @memberOf AgilityFetch.Types
5+
*/
6+
7+
/**
8+
* Enum of FilterLogicOperators.
9+
* @enum {FilterLogicOperator} FilterLogicOperators
10+
* @memberOf AgilityFetch.Types
11+
* @default AND
12+
* @readonly
13+
*/
14+
const FilterLogicOperators = {
15+
/** And */
16+
AND: "and",
17+
/** Or */
18+
OR: "or"
19+
};
20+
21+
export default FilterLogicOperators;

src/types/FilterOperator.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Defines a FilterOperator - Refer to {@link AgilityFetch.Types.FilterOperators} Enum for available Operators.
3+
* @typedef {string} FilterOperator
4+
* @memberOf AgilityFetch.Types
5+
*/
6+
7+
/**
8+
* Enum of FilterOperators.
9+
* @enum {FilterOperator} FilterOperators
10+
* @memberOf AgilityFetch.Types
11+
* @readonly
12+
*/
13+
const FilterOperators = {
14+
/** Equal To */
15+
EQUAL_TO: "eq",
16+
/** Not Equal To */
17+
NOT_EQUAL_TO: "ne",
18+
/** Less Than */
19+
LESS_THAN: "lt",
20+
/** Less Than or Equal To */
21+
LESS_THAN_OR_EQUAL_TO: "lte",
22+
/** Greater Than */
23+
GREATER_THAN: "gt",
24+
/** Greater Than or Equal To */
25+
GREATER_THAN_OR_EQUAL_TO: "gte",
26+
/** Like (string only) */
27+
LIKE: "like"
28+
};
29+
30+
export default FilterOperators;

src/types/SortDirection.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* Defines a Sort Direction - Refer to {@link AgilityFetch.Types.SortDirections} Enum for available Sort Directions.
3+
* @typedef {string} SortDirection
4+
* @memberOf AgilityFetch.Types
5+
*/
6+
7+
/**
8+
* Enum of SortDirections.
9+
* @enum {SortDirection} SortDirections
10+
* @memberOf AgilityFetch.Types
11+
* @default ASC
12+
* @readonly
13+
*/
14+
const SortDirections = {
15+
/** Ascending */
16+
ASC: "asc",
17+
/** Descending */
18+
DESC: "desc",
19+
};
20+
21+
export default SortDirections;

test/getContentList.tests.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import chai from 'chai'
22
const assert = chai.assert;
33
const expect = chai.expect;
4-
54
import { createApiClient, createPreviewApiClient, createCatchedApiClient } from './apiClients.config'
65

76
/*
@@ -190,7 +189,7 @@ describe('getContentList:', function() {
190189
referenceName: 'posts',
191190
languageCode: 'en-us',
192191
sort: 'properties.versionID',
193-
direction: 'desc'
192+
direction: api.types.SortDirections.DESC
194193
})
195194
.then(function(contentList) {
196195
assert.strictEqual(contentList.items[0].contentID, 16);
@@ -206,7 +205,7 @@ describe('getContentList:', function() {
206205
api.getContentList({
207206
referenceName: 'posts',
208207
languageCode: 'en-us',
209-
filters: [{operator: 'eq', value: '40'}]
208+
filters: [{operator: api.types.FilterOperators.EQUAL_TO, value: '40'}]
210209
})
211210
.then(function(contentList) {
212211
done();
@@ -238,7 +237,7 @@ describe('getContentList:', function() {
238237
api.getContentList({
239238
referenceName: 'posts',
240239
languageCode: 'en-us',
241-
filters: [{property: 'properties.versionID', operator: 'eq'}]
240+
filters: [{property: 'properties.versionID', operator: api.types.FilterOperators.EQUAL_TO}]
242241
})
243242
.then(function(contentList) {
244243
done();
@@ -285,8 +284,8 @@ describe('getContentList:', function() {
285284
api.getContentList({
286285
referenceName: 'posts',
287286
languageCode: 'en-us',
288-
filters: [{property: 'properties.versionID', operator: 'eq', value: '40'}, {property: 'properties.referenceName', operator: 'like', value: 'posts'}],
289-
filtersLogicOperator: 'OR'
287+
filters: [{property: 'properties.versionID', operator: api.types.FilterOperators.EQUAL_TO, value: '40'}, {property: 'properties.referenceName', operator: api.types.FilterOperators.LIKE, value: 'posts'}],
288+
filtersLogicOperator: api.types.FilterLogicOperators.OR
290289
})
291290
.then(function(contentList) {
292291
assert.strictEqual(contentList.items[0].contentID, 15);
@@ -301,7 +300,7 @@ describe('getContentList:', function() {
301300
api.getContentList({
302301
referenceName: 'posts',
303302
languageCode: 'en-us',
304-
filters: [{property: 'properties.versionID', operator: 'eq', value: '40'}, {property: 'properties.referenceName', operator: 'like', value: 'posts'}]
303+
filters: [{property: 'properties.versionID', operator: api.types.FilterOperators.EQUAL_TO, value: '40'}, {property: 'properties.referenceName', operator: api.types.FilterOperators.LIKE, value: 'posts'}]
305304
})
306305
.then(function(contentList) {
307306
assert.strictEqual(contentList.items[0].contentID, 16);

0 commit comments

Comments
 (0)