From fb4f80b5f1e1aad0bc7eaac0d967eed00f6db55e Mon Sep 17 00:00:00 2001 From: Josh Johnson Date: Tue, 10 Oct 2017 15:26:38 +0100 Subject: [PATCH] Break out actions into action files --- src/scripts/src/actions/actions.js | 81 ----------- src/scripts/src/actions/actions.test.js | 175 ------------------------ src/scripts/src/actions/choices.js | 36 +++++ src/scripts/src/actions/choices.test.js | 78 +++++++++++ src/scripts/src/actions/groups.js | 8 ++ src/scripts/src/actions/groups.test.js | 27 ++++ src/scripts/src/actions/items.js | 32 +++++ src/scripts/src/actions/items.test.js | 69 ++++++++++ src/scripts/src/actions/misc.js | 4 + src/scripts/src/actions/misc.test.js | 14 ++ src/scripts/src/choices.js | 24 ++-- src/scripts/src/choices.test.js | 4 +- 12 files changed, 280 insertions(+), 272 deletions(-) delete mode 100644 src/scripts/src/actions/actions.js delete mode 100644 src/scripts/src/actions/actions.test.js create mode 100644 src/scripts/src/actions/choices.js create mode 100644 src/scripts/src/actions/choices.test.js create mode 100644 src/scripts/src/actions/groups.js create mode 100644 src/scripts/src/actions/groups.test.js create mode 100644 src/scripts/src/actions/items.js create mode 100644 src/scripts/src/actions/items.test.js create mode 100644 src/scripts/src/actions/misc.js create mode 100644 src/scripts/src/actions/misc.test.js diff --git a/src/scripts/src/actions/actions.js b/src/scripts/src/actions/actions.js deleted file mode 100644 index 2a59e1c..0000000 --- a/src/scripts/src/actions/actions.js +++ /dev/null @@ -1,81 +0,0 @@ -export const addItem = ( - value, - label, - id, - choiceId, - groupId, - customProperties, - placeholder, - keyCode, -) => ({ - type: 'ADD_ITEM', - value, - label, - id, - choiceId, - groupId, - customProperties, - placeholder, - keyCode, -}); - -export const removeItem = (id, choiceId) => ({ - type: 'REMOVE_ITEM', - id, - choiceId, -}); - -export const highlightItem = (id, highlighted) => ({ - type: 'HIGHLIGHT_ITEM', - id, - highlighted, -}); - -export const addChoice = ( - value, - label, - id, - groupId, - disabled, - elementId, - customProperties, - placeholder, - keyCode, -) => ({ - type: 'ADD_CHOICE', - value, - label, - id, - groupId, - disabled, - elementId, - customProperties, - placeholder, - keyCode, -}); - -export const filterChoices = results => ({ - type: 'FILTER_CHOICES', - results, -}); - -export const activateChoices = (active = true) => ({ - type: 'ACTIVATE_CHOICES', - active, -}); - -export const clearChoices = () => ({ - type: 'CLEAR_CHOICES', -}); - -export const addGroup = (value, id, active, disabled) => ({ - type: 'ADD_GROUP', - value, - id, - active, - disabled, -}); - -export const clearAll = () => ({ - type: 'CLEAR_ALL', -}); diff --git a/src/scripts/src/actions/actions.test.js b/src/scripts/src/actions/actions.test.js deleted file mode 100644 index 9b185f9..0000000 --- a/src/scripts/src/actions/actions.test.js +++ /dev/null @@ -1,175 +0,0 @@ -import { expect } from 'chai'; -import * as actions from './actions'; - -describe('actions', () => { - describe('addItem action', () => { - it('returns ADD_ITEM action', () => { - const value = 'test'; - const label = 'test'; - const id = '1234'; - const choiceId = '1234'; - const groupId = 'test'; - const customProperties = 'test'; - const placeholder = 'test'; - const keyCode = 10; - - const expectedAction = { - type: 'ADD_ITEM', - value, - label, - id, - choiceId, - groupId, - customProperties, - placeholder, - keyCode, - }; - - expect(actions.addItem( - value, - label, - id, - choiceId, - groupId, - customProperties, - placeholder, - keyCode, - )).to.eql(expectedAction); - }); - }); - - describe('removeItem action', () => { - it('returns REMOVE_ITEM action', () => { - const id = '1234'; - const choiceId = '1'; - const expectedAction = { - type: 'REMOVE_ITEM', - id, - choiceId, - }; - - expect(actions.removeItem(id, choiceId)).to.eql(expectedAction); - }); - }); - - describe('highlightItem action', () => { - it('returns HIGHLIGHT_ITEM action', () => { - const id = '1234'; - const highlighted = true; - - const expectedAction = { - type: 'HIGHLIGHT_ITEM', - id, - highlighted, - }; - - expect(actions.highlightItem(id, highlighted)).to.eql(expectedAction); - }); - }); - - describe('addChoice action', () => { - it('returns ADD_CHOICE action', () => { - const value = 'test'; - const label = 'test'; - const id = 'test'; - const groupId = 'test'; - const disabled = false; - const elementId = 'test'; - const customProperties = 'test'; - const placeholder = 'test'; - const keyCode = 10; - - const expectedAction = { - type: 'ADD_CHOICE', - value, - label, - id, - groupId, - disabled, - elementId, - customProperties, - placeholder, - keyCode, - }; - - expect(actions.addChoice( - value, - label, - id, - groupId, - disabled, - elementId, - customProperties, - placeholder, - keyCode, - )).to.eql(expectedAction); - }); - }); - - describe('filterChoices action', () => { - it('returns FILTER_CHOICES action', () => { - const results = Array(10); - const expectedAction = { - type: 'FILTER_CHOICES', - results, - }; - - expect(actions.filterChoices(results)).to.eql(expectedAction); - }); - }); - - describe('activateChoices action', () => { - it('returns ACTIVATE_CHOICES action', () => { - const active = true; - const expectedAction = { - type: 'ACTIVATE_CHOICES', - active, - }; - - expect(actions.activateChoices(active)).to.eql(expectedAction); - }); - }); - - describe('clearChoices action', () => { - it('returns CLEAR_CHOICES action', () => { - const expectedAction = { - type: 'CLEAR_CHOICES', - }; - - expect(actions.clearChoices()).to.eql(expectedAction); - }); - }); - - describe('addGroup action', () => { - it('returns ADD_GROUP action', () => { - const value = 'test'; - const id = 'test'; - const active = true; - const disabled = false; - const expectedAction = { - type: 'ADD_GROUP', - value, - id, - active, - disabled, - }; - - expect(actions.addGroup( - value, - id, - active, - disabled, - )).to.eql(expectedAction); - }); - }); - - describe('clearAll action', () => { - it('returns CLEAR_ALL action', () => { - const expectedAction = { - type: 'CLEAR_ALL', - }; - - expect(actions.clearAll()).to.eql(expectedAction); - }); - }); -}); diff --git a/src/scripts/src/actions/choices.js b/src/scripts/src/actions/choices.js new file mode 100644 index 0000000..ebe9ce1 --- /dev/null +++ b/src/scripts/src/actions/choices.js @@ -0,0 +1,36 @@ +export const addChoice = ( + value, + label, + id, + groupId, + disabled, + elementId, + customProperties, + placeholder, + keyCode, +) => ({ + type: 'ADD_CHOICE', + value, + label, + id, + groupId, + disabled, + elementId, + customProperties, + placeholder, + keyCode, +}); + +export const filterChoices = results => ({ + type: 'FILTER_CHOICES', + results, +}); + +export const activateChoices = (active = true) => ({ + type: 'ACTIVATE_CHOICES', + active, +}); + +export const clearChoices = () => ({ + type: 'CLEAR_CHOICES', +}); diff --git a/src/scripts/src/actions/choices.test.js b/src/scripts/src/actions/choices.test.js new file mode 100644 index 0000000..3061ddb --- /dev/null +++ b/src/scripts/src/actions/choices.test.js @@ -0,0 +1,78 @@ +import { expect } from 'chai'; +import * as actions from './choices'; + +describe('choice actions', () => { + describe('addChoice action', () => { + it('returns ADD_CHOICE action', () => { + const value = 'test'; + const label = 'test'; + const id = 'test'; + const groupId = 'test'; + const disabled = false; + const elementId = 'test'; + const customProperties = 'test'; + const placeholder = 'test'; + const keyCode = 10; + + const expectedAction = { + type: 'ADD_CHOICE', + value, + label, + id, + groupId, + disabled, + elementId, + customProperties, + placeholder, + keyCode, + }; + + expect(actions.addChoice( + value, + label, + id, + groupId, + disabled, + elementId, + customProperties, + placeholder, + keyCode, + )).to.eql(expectedAction); + }); + }); + + describe('filterChoices action', () => { + it('returns FILTER_CHOICES action', () => { + const results = Array(10); + const expectedAction = { + type: 'FILTER_CHOICES', + results, + }; + + expect(actions.filterChoices(results)).to.eql(expectedAction); + }); + }); + + describe('activateChoices action', () => { + it('returns ACTIVATE_CHOICES action', () => { + const active = true; + const expectedAction = { + type: 'ACTIVATE_CHOICES', + active, + }; + + expect(actions.activateChoices(active)).to.eql(expectedAction); + }); + }); + + describe('clearChoices action', () => { + it('returns CLEAR_CHOICES action', () => { + const expectedAction = { + type: 'CLEAR_CHOICES', + }; + + expect(actions.clearChoices()).to.eql(expectedAction); + }); + }); +}); + diff --git a/src/scripts/src/actions/groups.js b/src/scripts/src/actions/groups.js new file mode 100644 index 0000000..613499a --- /dev/null +++ b/src/scripts/src/actions/groups.js @@ -0,0 +1,8 @@ +/* eslint-disable import/prefer-default-export */ +export const addGroup = (value, id, active, disabled) => ({ + type: 'ADD_GROUP', + value, + id, + active, + disabled, +}); diff --git a/src/scripts/src/actions/groups.test.js b/src/scripts/src/actions/groups.test.js new file mode 100644 index 0000000..381acea --- /dev/null +++ b/src/scripts/src/actions/groups.test.js @@ -0,0 +1,27 @@ +import { expect } from 'chai'; +import * as actions from './groups'; + +describe('group actions', () => { + describe('addGroup action', () => { + it('returns ADD_GROUP action', () => { + const value = 'test'; + const id = 'test'; + const active = true; + const disabled = false; + const expectedAction = { + type: 'ADD_GROUP', + value, + id, + active, + disabled, + }; + + expect(actions.addGroup( + value, + id, + active, + disabled, + )).to.eql(expectedAction); + }); + }); +}); diff --git a/src/scripts/src/actions/items.js b/src/scripts/src/actions/items.js new file mode 100644 index 0000000..e3525a7 --- /dev/null +++ b/src/scripts/src/actions/items.js @@ -0,0 +1,32 @@ +export const addItem = ( + value, + label, + id, + choiceId, + groupId, + customProperties, + placeholder, + keyCode, +) => ({ + type: 'ADD_ITEM', + value, + label, + id, + choiceId, + groupId, + customProperties, + placeholder, + keyCode, +}); + +export const removeItem = (id, choiceId) => ({ + type: 'REMOVE_ITEM', + id, + choiceId, +}); + +export const highlightItem = (id, highlighted) => ({ + type: 'HIGHLIGHT_ITEM', + id, + highlighted, +}); diff --git a/src/scripts/src/actions/items.test.js b/src/scripts/src/actions/items.test.js new file mode 100644 index 0000000..57f2c6d --- /dev/null +++ b/src/scripts/src/actions/items.test.js @@ -0,0 +1,69 @@ +import { expect } from 'chai'; +import * as actions from './items'; + +describe('item actions', () => { + describe('addItem action', () => { + it('returns ADD_ITEM action', () => { + const value = 'test'; + const label = 'test'; + const id = '1234'; + const choiceId = '1234'; + const groupId = 'test'; + const customProperties = 'test'; + const placeholder = 'test'; + const keyCode = 10; + + const expectedAction = { + type: 'ADD_ITEM', + value, + label, + id, + choiceId, + groupId, + customProperties, + placeholder, + keyCode, + }; + + expect(actions.addItem( + value, + label, + id, + choiceId, + groupId, + customProperties, + placeholder, + keyCode, + )).to.eql(expectedAction); + }); + }); + + describe('removeItem action', () => { + it('returns REMOVE_ITEM action', () => { + const id = '1234'; + const choiceId = '1'; + const expectedAction = { + type: 'REMOVE_ITEM', + id, + choiceId, + }; + + expect(actions.removeItem(id, choiceId)).to.eql(expectedAction); + }); + }); + + describe('highlightItem action', () => { + it('returns HIGHLIGHT_ITEM action', () => { + const id = '1234'; + const highlighted = true; + + const expectedAction = { + type: 'HIGHLIGHT_ITEM', + id, + highlighted, + }; + + expect(actions.highlightItem(id, highlighted)).to.eql(expectedAction); + }); + }); +}); diff --git a/src/scripts/src/actions/misc.js b/src/scripts/src/actions/misc.js new file mode 100644 index 0000000..b2ecd42 --- /dev/null +++ b/src/scripts/src/actions/misc.js @@ -0,0 +1,4 @@ +/* eslint-disable import/prefer-default-export */ +export const clearAll = () => ({ + type: 'CLEAR_ALL', +}); diff --git a/src/scripts/src/actions/misc.test.js b/src/scripts/src/actions/misc.test.js new file mode 100644 index 0000000..b19b5a1 --- /dev/null +++ b/src/scripts/src/actions/misc.test.js @@ -0,0 +1,14 @@ +import { expect } from 'chai'; +import * as actions from './misc'; + +describe('misc actions', () => { + describe('clearAll action', () => { + it('returns CLEAR_ALL action', () => { + const expectedAction = { + type: 'CLEAR_ALL', + }; + + expect(actions.clearAll()).to.eql(expectedAction); + }); + }); +}); diff --git a/src/scripts/src/choices.js b/src/scripts/src/choices.js index bdae5c2..43d4435 100644 --- a/src/scripts/src/choices.js +++ b/src/scripts/src/choices.js @@ -6,17 +6,11 @@ import Container from './components/container'; import Input from './components/input'; import List from './components/list'; import { DEFAULT_CONFIG, DEFAULT_CLASSNAMES, EVENTS } from './constants'; -import { - addItem, - removeItem, - highlightItem, - addChoice, - filterChoices, - activateChoices, - addGroup, - clearAll, - clearChoices, -} from './actions/actions'; +import { addChoice, filterChoices, activateChoices, clearChoices } from './actions/choices'; +import { addItem, removeItem, highlightItem } from './actions/items'; +import { addGroup } from './actions/groups'; +import { clearAll } from './actions/misc'; + import { isScrolledIntoView, getAdjacentEl, @@ -61,10 +55,6 @@ class Choices { sortFilter: sortByAlpha, }; - this.idNames = { - itemChoice: 'item-choice', - }; - // Merge options with user options this.config = extend(defaultConfig, Choices.userDefaults, userConfig); @@ -133,6 +123,10 @@ class Choices { // Set unique base Id this.baseId = generateId(this.passedElement, 'choices-'); + this.idNames = { + itemChoice: 'item-choice', + }; + // Bind methods this.render = this.render.bind(this); diff --git a/src/scripts/src/choices.test.js b/src/scripts/src/choices.test.js index 37bf1d5..bcde9a6 100644 --- a/src/scripts/src/choices.test.js +++ b/src/scripts/src/choices.test.js @@ -10,8 +10,10 @@ import itemReducer from './reducers/items'; import choiceReducer from './reducers/choices'; import { addItem as addItemAction, +} from './actions/items'; +import { addChoice as addChoiceAction, -} from './actions/actions'; +} from './actions/choices'; import Dropdown from './components/dropdown'; import Container from './components/container'; import Input from './components/input';