MM-10460: avoid double post on restore (#1667)
* add test to messageRetention to verify outgoing action type * ensure messageRetention passes the original action type through * fix linting issues
This commit is contained in:
parent
6ceadec7f7
commit
210b3512b1
2 changed files with 74 additions and 1 deletions
|
|
@ -348,7 +348,7 @@ function cleanupState(action, keepCurrent = false) {
|
|||
nextState.errors = payload.errors;
|
||||
|
||||
return {
|
||||
type: 'persist/REHYDRATE',
|
||||
type: action.type,
|
||||
payload: nextState,
|
||||
error: action.error,
|
||||
};
|
||||
|
|
|
|||
73
app/store/middleware.test.js
Normal file
73
app/store/middleware.test.js
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
/* eslint-disable max-nested-callbacks */
|
||||
|
||||
import assert from 'assert';
|
||||
|
||||
import {ViewTypes} from 'app/constants';
|
||||
import {messageRetention} from 'app/store/middleware';
|
||||
|
||||
jest.mock('react-native-fetch-blob', () => {
|
||||
return {
|
||||
DocumentDir: () => null,
|
||||
polyfill: () => null,
|
||||
fs: {
|
||||
dirs: {
|
||||
},
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('react-native-device-info', () => {
|
||||
return {
|
||||
getVersion: () => '0.0.0',
|
||||
getBuildNumber: () => '0',
|
||||
};
|
||||
});
|
||||
|
||||
describe('store/middleware', () => {
|
||||
describe('messageRetention', () => {
|
||||
describe('should chain the same incoming action type', () => {
|
||||
const actions = [
|
||||
{
|
||||
type: 'persist/REHYDRATE',
|
||||
payload: {
|
||||
views: {
|
||||
team: {
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
type: ViewTypes.DATA_CLEANUP,
|
||||
payload: {
|
||||
entities: {
|
||||
channels: {
|
||||
},
|
||||
posts: {
|
||||
},
|
||||
},
|
||||
views: {
|
||||
team: {
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'other',
|
||||
},
|
||||
];
|
||||
|
||||
actions.forEach((action) => {
|
||||
it(`for action type ${action.type}`, () => {
|
||||
const store = {};
|
||||
const next = (a) => a;
|
||||
|
||||
const nextAction = messageRetention(store)(next)(action);
|
||||
assert.equal(action.type, nextAction.type);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue