Change fetch implementation passing

This commit is contained in:
Andras Schmelczer 2025-03-20 21:18:22 +00:00
commit 198ac93c8c
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
2 changed files with 23 additions and 16 deletions

View file

@ -25,23 +25,24 @@ export class MockAgent extends MockClient {
} }
public async init(): Promise<void> { public async init(): Promise<void> {
await super.init(); await super.init(
// flaky fetch implementation to use during testing
async (
input: string | URL | globalThis.Request,
init?: RequestInit
): Promise<Response> => {
await sleep(Math.random() * this.jitterScaleInSeconds * 1000);
const response = await fetch(input, init);
await sleep(Math.random() * this.jitterScaleInSeconds * 1000);
return response;
}
);
assert( assert(
(await this.client.checkConnection()).isSuccessful, (await this.client.checkConnection()).isSuccessful,
"Connection check failed" "Connection check failed"
); );
this.client.fetchImplementation = async (
input: string | URL | globalThis.Request,
init?: RequestInit
): Promise<Response> => {
await sleep(Math.random() * this.jitterScaleInSeconds * 1000);
const response = await fetch(input, init);
await sleep(Math.random() * this.jitterScaleInSeconds * 1000);
return response;
};
this.client.logger.addOnMessageListener((logLine: LogLine) => { this.client.logger.addOnMessageListener((logLine: LogLine) => {
const state = this.client.getSettings().isSyncEnabled const state = this.client.getSettings().isSyncEnabled
? "(online) " ? "(online) "

View file

@ -16,11 +16,17 @@ export class MockClient implements FileSystemOperations {
protected readonly useSlowFileEvents: boolean protected readonly useSlowFileEvents: boolean
) {} ) {}
public async init(): Promise<void> { public async init(
this.client = await SyncClient.create(this, { fetchImplementation: typeof globalThis.fetch
load: async () => this.data, ): Promise<void> {
save: async (data) => void (this.data = data) this.client = await SyncClient.create(
}); this,
{
load: async () => this.data,
save: async (data) => void (this.data = data)
},
fetchImplementation
);
await Promise.all( await Promise.all(
Object.keys(this.initialSettings).map(async (key) => { Object.keys(this.initialSettings).map(async (key) => {