describe('HelloWorld.vue', () => { it('renders props.msg when passed', () => { const msg = 'new message' const wrapper = shallowMount(HelloWorld, { propsData: { msg } }) expect(wrapper.text()).to.include(msg) }) })
it('Loads empty state', () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request').mockImplementation(fetchMock(load)); const wrapper = shallowMount(QueryRenderer, { propsData: { query: {}, cubejsApi: cube, }, slots: { empty: `<div>i'm empty</div>`, }, }); expect(wrapper.text()).toContain(`i'm empty`); expect(cube.request.mock.calls.length).toBe(0); });
it('renders meta information', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(meta)) .mockImplementationOnce(fetchMock(meta)); const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: {}, }, slots: { empty: `<div>i'm empty</div>`, }, }); await flushPromises(); expect(wrapper.text()).toContain(`i'm empty`); });
it('Loads error state', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request').mockImplementation(fetchMock({ error: 'error message' }, 400)); const wrapper = shallowMount(QueryRenderer, { propsData: { query: { measures: ['Stories.count'], }, cubejsApi: cube, }, scopedSlots: { error: `<div>{{props.error}}</div>`, }, }); await flushPromises(); expect(wrapper.text()).toContain('error message'); expect(cube.request.mock.calls.length).toBe(1); });
it('sets members', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: { measures: ['Orders.count'], }, }, }); await flushPromises(); expect(wrapper.vm.measures.length).toBe(1); expect(wrapper.vm.measures[0].name).toBe('Orders.count'); wrapper.vm.setMembers('measures', ['LineItems.count']); expect(wrapper.vm.measures.length).toBe(1); expect(wrapper.vm.measures[0].name).toBe('LineItems.count'); });
it('adds filters', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: {}, }, }); await flushPromises(); expect(wrapper.vm.filters.length).toBe(0); wrapper.vm.addMember('filters', { dimension: 'Orders.status', operator: 'equals', values: ['valid'] }); expect(wrapper.vm.filters.length).toBe(1); expect(wrapper.vm.filters[0].member.name).toBe('Orders.status'); });
it('sets limit', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const filter = { member: 'Orders.status', operator: 'equals', values: ['invalid'], }; const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: { filters: [filter], limit: 10 }, }, }); await flushPromises(); expect(wrapper.vm.limit).toBe(10); });
it('adds members', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: {}, }, }); await flushPromises(); expect(wrapper.vm.measures.length).toBe(0); wrapper.vm.addMember('measures', 'Orders.count'); expect(wrapper.vm.measures.length).toBe(1); expect(wrapper.vm.measures[0].name).toBe('Orders.count'); });
it('removes members', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: { measures: ['Orders.count'], }, }, }); await flushPromises(); expect(wrapper.vm.measures.length).toBe(1); expect(wrapper.vm.measures[0].name).toBe('Orders.count'); wrapper.vm.removeMember('measures', 'Orders.count'); expect(wrapper.vm.measures.length).toBe(0); });
it('ignore order if empty', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const filter = { member: 'Orders.status', operator: 'equals', values: ['invalid'], }; const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: { filters: [filter], }, }, }); await flushPromises(); expect(wrapper.vm.order).toBe(null); });
it('updates members', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: { measures: ['Orders.count'], }, }, }); await flushPromises(); expect(wrapper.vm.measures.length).toBe(1); expect(wrapper.vm.measures[0].name).toBe('Orders.count'); wrapper.vm.updateMember('measures', 'Orders.count', 'LineItems.count'); expect(wrapper.vm.measures.length).toBe(1); expect(wrapper.vm.measures[0].name).toBe('LineItems.count'); });
it('sets offset', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const filter = { member: 'Orders.status', operator: 'equals', values: ['invalid'], }; const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: { filters: [filter], offset: 10 }, }, }); await flushPromises(); expect(wrapper.vm.offset).toBe(10); });
it('sets renewQuery', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request') .mockImplementation(fetchMock(load)) .mockImplementationOnce(fetchMock(meta)); const filter = { member: 'Orders.status', operator: 'equals', values: ['invalid'], }; const wrapper = mount(QueryBuilder, { propsData: { cubejsApi: cube, query: { filters: [filter], renewQuery: true }, }, }); await flushPromises(); expect(wrapper.vm.renewQuery).toBe(true); });
describe('HelloWorld.vue', () => { it('renders props.msg when passed', () => { const msg = 'new message' const wrapper = shallowMount(HelloWorld, { propsData: { msg } }) expect(wrapper.text()).to.include(msg) }) })
it('Loads resultSet', async () => { const cube = CubejsApi('token'); jest.spyOn(cube, 'request').mockImplementation(fetchMock(load)); const wrapper = shallowMount(QueryRenderer, { propsData: { query: { measures: ['Stories.count'], }, cubejsApi: cube, }, scopedSlots: { default: `<div>Result set is loaded</div>`, }, }); await flushPromises(); expect(wrapper.text()).toContain('Result set is loaded'); expect(cube.request.mock.calls.length).toBe(1); });