mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
refactor store and store tests
This commit is contained in:
parent
52798c1174
commit
ba80f14d8c
@ -24,10 +24,23 @@ export const state = () => {
|
|||||||
|
|
||||||
const TOGGLE_POST_TYPE = (state, postType) => {
|
const TOGGLE_POST_TYPE = (state, postType) => {
|
||||||
const filter = clone(state.filter)
|
const filter = clone(state.filter)
|
||||||
update(filter, 'postType_in', (postTypes) => xor(postTypes, [postType]))
|
if (postType && !(filter.postType_in && filter.postType_in.includes(postType))) {
|
||||||
if (isEmpty(get(filter, 'postType_in'))) delete filter.postType_in
|
filter.postType_in = [postType]
|
||||||
|
if (postType === 'Event') {
|
||||||
|
filter.eventStart_gte = new Date()
|
||||||
|
state.order = 'eventStart_asc'
|
||||||
|
} else {
|
||||||
|
delete filter.eventStart_gte
|
||||||
|
state.order = 'createdAt_desc'
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
delete filter.eventStart_gte
|
||||||
|
delete filter.postType_in
|
||||||
|
state.order = 'createdAt_desc'
|
||||||
|
}
|
||||||
state.filter = filter
|
state.filter = filter
|
||||||
}
|
}
|
||||||
|
|
||||||
const TOGGLE_UNSET_ALL_POST_TYPES_FILTERS = (state) => {
|
const TOGGLE_UNSET_ALL_POST_TYPES_FILTERS = (state) => {
|
||||||
const beforeEventSetInPostTypeFilter = eventSetInPostTypeFilter(state)
|
const beforeEventSetInPostTypeFilter = eventSetInPostTypeFilter(state)
|
||||||
filterPostTypes.forEach((postType) => {
|
filterPostTypes.forEach((postType) => {
|
||||||
@ -59,9 +72,16 @@ const TOGGLE_SET_UNSET_POST_TYPE_FILTER = (state, setPostType) => {
|
|||||||
adjustEventsEnded(state, beforeEventSetInPostTypeFilter)
|
adjustEventsEnded(state, beforeEventSetInPostTypeFilter)
|
||||||
adjustOrder(state)
|
adjustOrder(state)
|
||||||
}
|
}
|
||||||
const TOGGLE_EVENTS_ENDED = (state, value) => {
|
const TOGGLE_EVENTS_ENDED = (state) => {
|
||||||
state.eventsEnded = value ? new Date() : null
|
if (state.filter.eventStart_gte) {
|
||||||
|
delete state.filter.eventStart_gte
|
||||||
|
} else {
|
||||||
|
if (state.filter.postType_in && state.filter.postType_in.includes('Event')) {
|
||||||
|
state.filter.eventStart_gte = new Date()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const TOGGLE_ORDER = (state, value) => {
|
const TOGGLE_ORDER = (state, value) => {
|
||||||
state.order = value
|
state.order = value
|
||||||
}
|
}
|
||||||
|
|||||||
@ -233,25 +233,49 @@ describe('mutations', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
it('creates post type filter if empty', () => {
|
it('creates post type filter if empty, sets event start filter and event start order', () => {
|
||||||
state = { filter: {} }
|
state = { filter: {} }
|
||||||
expect(testMutation('Event')).toEqual({ postType_in: ['Event'] })
|
expect(testMutation('Event')).toEqual({
|
||||||
|
postType_in: ['Event'],
|
||||||
|
eventStart_gte: expect.any(Date),
|
||||||
|
})
|
||||||
|
expect(getters.orderBy(state)).toEqual('eventStart_asc')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('adds post type not present', () => {
|
it('changes post type if present, resets filter event start and order', () => {
|
||||||
state = { filter: { postType_in: ['Event'] } }
|
state = {
|
||||||
expect(testMutation('Article')).toEqual({ postType_in: ['Event', 'Article'] })
|
filter: {
|
||||||
|
postType_in: ['Event'],
|
||||||
|
eventStart_gte: new Date(),
|
||||||
|
},
|
||||||
|
order: 'eventStart_asc',
|
||||||
|
}
|
||||||
|
expect(testMutation('Article')).toEqual({ postType_in: ['Article'] })
|
||||||
|
expect(getters.orderBy(state)).toEqual('createdAt_desc')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('removes category id if present', () => {
|
it('removes post type filter if same post type is present and sets order', () => {
|
||||||
state = { filter: { postType_in: ['Event', 'Article'] } }
|
state = {
|
||||||
const result = testMutation('Event')
|
filter: {
|
||||||
expect(result).toEqual({ postType_in: ['Article'] })
|
postType_in: ['Event'],
|
||||||
})
|
eventStart_gte: new Date(),
|
||||||
|
},
|
||||||
it('removes category filter if empty', () => {
|
order: 'eventStart_asc',
|
||||||
state = { filter: { postType_in: ['Event'] } }
|
}
|
||||||
expect(testMutation('Event')).toEqual({})
|
expect(testMutation('Event')).toEqual({})
|
||||||
|
expect(getters.orderBy(state)).toEqual('createdAt_desc')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('removes post type filter if called with null', () => {
|
||||||
|
state = {
|
||||||
|
filter: {
|
||||||
|
postType_in: ['Event'],
|
||||||
|
eventStart_gte: new Date(),
|
||||||
|
},
|
||||||
|
order: 'eventStart_asc',
|
||||||
|
}
|
||||||
|
expect(testMutation(null)).toEqual({})
|
||||||
|
expect(getters.orderBy(state)).toEqual('createdAt_desc')
|
||||||
})
|
})
|
||||||
|
|
||||||
it('does not get in the way of other filters', () => {
|
it('does not get in the way of other filters', () => {
|
||||||
@ -265,6 +289,46 @@ describe('mutations', () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('TOGGLE_EVENTS_ENDED', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
testMutation = (postType) => {
|
||||||
|
mutations.TOGGLE_EVENTS_ENDED(state, postType)
|
||||||
|
return getters.filter(state)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
it('does not set events ended when post type is not Event', () => {
|
||||||
|
state = {
|
||||||
|
filter: {},
|
||||||
|
}
|
||||||
|
expect(testMutation()).toEqual({})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('sets events ended when post type is Event', () => {
|
||||||
|
state = {
|
||||||
|
filter: {
|
||||||
|
postType_in: ['Event'],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
expect(testMutation()).toEqual({
|
||||||
|
postType_in: ['Event'],
|
||||||
|
eventStart_gte: expect.any(Date),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('unsets events ended when set', () => {
|
||||||
|
state = {
|
||||||
|
filter: {
|
||||||
|
postType_in: ['Event'],
|
||||||
|
eventStart_gte: new Date(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
expect(testMutation()).toEqual({
|
||||||
|
postType_in: ['Event'],
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('TOGGLE_FILTER_BY_FOLLOWED', () => {
|
describe('TOGGLE_FILTER_BY_FOLLOWED', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
testMutation = (userId) => {
|
testMutation = (userId) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user