mirror of
https://github.com/cloudflare/workers-rs.git
synced 2025-12-08 18:01:59 +00:00
70 lines
2.9 KiB
TypeScript
70 lines
2.9 KiB
TypeScript
import { describe, test, expect } from "vitest";
|
|
import { mf, mfUrl } from "./mf";
|
|
|
|
describe("sqlite durable object", () => {
|
|
test("counter increments per object", async () => {
|
|
// First access for object "alice"
|
|
let resp = await mf.dispatchFetch(`${mfUrl}sql-counter/alice`);
|
|
expect(resp.status).toBe(200);
|
|
expect(await resp.text()).toBe("SQL counter is now 1");
|
|
|
|
// Second access for same object should increment
|
|
resp = await mf.dispatchFetch(`${mfUrl}sql-counter/alice`);
|
|
expect(resp.status).toBe(200);
|
|
expect(await resp.text()).toBe("SQL counter is now 2");
|
|
|
|
// Different object name should have its own counter starting at 1
|
|
resp = await mf.dispatchFetch(`${mfUrl}sql-counter/bob`);
|
|
expect(resp.status).toBe(200);
|
|
expect(await resp.text()).toBe("SQL counter is now 1");
|
|
});
|
|
|
|
test("try_from_i64 handles safe values", async () => {
|
|
// Test with a safe large value (within JavaScript safe integer range)
|
|
const safeValue = "9007199254740991"; // 2^53 - 1 (MAX_SAFE_INTEGER)
|
|
const resp = await mf.dispatchFetch(
|
|
`http://fake.host/sql-counter/safe-test/set-large/${safeValue}`,
|
|
);
|
|
expect(resp.status).toBe(200);
|
|
expect(await resp.text()).toBe(`Successfully stored large value: ${safeValue}`);
|
|
});
|
|
|
|
test("try_from_i64 rejects unsafe values", async () => {
|
|
// Test with value exceeding JavaScript safe integer range
|
|
const unsafeValue = "9007199254740992"; // 2^53 (exceeds MAX_SAFE_INTEGER)
|
|
const resp = await mf.dispatchFetch(
|
|
`http://fake.host/sql-counter/unsafe-test/set-large/${unsafeValue}`,
|
|
);
|
|
expect(resp.status).toBe(200);
|
|
|
|
const text = await resp.text();
|
|
expect(text).toContain("Error: Cannot store value");
|
|
expect(text).toContain(unsafeValue);
|
|
expect(text).toContain("JavaScript safe range is ±9007199254740991");
|
|
});
|
|
|
|
test("try_from_i64 handles negative safe values", async () => {
|
|
// Test with safe negative value
|
|
const safeNegativeValue = "-9007199254740991"; // -(2^53 - 1) (MIN_SAFE_INTEGER)
|
|
const resp = await mf.dispatchFetch(
|
|
`http://fake.host/sql-counter/safe-negative-test/set-large/${safeNegativeValue}`,
|
|
);
|
|
expect(resp.status).toBe(200);
|
|
expect(await resp.text()).toBe(`Successfully stored large value: ${safeNegativeValue}`);
|
|
});
|
|
|
|
test("try_from_i64 rejects unsafe negative values", async () => {
|
|
// Test with negative value exceeding JavaScript safe integer range
|
|
const unsafeNegativeValue = "-9007199254740992"; // -(2^53) (exceeds MIN_SAFE_INTEGER)
|
|
const resp = await mf.dispatchFetch(
|
|
`http://fake.host/sql-counter/unsafe-negative-test/set-large/${unsafeNegativeValue}`,
|
|
);
|
|
expect(resp.status).toBe(200);
|
|
|
|
const text = await resp.text();
|
|
expect(text).toContain("Error: Cannot store value");
|
|
expect(text).toContain(unsafeNegativeValue);
|
|
expect(text).toContain("JavaScript safe range is ±9007199254740991");
|
|
});
|
|
});
|