75 lines
1.7 KiB
TypeScript
75 lines
1.7 KiB
TypeScript
import { default as AirtableIntegration } from "../airtable"
|
|
jest.mock("airtable")
|
|
|
|
class TestConfiguration {
|
|
integration: any
|
|
client: any
|
|
|
|
constructor(config: any = {}) {
|
|
this.integration = new AirtableIntegration.integration(config)
|
|
this.client = {
|
|
create: jest.fn(),
|
|
select: jest.fn(() => ({
|
|
firstPage: jest.fn(() => []),
|
|
})),
|
|
update: jest.fn(),
|
|
destroy: jest.fn(),
|
|
}
|
|
this.integration.client = () => this.client
|
|
}
|
|
}
|
|
|
|
describe("Airtable Integration", () => {
|
|
let config: any
|
|
|
|
beforeEach(() => {
|
|
config = new TestConfiguration()
|
|
})
|
|
|
|
it("calls the create method with the correct params", async () => {
|
|
const response = await config.integration.create({
|
|
table: "test",
|
|
json: {},
|
|
})
|
|
expect(config.client.create).toHaveBeenCalledWith([
|
|
{
|
|
fields: {},
|
|
},
|
|
])
|
|
})
|
|
|
|
it("calls the read method with the correct params", async () => {
|
|
const response = await config.integration.read({
|
|
table: "test",
|
|
view: "Grid view",
|
|
})
|
|
expect(config.client.select).toHaveBeenCalledWith({
|
|
maxRecords: 10,
|
|
view: "Grid view",
|
|
})
|
|
})
|
|
|
|
it("calls the update method with the correct params", async () => {
|
|
const response = await config.integration.update({
|
|
table: "table",
|
|
id: "123",
|
|
json: {
|
|
name: "test",
|
|
},
|
|
})
|
|
expect(config.client.update).toHaveBeenCalledWith([
|
|
{
|
|
id: "123",
|
|
fields: { name: "test" },
|
|
},
|
|
])
|
|
})
|
|
|
|
it("calls the delete method with the correct params", async () => {
|
|
const ids = [1, 2, 3, 4]
|
|
const response = await config.integration.delete({
|
|
ids,
|
|
})
|
|
expect(config.client.destroy).toHaveBeenCalledWith(ids)
|
|
})
|
|
})
|