diff -r 1f340f3597a8 -r ea92f4fe783d client/src/selectors/__tests__/syncSelectors.test.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/src/selectors/__tests__/syncSelectors.test.js Mon Oct 08 18:35:47 2018 +0200 @@ -0,0 +1,186 @@ +import { + getLastSync, + isSynchronizing, + isSynchronized +} from '../syncSelectors'; + +import { ActionEnum } from '../../constants'; + +describe('Sync selector test', () => { + + test('getLastSync', () => { + const inputState = { + status: { + isSynchronizing: false, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + lastSync: 110, + currentUser: null, + currentGroup: null + }, + }; + + expect(getLastSync(inputState)).toBe(110); + }); + + test('getLastSyncAbsent', () => { + const inputState = { + status: { + isSynchronizing: false, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + currentUser: null, + currentGroup: null + }, + }; + + expect(getLastSync(inputState)).toBe(0); + }); + + + test('getLastSyncAuthStatusAbsent', () => { + const inputState = { + status: { + isSynchronizing: false, + online: false + }, + }; + + expect(getLastSync(inputState)).toBe(0); + }); + + test('isSynchronizingFalse', () => { + const inputState = { + status: { + isSynchronizing: false, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + lastSync: 110, + currentUser: null, + currentGroup: null + }, + }; + + expect(isSynchronizing(inputState)).toBe(false); + }); + + + test('isSynchronizingTrue', () => { + const inputState = { + status: { + isSynchronizing: true, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + lastSync: 110, + currentUser: null, + currentGroup: null + }, + }; + + expect(isSynchronizing(inputState)).toBe(true); + }); + + test('isSynchronizedEmpty', () => { + const inputState = { + status: { + isSynchronizing: true, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + lastSync: 110, + currentUser: null, + currentGroup: null + }, + notes: [], + sessions: [] + }; + + expect(isSynchronized(inputState)).toBe(true); + }); + + + test('isSynchronizedOk', () => { + const inputState = { + status: { + isSynchronizing: true, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + lastSync: 110, + currentUser: null, + currentGroup: null + }, + notes: [ { title: 'note1', action: ActionEnum.NONE }, { title: 'note2', action: ActionEnum.NONE }, { title: 'note3', action: ActionEnum.NONE } ], + sessions: [ { title: 'session1', action: ActionEnum.NONE }, { title: 'session2', action: ActionEnum.NONE }, { title: 'session3', action: ActionEnum.NONE } ] + }; + + expect(isSynchronized(inputState)).toBe(true); + }); + + + test('isSynchronizedKo', () => { + const inputState = { + status: { + isSynchronizing: true, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + lastSync: 110, + currentUser: null, + currentGroup: null + }, + notes: [ { title: 'note1', action: ActionEnum.NONE }, { title: 'note2', action: ActionEnum.UPDATED }, { title: 'note3', action: ActionEnum.NONE } ], + sessions: [ { title: 'session1', action: ActionEnum.NONE }, { title: 'session2', action: ActionEnum.DELETED }, { title: 'session3', action: ActionEnum.NONE } ] + }; + + expect(isSynchronized(inputState)).toBe(false); + }); + + + test('isSynchronizedJustOne', () => { + const inputState = { + status: { + isSynchronizing: true, + online: false + }, + authStatus: { + token: '', + isAuthenticated: false, + clientId: null, + lastSync: 110, + currentUser: null, + currentGroup: null + }, + notes: [ { title: 'note1', action: ActionEnum.NONE }, { title: 'note2', action: ActionEnum.UPDATED }, { title: 'note3', action: ActionEnum.NONE } ], + sessions: [ { title: 'session1', action: ActionEnum.NONE }, { title: 'session2', action: ActionEnum.NONE }, { title: 'session3', action: ActionEnum.NONE } ] + }; + + expect(isSynchronized(inputState)).toBe(false); + }); + +})