budibase/packages/builder/src/stores/backend/tests/queries.spec.js

47 lines
1.4 KiB
JavaScript

import { get } from 'svelte/store'
import api from 'builderStore/api'
jest.mock('builderStore/api');
import { SOME_QUERY, SAVE_QUERY_RESPONSE } from './fixtures/queries'
import { createQueriesStore } from "../queries"
import { datasources } from '../datasources'
describe("Queries Store", () => {
let store = createQueriesStore()
beforeEach(async () => {
api.get.mockReturnValue({ json: () => [SOME_QUERY]})
await store.init()
})
it("Initialises correctly", async () => {
api.get.mockReturnValue({ json: () => [SOME_QUERY]})
await store.init()
expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null})
})
it("fetches all the queries", async () => {
api.get.mockReturnValue({ json: () => [SOME_QUERY]})
await store.fetch()
expect(get(store)).toEqual({ list: [SOME_QUERY], selected: null})
})
it("saves the query, updates the store and returns status message", async () => {
api.post.mockReturnValue({ json: () => SAVE_QUERY_RESPONSE})
await store.select(SOME_QUERY.datasourceId, SOME_QUERY)
expect(get(store).list).toEqual(expect.arrayContaining([SOME_QUERY]))
})
it("deletes a query, updates the store and returns status message", async () => {
api.delete.mockReturnValue({status: 200, message: `Query deleted.`})
await store.delete(SOME_QUERY)
expect(get(store)).toEqual({ list: [], selected: null})
})
})