Expose sync push API

This commit is contained in:
2026-05-08 18:46:21 -04:00
parent 59b90c60ae
commit 2b3eea861a
6 changed files with 968 additions and 4 deletions
+11 -3
View File
@@ -14,6 +14,7 @@ export interface TestEnvOptions {
d1?: RecordedD1Database;
kvEntries?: [string, string][];
kvReads?: string[];
r2Puts?: RecordedR2Put[];
}
export interface RecordedD1Database extends ElyD1Database {
@@ -22,6 +23,12 @@ export interface RecordedD1Database extends ElyD1Database {
queries: string[];
}
export interface RecordedR2Put {
key: string;
payload: ArrayBuffer;
options: ElyR2PutOptions;
}
interface TestD1DatabaseOptions {
allRows?: unknown[];
firstRows?: unknown[];
@@ -38,7 +45,7 @@ export function testEnv(options: TestEnvOptions): Env {
return Promise.resolve(values.get(key) ?? null);
},
},
ELY_STORAGE: testR2Bucket(),
ELY_STORAGE: testR2Bucket(options.r2Puts),
ELY_RATE_LIMITER: {
limit(): Promise<{ success: boolean }> {
return Promise.resolve({ success: true });
@@ -112,12 +119,13 @@ function testD1PreparedStatement(
};
}
function testR2Bucket(): Env["ELY_STORAGE"] {
function testR2Bucket(puts: RecordedR2Put[] = []): Env["ELY_STORAGE"] {
return {
get() {
return Promise.resolve(null);
},
put(_key: string, value: ArrayBuffer, _options?: ElyR2PutOptions) {
put(key: string, value: ArrayBuffer, options: ElyR2PutOptions = {}) {
puts.push({ key, payload: value, options });
return Promise.resolve({
arrayBuffer() {
return Promise.resolve(value);