diff --git a/__tests__/__snapshots__/index.js.snap b/__tests__/__snapshots__/index.js.snap index 3c3af962..151af59b 100644 --- a/__tests__/__snapshots__/index.js.snap +++ b/__tests__/__snapshots__/index.js.snap @@ -54,6 +54,8 @@ Object { "getLookerDone": [Function], }, "lookup": Object { + "getCountriesDone": [Function], + "getCountriesInit": [Function], "getSkillTagsDone": [Function], "getSkillTagsInit": [Function], }, @@ -201,14 +203,17 @@ Object { "countReset": [Function], "debug": [Function], "dir": [Function], + "dirxml": [Function], "error": [Function], "group": [Function], "groupCollapsed": [Function], "groupEnd": [Function], "info": [Function], "log": [Function], + "table": [Function], "time": [Function], "timeEnd": [Function], + "timeLog": [Function], "trace": [Function], "warn": [Function], }, diff --git a/__tests__/actions/__snapshots__/lookup.js.snap b/__tests__/actions/__snapshots__/lookup.js.snap index c29d03c4..8940c5c6 100644 --- a/__tests__/actions/__snapshots__/lookup.js.snap +++ b/__tests__/actions/__snapshots__/lookup.js.snap @@ -3,12 +3,32 @@ exports[`Module exports 1`] = ` Object { "lookup": Object { + "getCountriesDone": [Function], + "getCountriesInit": [Function], "getSkillTagsDone": [Function], "getSkillTagsInit": [Function], }, } `; +exports[`lookup.getCountriesDone 1`] = ` +Object { + "payload": Array [ + Object { + "country": "Afghanistan", + "countryCode": "AFG", + }, + ], + "type": "LOOKUP/GET_COUNTRIES_DONE", +} +`; + +exports[`lookup.getCountriesInit 1`] = ` +Object { + "type": "LOOKUP/GET_COUNTRIES_INIT", +} +`; + exports[`lookup.getSkillTagsDone 1`] = ` Object { "payload": Array [ diff --git a/__tests__/actions/lookup.js b/__tests__/actions/lookup.js index 9bf3a83e..55da0d49 100644 --- a/__tests__/actions/lookup.js +++ b/__tests__/actions/lookup.js @@ -10,9 +10,15 @@ const tag = { status: 'APPROVED', }; +const country = { + country: 'Afghanistan', + countryCode: 'AFG', +}; + // Mock services const mockLookupService = { getTags: jest.fn().mockReturnValue(Promise.resolve([tag])), + getCountries: jest.fn().mockReturnValue(Promise.resolve([country])), }; LookupService.getService = jest.fn().mockReturnValue(mockLookupService); @@ -28,3 +34,14 @@ test('lookup.getSkillTagsDone', async () => { expect(actionResult).toMatchSnapshot(); expect(mockLookupService.getTags).toBeCalled(); }); + +test('lookup.getCountriesInit', async () => { + const actionResult = actions.lookup.getCountriesInit(); + expect(actionResult).toMatchSnapshot(); +}); + +test('lookup.getCountriesDone', async () => { + const actionResult = await redux.resolveAction(actions.lookup.getCountriesDone()); + expect(actionResult).toMatchSnapshot(); + expect(mockLookupService.getCountries).toBeCalled(); +}); diff --git a/__tests__/reducers/__snapshots__/lookup.js.snap b/__tests__/reducers/__snapshots__/lookup.js.snap index 3f923ead..a6e9710e 100644 --- a/__tests__/reducers/__snapshots__/lookup.js.snap +++ b/__tests__/reducers/__snapshots__/lookup.js.snap @@ -1,7 +1,50 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Default reducer Get countries 1`] = ` +Object { + "countries": Array [ + Object { + "country": "Afghanistan", + "countryCode": "AFG", + }, + ], + "loadingCountriesError": false, + "loadingSkillTagsError": true, + "skillTags": Array [ + Object { + "domain": "SKILLS", + "id": 251, + "name": "Jekyll", + "status": "APPROVED", + }, + ], +} +`; + +exports[`Default reducer Get countries error 1`] = ` +Object { + "countries": Array [ + Object { + "country": "Afghanistan", + "countryCode": "AFG", + }, + ], + "loadingCountriesError": true, + "loadingSkillTagsError": true, + "skillTags": Array [ + Object { + "domain": "SKILLS", + "id": 251, + "name": "Jekyll", + "status": "APPROVED", + }, + ], +} +`; + exports[`Default reducer Get skill tags 1`] = ` Object { + "countries": Array [], "loadingSkillTagsError": false, "skillTags": Array [ Object { @@ -16,6 +59,7 @@ Object { exports[`Default reducer Get skill tags error 1`] = ` Object { + "countries": Array [], "loadingSkillTagsError": true, "skillTags": Array [ Object { @@ -30,12 +74,56 @@ Object { exports[`Default reducer Initial state 1`] = ` Object { + "countries": Array [], "skillTags": Array [], } `; +exports[`Factory without server side rendering Get countries 1`] = ` +Object { + "countries": Array [ + Object { + "country": "Afghanistan", + "countryCode": "AFG", + }, + ], + "loadingCountriesError": false, + "loadingSkillTagsError": true, + "skillTags": Array [ + Object { + "domain": "SKILLS", + "id": 251, + "name": "Jekyll", + "status": "APPROVED", + }, + ], +} +`; + +exports[`Factory without server side rendering Get countries error 1`] = ` +Object { + "countries": Array [ + Object { + "country": "Afghanistan", + "countryCode": "AFG", + }, + ], + "loadingCountriesError": true, + "loadingSkillTagsError": true, + "skillTags": Array [ + Object { + "domain": "SKILLS", + "id": 251, + "name": "Jekyll", + "status": "APPROVED", + }, + ], +} +`; + exports[`Factory without server side rendering Get skill tags 1`] = ` Object { + "countries": Array [], "loadingSkillTagsError": false, "skillTags": Array [ Object { @@ -50,6 +138,7 @@ Object { exports[`Factory without server side rendering Get skill tags error 1`] = ` Object { + "countries": Array [], "loadingSkillTagsError": true, "skillTags": Array [ Object { @@ -64,6 +153,7 @@ Object { exports[`Factory without server side rendering Initial state 1`] = ` Object { + "countries": Array [], "skillTags": Array [], } `; diff --git a/__tests__/reducers/lookup.js b/__tests__/reducers/lookup.js index c7baeab9..e7ae3c96 100644 --- a/__tests__/reducers/lookup.js +++ b/__tests__/reducers/lookup.js @@ -7,11 +7,19 @@ const tag = { status: 'APPROVED', }; +const country = { + country: 'Afghanistan', + countryCode: 'AFG', +}; + const mockActions = { lookup: { getSkillTagsInit: mockAction('LOOKUP/GET_SKILL_TAGS_INIT'), getSkillTagsDone: mockAction('LOOKUP/GET_SKILL_TAGS_DONE', [tag]), getSkillTagsDoneError: mockAction('LOOKUP/GET_SKILL_TAGS_DONE', null, 'Unknown error'), + getCountriesInit: mockAction('LOOKUP/GET_COUNTRIES_INIT'), + getCountriesDone: mockAction('LOOKUP/GET_COUNTRIES_DONE', [country]), + getCountriesDoneError: mockAction('LOOKUP/GET_COUNTRIES_DONE', null, 'Unknown error'), }, }; jest.setMock(require.resolve('actions/lookup'), mockActions); @@ -38,6 +46,17 @@ function testReducer() { state = reducer(state, mockActions.lookup.getSkillTagsDoneError()); expect(state).toMatchSnapshot(); }); + + test('Get countries', () => { + state = reducer(state, mockActions.lookup.getCountriesInit()); + state = reducer(state, mockActions.lookup.getCountriesDone()); + expect(state).toMatchSnapshot(); + }); + + test('Get countries error', () => { + state = reducer(state, mockActions.lookup.getCountriesDoneError()); + expect(state).toMatchSnapshot(); + }); } describe('Default reducer', () => { diff --git a/docs/actions.lookup.md b/docs/actions.lookup.md index 1db62d1e..7d0b385d 100644 --- a/docs/actions.lookup.md +++ b/docs/actions.lookup.md @@ -7,6 +7,8 @@ Actions related to lookup data. * [actions.lookup](#module_actions.lookup) * [.getSkillTagsInit()](#module_actions.lookup.getSkillTagsInit) ⇒ Action * [.getSkillTagsDone()](#module_actions.lookup.getSkillTagsDone) ⇒ Action + * [.getCountriesInit()](#module_actions.lookup.getCountriesInit) ⇒ Action + * [.getCountriesDone()](#module_actions.lookup.getCountriesDone) ⇒ Action @@ -20,3 +22,9 @@ Creates an action that signals beginning of getting all skill tags. Creates an action that gets all skill tags. **Kind**: static method of [actions.lookup](#module_actions.lookup) + + +### actions.lookup.getCountriesDone() ⇒ Action +Creates an action that gets all countries. + +**Kind**: static method of [actions.lookup](#module_actions.lookup) diff --git a/docs/reducers.lookup.md b/docs/reducers.lookup.md index 340e2d25..1a08f131 100644 --- a/docs/reducers.lookup.md +++ b/docs/reducers.lookup.md @@ -17,6 +17,7 @@ State segment managed by this reducer has the following structure: * [.factory()](#module_reducers.lookup.factory) ⇒ Promise * _inner_ * [~onGetSkillTagsDone(state, action)](#module_reducers.lookup..onGetSkillTagsDone) ⇒ Object + * [~onGetCountriesDone(state, action)](#module_reducers.lookup..onGetCountriesDone) ⇒ Object * [~create(initialState)](#module_reducers.lookup..create) ⇒ function @@ -37,6 +38,13 @@ Factory which creates a new reducer. ### reducers.lookup~onGetSkillTagsDone(state, action) ⇒ Object Handles LOOKUP/GET_SKILL_TAGS_DONE action. +**Kind**: static method of [reducers.lookup](#module_reducers.lookup) +**Resolves**: Function(state, action): state New reducer. + + +### reducers.lookup~onGetCountriesDone(state, action) ⇒ Object +Handles LOOKUP/GET_COUNTRIES_DONE action. + **Kind**: inner method of [reducers.lookup](#module_reducers.lookup) **Returns**: Object - New state diff --git a/src/actions/lookup.js b/src/actions/lookup.js index b37ed92e..ec20cc9f 100644 --- a/src/actions/lookup.js +++ b/src/actions/lookup.js @@ -26,9 +26,27 @@ function getSkillTagsDone() { return getService().getTags(params); } +/** + * @static + * @desc Creates an action that signals beginning of getting all countries. + * @return {Action} + */ +function getCountriesInit() {} + +/** + * @static + * @desc Creates an action that gets all countries. + * @return {Action} + */ +function getCountriesDone() { + return getService().getCountries(); +} + export default createActions({ LOOKUP: { GET_SKILL_TAGS_INIT: getSkillTagsInit, GET_SKILL_TAGS_DONE: getSkillTagsDone, + GET_COUNTRIES_INIT: getCountriesInit, + GET_COUNTRIES_DONE: getCountriesDone, }, }); diff --git a/src/reducers/lookup.js b/src/reducers/lookup.js index a2cdff2a..db53ddf1 100644 --- a/src/reducers/lookup.js +++ b/src/reducers/lookup.js @@ -29,6 +29,25 @@ function onGetSkillTagsDone(state, { payload, error }) { }); } +/** + * Handles LOOKUP/GET_COUNTRIES_DONE action. + * @param {Object} state + * @param {Object} action Payload will be JSON from api call + * @return {Object} New state + */ +function onGetCountriesDone(state, { payload, error }) { + if (error) { + logger.error('Failed to get countries', payload); + return { ...state, loadingCountriesError: true }; + } + + return ({ + ...state, + loadingCountriesError: false, + countries: payload, + }); +} + /** * Creates a new Lookup reducer with the specified initial state. * @param {Object} initialState Optional. Initial state. @@ -39,8 +58,11 @@ function create(initialState = {}) { return handleActions({ [a.getSkillTagsInit]: state => state, [a.getSkillTagsDone]: onGetSkillTagsDone, + [a.getCountriesInit]: state => state, + [a.getCountriesDone]: onGetCountriesDone, }, _.defaults(initialState, { skillTags: [], + countries: [], })); } diff --git a/src/services/lookup.js b/src/services/lookup.js index 2b98bf8b..76c6a792 100644 --- a/src/services/lookup.js +++ b/src/services/lookup.js @@ -27,6 +27,16 @@ class LookupService { const res = await this.private.api.get(`/tags/?${qs.stringify(params)}`); return getApiResponsePayload(res); } + + /** + * Gets countries. + * @param {Object} params Parameters + * @return {Promise} Resolves to the countries. + */ + async getCountries() { + const res = await this.private.api.get('/members/lookup/countries'); + return getApiResponsePayload(res); + } } let lastInstance = null; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy