| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import {assert} from 'chai'; |
| import {createRequestReducer, |
| createKeyedRequestReducer} from './redux-helpers.js'; |
| |
| let keyedRequestReducer; |
| let requestReducer; |
| |
| describe('redux-helpers', () => { |
| describe('createKeyedRequestReducer', () => { |
| beforeEach(() => { |
| keyedRequestReducer = createKeyedRequestReducer( |
| 'REQUEST_START', 'REQUEST_SUCCESS', 'REQUEST_FAILURE'); |
| }); |
| |
| it('sets requesting to true on start', () => { |
| assert.deepEqual(keyedRequestReducer({}, {type: 'REQUEST_START'}), |
| {['*']: {requesting: true, error: null}}); |
| }); |
| |
| it('sets requesting to false on success', () => { |
| assert.deepEqual(keyedRequestReducer({}, {type: 'REQUEST_SUCCESS'}), |
| {['*']: {requesting: false, error: null}}); |
| }); |
| |
| it('sets error message on failure', () => { |
| assert.deepEqual(keyedRequestReducer({}, { |
| type: 'REQUEST_FAILURE', |
| error: 'hello', |
| }), {['*']: {requesting: false, error: 'hello'}}); |
| }); |
| |
| it('preserves previous request state on start', () => { |
| const initialState = { |
| ['*']: {requesting: false, error: 'hello'}, |
| }; |
| assert.deepEqual(keyedRequestReducer(initialState, { |
| type: 'REQUEST_START', |
| requestKey: 'chromium:11', |
| }), { |
| ['*']: {requesting: false, error: 'hello'}, |
| ['chromium:11']: {requesting: true, error: null}, |
| }); |
| }); |
| |
| it('preserves previous request state on success', () => { |
| const initialState = { |
| ['*']: {requesting: false, error: 'hello'}, |
| ['chromium:11']: {requesting: true, error: null}, |
| }; |
| assert.deepEqual(keyedRequestReducer(initialState, { |
| type: 'REQUEST_SUCCESS', |
| requestKey: 'chromium:11', |
| }), { |
| ['*']: {requesting: false, error: 'hello'}, |
| ['chromium:11']: {requesting: false, error: null}, |
| }); |
| }); |
| |
| it('preserves previous request state on failure', () => { |
| const initialState = { |
| ['*']: {requesting: false, error: 'hello'}, |
| ['chromium:11']: {requesting: false, error: null}, |
| }; |
| assert.deepEqual(keyedRequestReducer(initialState, { |
| type: 'REQUEST_FAILURE', |
| requestKey: 'chromium:11', |
| error: 'something went wrong', |
| }), { |
| ['*']: {requesting: false, error: 'hello'}, |
| ['chromium:11']: {requesting: false, error: 'something went wrong'}, |
| }); |
| }); |
| }); |
| |
| describe('createRequestReducer', () => { |
| beforeEach(() => { |
| requestReducer = createRequestReducer( |
| 'REQUEST_START', 'REQUEST_SUCCESS', 'REQUEST_FAILURE'); |
| }); |
| |
| it('sets requesting to true on start', () => { |
| assert.deepEqual(requestReducer({}, {type: 'REQUEST_START'}), |
| {requesting: true, error: null}); |
| }); |
| |
| it('sets requesting to false on success', () => { |
| assert.deepEqual(requestReducer({}, {type: 'REQUEST_SUCCESS'}), |
| {requesting: false, error: null}); |
| }); |
| |
| it('sets error message on failure', () => { |
| assert.deepEqual(requestReducer({}, { |
| type: 'REQUEST_FAILURE', |
| error: 'hello', |
| }), {requesting: false, error: 'hello'}); |
| }); |
| }); |
| }); |