diff --git a/src/redux/permissions.js b/src/redux/permissions.js index 87eebf64e..9d8dd202b 100644 --- a/src/redux/permissions.js +++ b/src/redux/permissions.js @@ -54,3 +54,7 @@ module.exports.setPermissionsError = error => ({ type: Types.SET_PERMISSIONS_ERROR, error: error }); + +// Selectors - Being extra cautious with stict truthiness +module.exports.selectIsAdmin = state => state.permissions.admin === true; +module.exports.selectIsSocial = state => state.permissions.social === true; diff --git a/test/unit/redux/permissions.test.js b/test/unit/redux/permissions.test.js new file mode 100644 index 000000000..d44bc3161 --- /dev/null +++ b/test/unit/redux/permissions.test.js @@ -0,0 +1,31 @@ +import { + selectIsAdmin, selectIsSocial, permissionsReducer, setPermissions +} from '../../../src/redux/permissions'; + +describe('permission selectors', () => { + test('all permissions are initially false', () => { + const state = { + permissions: {} + }; + expect(selectIsAdmin(state)).toBe(false); + expect(selectIsSocial(state)).toBe(false); + }); + + test('selectIsAdmin', () => { + let state = { + permissions: {} + }; + const newPermissions = {admin: true}; + state.permissions = permissionsReducer(state.session, setPermissions(newPermissions)); + expect(selectIsAdmin(state)).toBe(true); + }); + + test('isSocial', () => { + let state = { + permissions: {} + }; + const newPermissions = {social: true}; + state.permissions = permissionsReducer(state.session, setPermissions(newPermissions)); + expect(selectIsSocial(state)).toBe(true); + }); +});