From 952b874b1ac732531a8be82b883e648961a1a0b9 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Sun, 20 Jan 2019 11:23:43 +0900 Subject: [PATCH] refs #209 Add unit tests for Home --- .../store/TimelineSpace/Contents/Home.spec.js | 336 ++++++++++++++++++ 1 file changed, 336 insertions(+) create mode 100644 spec/unit/store/TimelineSpace/Contents/Home.spec.js diff --git a/spec/unit/store/TimelineSpace/Contents/Home.spec.js b/spec/unit/store/TimelineSpace/Contents/Home.spec.js new file mode 100644 index 00000000..ee18eb7f --- /dev/null +++ b/spec/unit/store/TimelineSpace/Contents/Home.spec.js @@ -0,0 +1,336 @@ +import Home from '@/store/TimelineSpace/Contents/Home' + +describe('TimelineSpace/Contents/Home', () => { + describe('mutations', () => { + let state + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + + describe('changeLazyLoading', () => { + it('should be change', () => { + Home.mutations.changeLazyLoading(state, true) + expect(state.lazyLoading).toEqual(true) + }) + }) + + describe('changeHeading', () => { + it('should be change', () => { + Home.mutations.changeHeading(state, false) + expect(state.heading).toEqual(false) + }) + }) + + describe('appendTimeline', () => { + describe('heading', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [5, 4, 3, 2, 1, 0], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should update timeline', () => { + Home.mutations.appendTimeline(state, 6) + expect(state.timeline).toEqual([6, 5, 4, 3, 2, 1, 0]) + expect(state.unreadTimeline).toEqual([]) + }) + }) + + describe('not heading', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: false, + timeline: [5, 4, 3, 2, 1, 0], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should update unreadTimeline', () => { + Home.mutations.appendTimeline(state, 6) + expect(state.timeline).toEqual([5, 4, 3, 2, 1, 0]) + expect(state.unreadTimeline).toEqual([6]) + }) + }) + }) + + describe('mergeTimeline', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [5, 4, 3, 2, 1, 0], + unreadTimeline: [8, 7, 6], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should be merged', () => { + Home.mutations.mergeTimeline(state) + expect(state.timeline).toEqual([8, 7, 6, 5, 4, 3, 2, 1, 0]) + expect(state.unreadTimeline).toEqual([]) + }) + }) + + describe('insertTimeline', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [5, 4, 3, 2, 1, 0], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should be inserted', () => { + Home.mutations.insertTimeline(state, [-1, -2, -3, -4]) + expect(state.timeline).toEqual([5, 4, 3, 2, 1, 0, -1, -2, -3, -4]) + }) + }) + + describe('updateToot', () => { + describe('message is not reblogged', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [ + { + id: 3, + reblog: null, + text: '3rd' + }, + { + id: 2, + reblog: null, + text: '2nd' + }, + { + id: 1, + reblog: null, + text: '1st' + }, + { + id: 0, + reblog: null, + text: 'zero' + } + ], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should be updated', () => { + Home.mutations.updateToot(state, { + id: 2, + reblog: null, + text: 'second' + }) + expect(state.timeline[1]).toEqual({ + id: 2, + reblog: null, + text: 'second' + }) + }) + }) + describe('message is reblogged', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [ + { + id: 3, + reblog: null, + text: '3rd' + }, + { + id: 2, + reblog: null, + text: '2nd' + }, + { + id: 1, + reblog: { + id: -1, + reblog: null, + text: 'reblogged message' + }, + text: null + }, + { + id: 0, + reblog: null, + text: 'zero' + } + ], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should be updated', () => { + Home.mutations.updateToot(state, { + id: -1, + reblog: null, + text: 'negative id' + }) + expect(state.timeline[2]).toEqual({ + id: 1, + reblog: { + id: -1, + reblog: null, + text: 'negative id' + }, + text: null + }) + }) + }) + }) + + describe('deleteToot', () => { + describe('message is not reblogged', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [ + { + id: 3, + reblog: null, + text: '3rd' + }, + { + id: 2, + reblog: null, + text: '2nd' + }, + { + id: 1, + reblog: null, + text: 'first' + }, + { + id: 0, + reblog: null, + text: 'zero' + } + ], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should be deleted', () => { + Home.mutations.deleteToot(state, { + id: 0, + reblog: null, + text: 'zero' + }) + expect(state.timeline).toEqual([ + { + id: 3, + reblog: null, + text: '3rd' + }, + { + id: 2, + reblog: null, + text: '2nd' + }, + { + id: 1, + reblog: null, + text: 'first' + } + ]) + }) + }) + + describe('message is reblogged', () => { + beforeEach(() => { + state = { + lazyLoading: false, + heading: true, + timeline: [ + { + id: 3, + reblog: null, + text: '3rd' + }, + { + id: 2, + reblog: null, + text: '2nd' + }, + { + id: 1, + reblog: { + id: -1, + reblog: null, + text: 'reblogged toot' + }, + text: 'first' + }, + { + id: 0, + reblog: null, + text: 'zero' + } + ], + unreadTimeline: [], + filter: '', + showReblogs: true, + showReplies: true + } + }) + it('should be deleted', () => { + Home.mutations.deleteToot(state, { + id: -1, + reblog: null, + text: 'reblogged toot' + }) + expect(state.timeline).toEqual([ + { + id: 3, + reblog: null, + text: '3rd' + }, + { + id: 2, + reblog: null, + text: '2nd' + }, + { + id: 0, + reblog: null, + text: 'zero' + } + ]) + }) + }) + }) + }) +})