1
0

finished tests and docs

This commit is contained in:
lotte
2018-10-12 11:55:52 +02:00
parent 1928da8c32
commit 8ffbd13242
14 changed files with 426 additions and 33 deletions

View File

@@ -0,0 +1,93 @@
import * as deepFreeze from 'deep-freeze';
import { objectCacheReducer } from './object-cache.reducer';
import {
AddPatchObjectCacheAction,
AddToObjectCacheAction, ApplyPatchObjectCacheAction,
RemoveFromObjectCacheAction,
ResetObjectCacheTimestampsAction
} from './object-cache.actions';
import { Operation } from '../../../../node_modules/fast-json-patch';
import { serverSyncBufferReducer } from './server-sync-buffer.reducer';
import { RestRequestMethod } from '../data/rest-request-method';
import { AddToSSBAction, EmptySSBAction } from './server-sync-buffer.actions';
class NullAction extends RemoveFromObjectCacheAction {
type = null;
payload = null;
constructor() {
super(null);
}
}
describe('serverSyncBufferReducer', () => {
const selfLink1 = 'https://localhost:8080/api/core/items/1698f1d3-be98-4c51-9fd8-6bfedcbd59b7';
const selfLink2 = 'https://localhost:8080/api/core/items/28b04544-1766-4e82-9728-c4e93544ecd3';
const testState = {
buffer:
[
{
href: selfLink1,
method: RestRequestMethod.PATCH,
},
{
href: selfLink2,
method: RestRequestMethod.GET,
}
]
};
const newSelfLink = 'https://localhost:8080/api/core/items/1ce6b5ae-97e1-4e5a-b4b0-f9029bad10c0';
deepFreeze(testState);
it('should return the current state when no valid actions have been made', () => {
const action = new NullAction();
const newState = serverSyncBufferReducer(testState, action);
expect(newState).toEqual(testState);
});
it('should start with an empty buffer array', () => {
const action = new NullAction();
const initialState = serverSyncBufferReducer(undefined, action);
expect(initialState).toEqual({ buffer: [] });
});
it('should perform the ADD action without affecting the previous state', () => {
const action = new AddToSSBAction(selfLink1, RestRequestMethod.POST);
// testState has already been frozen above
serverSyncBufferReducer(testState, action);
});
it('should perform the EMPTY action without affecting the previous state', () => {
const action = new EmptySSBAction();
// testState has already been frozen above
serverSyncBufferReducer(testState, action);
});
it('should empty the buffer if the EmptySSBAction is dispatched without a payload', () => {
const action = new EmptySSBAction();
// testState has already been frozen above
const emptyState = serverSyncBufferReducer(testState, action);
expect(emptyState).toEqual({ buffer: [] });
});
it('should empty the buffer partially if the EmptySSBAction is dispatched with a payload', () => {
const action = new EmptySSBAction(RestRequestMethod.PATCH);
// testState has already been frozen above
const emptyState = serverSyncBufferReducer(testState, action);
expect(emptyState).toEqual({ buffer: testState.buffer.filter((entry) => entry.method !== RestRequestMethod.PATCH) });
});
it('should add an entry to the buffer if the AddSSBAction is dispatched', () => {
const action = new AddToSSBAction(newSelfLink, RestRequestMethod.PUT);
// testState has already been frozen above
const newState = serverSyncBufferReducer(testState, action);
expect(newState.buffer).toContain({
href: newSelfLink, method: RestRequestMethod.PUT
})
;
})
});