61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
|
import { executeBehavior, registerBehavior } from "@server/behavior";
|
||
|
import { test, expect } from "bun:test";
|
||
|
|
||
|
test("Behavior registering works", async () => {
|
||
|
try {
|
||
|
registerBehavior("fish:eat", async ctx => {
|
||
|
return {
|
||
|
success: true,
|
||
|
state: {
|
||
|
shouldRemove: true
|
||
|
}
|
||
|
};
|
||
|
});
|
||
|
|
||
|
registerBehavior("hamburger:yeet", async ctx => {
|
||
|
return {
|
||
|
success: true,
|
||
|
state: {
|
||
|
shouldRemove: false,
|
||
|
and: "the hamburger rolled away"
|
||
|
}
|
||
|
};
|
||
|
});
|
||
|
} catch (err) {
|
||
|
expect(err).toBeUndefined();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
test("Behavior execution is correct", async () => {
|
||
|
registerBehavior<"eat", { cooked: boolean }, { shouldRemove: boolean }>(
|
||
|
"hamburger:eat",
|
||
|
async ctx => {
|
||
|
if (ctx.cooked === false) {
|
||
|
return {
|
||
|
success: false,
|
||
|
err: "the hamburgers are not cooked yet"
|
||
|
};
|
||
|
} else {
|
||
|
return {
|
||
|
success: true,
|
||
|
state: {
|
||
|
shouldRemove: true
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
|
||
|
let response = await executeBehavior("hamburger:eat", {
|
||
|
cooked: false
|
||
|
});
|
||
|
|
||
|
expect(response.success).toBeFalse();
|
||
|
|
||
|
response = await executeBehavior("hamburger:eat", {
|
||
|
cooked: true
|
||
|
});
|
||
|
|
||
|
expect(response.success).toBeTrue();
|
||
|
});
|