@grouparoo/core
Version:
The Grouparoo Core
115 lines (100 loc) • 3.51 kB
text/typescript
import { helper } from "@grouparoo/spec-helper";
import { specHelper, Connection } from "actionhero";
import { Import } from "../../src";
import { ImportsList, ImportView } from "../../src/actions/imports";
import { SessionCreate } from "../../src/actions/session";
describe("actions/imports", () => {
helper.grouparooTestServer({ truncate: true, enableTestPlugin: true });
let apiKey: string;
beforeAll(async () => {
await helper.factories.properties();
const apiKeyModel = await helper.factories.apiKey();
apiKey = apiKeyModel.apiKey;
const permissions = await apiKeyModel.$get("permissions", {
where: { topic: "import" },
});
await permissions[0].update({ write: true, read: true });
});
describe("with session", () => {
let connection: Connection;
let csrfToken: string;
let toadImport: Import;
let peachImport: Import;
beforeAll(async () => {
await specHelper.runAction("team:initialize", {
firstName: "Mario",
lastName: "Mario",
password: "P@ssw0rd!",
email: "mario@example.com",
});
connection = await specHelper.buildConnection();
connection.params = { email: "mario@example.com", password: "P@ssw0rd!" };
const sessionResponse = await specHelper.runAction<SessionCreate>(
"session:create",
connection
);
csrfToken = sessionResponse.csrfToken;
});
beforeAll(async () => {
const record = await helper.factories.record({ modelId: "mod_profiles" });
toadImport = await helper.factories.import(
undefined,
{
email: "toad@mushroom-kingdom.gov",
something: "else",
},
record.id
);
const record2 = await helper.factories.record({
modelId: "mod_profiles",
});
peachImport = await helper.factories.import(
undefined,
{
email: "peach@mushroom-kingdom.gov",
something: "new",
},
record2.id
);
await peachImport.update({ state: "complete" });
});
test("an import can be viewed", async () => {
connection.params = { csrfToken, id: toadImport.id };
const { error, import: _import } = await specHelper.runAction<ImportView>(
"import:view",
connection
);
expect(error).toBeFalsy();
expect(_import.id).toBe(toadImport.id);
expect(_import.createdAt).toBeTruthy();
});
test("imports can be listed", async () => {
connection.params = { csrfToken };
const { error, imports } = await specHelper.runAction<ImportsList>(
"imports:list",
connection
);
expect(error).toBeFalsy();
expect(imports.length).toBe(2);
expect(imports.map((i) => i.id).sort()).toEqual(
[].sort()
);
expect(imports.map((i) => i.data.email).sort()).toEqual([
"peach@mushroom-kingdom.gov",
"toad@mushroom-kingdom.gov",
]);
});
test("imports can be filtered by state", async () => {
connection.params = { csrfToken, state: "importing" };
const { error, imports } = await specHelper.runAction<ImportsList>(
"imports:list",
connection
);
expect(error).toBeFalsy();
expect(imports.length).toBe(1);
expect(imports[0].id).toBe(toadImport.id);
expect(imports[0].state).toBe("importing");
expect(imports[0].data.email).toBe("toad@mushroom-kingdom.gov");
});
});
});