flora-exception
Version:
An exception system for FQL.
92 lines (91 loc) • 2.92 kB
JavaScript
import { FaunaTestDb } from "fauna-test-setup";
import { $Object, $Optional } from "./Object";
import { $Number, $String } from "./Primitives";
export const ExceptionSuiteA = () => {
describe("Flora exceptions basic functionality", () => {
let db;
beforeAll(async () => {
db = await FaunaTestDb();
});
test("Simple $Object", async () => {
const Test$Object = $Object({
name: $String,
amount: $Number
});
const result = await db.client.query(Test$Object({
name: "Liam",
amount: 9
}));
expect(result).toBe(true);
});
test("Simple $Object fail", async () => {
const Test$Object = $Object({
name: $String,
amount: $Number
});
const result = await db.client.query(Test$Object({
name: "Liam",
amount: "Not number"
}));
expect(result).toBe(false);
});
test("Nested $Object", async () => {
const Test$Object = $Object({
name: $String,
amount: $Number
});
const Wrapper$Object = $Object({
type: $String,
obj: Test$Object
});
const result = await db.client.query(Wrapper$Object({
type: "any",
obj: {
name: "Liam",
amount: 9
}
}));
expect(result).toBe(true);
});
test("Nested $Object fails", async () => {
const Test$Object = $Object({
name: $String,
amount: $Number
});
const Wrapper$Object = $Object({
type: $String,
obj: Test$Object
});
const result = await db.client.query(Wrapper$Object({
type: "any",
obj: {
name: "Liam",
amount: "Not number"
}
}));
expect(result).toBe(false);
});
test("$Optional", async () => {
const Test$Object = $Object({
name: $Optional($String),
amount: $Number
});
const result = await db.client.query(Test$Object({
amount: 9
}));
expect(result).toBe(true);
});
test("$Optional fails", async () => {
const Test$Object = $Object({
name: $Optional($String),
amount: $Number
});
const result = await db.client.query(Test$Object({
name: 9,
amount: 9
}));
expect(result).toBe(false);
});
});
};
ExceptionSuiteA();