73 lines
2.1 KiB
JavaScript
73 lines
2.1 KiB
JavaScript
|
import createApolloClient from '~/lib/graphql';
|
||
|
import { createLocalState } from '~/runner/graphql/list/local_state';
|
||
|
import getCheckedRunnerIdsQuery from '~/runner/graphql/list/checked_runner_ids.query.graphql';
|
||
|
|
||
|
describe('~/runner/graphql/list/local_state', () => {
|
||
|
let localState;
|
||
|
let apolloClient;
|
||
|
|
||
|
const createSubject = () => {
|
||
|
if (apolloClient) {
|
||
|
throw new Error('test subject already exists!');
|
||
|
}
|
||
|
|
||
|
localState = createLocalState();
|
||
|
|
||
|
const { cacheConfig, typeDefs } = localState;
|
||
|
|
||
|
apolloClient = createApolloClient({}, { cacheConfig, typeDefs });
|
||
|
};
|
||
|
|
||
|
const queryCheckedRunnerIds = () => {
|
||
|
const { checkedRunnerIds } = apolloClient.readQuery({
|
||
|
query: getCheckedRunnerIdsQuery,
|
||
|
});
|
||
|
return checkedRunnerIds;
|
||
|
};
|
||
|
|
||
|
beforeEach(() => {
|
||
|
createSubject();
|
||
|
});
|
||
|
|
||
|
afterEach(() => {
|
||
|
localState = null;
|
||
|
apolloClient = null;
|
||
|
});
|
||
|
|
||
|
describe('default', () => {
|
||
|
it('has empty checked list', () => {
|
||
|
expect(queryCheckedRunnerIds()).toEqual([]);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe.each`
|
||
|
inputs | expected
|
||
|
${[['a', true], ['b', true], ['b', true]]} | ${['a', 'b']}
|
||
|
${[['a', true], ['b', true], ['a', false]]} | ${['b']}
|
||
|
${[['c', true], ['b', true], ['a', true], ['d', false]]} | ${['c', 'b', 'a']}
|
||
|
`('setRunnerChecked', ({ inputs, expected }) => {
|
||
|
beforeEach(() => {
|
||
|
inputs.forEach(([id, isChecked]) => {
|
||
|
localState.localMutations.setRunnerChecked({ runner: { id }, isChecked });
|
||
|
});
|
||
|
});
|
||
|
it(`for inputs="${inputs}" has a ids="[${expected}]"`, () => {
|
||
|
expect(queryCheckedRunnerIds()).toEqual(expected);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('clearChecked', () => {
|
||
|
it('clears all checked items', () => {
|
||
|
['a', 'b', 'c'].forEach((id) => {
|
||
|
localState.localMutations.setRunnerChecked({ runner: { id }, isChecked: true });
|
||
|
});
|
||
|
|
||
|
expect(queryCheckedRunnerIds()).toEqual(['a', 'b', 'c']);
|
||
|
|
||
|
localState.localMutations.clearChecked();
|
||
|
|
||
|
expect(queryCheckedRunnerIds()).toEqual([]);
|
||
|
});
|
||
|
});
|
||
|
});
|