return Promise.all(_.map(tableList, (id: TableID) => { let response: TableDetailsResponseMessage; fetchMock.reMock(re, "get", (url: string, requestObj: RequestInit) => { let result = url.match(re); let database = result[1]; let table = result[2]; assert.deepEqual(state.databaseInfo.tableDetails[databases.generateTableID(id.db, id.table)], { inFlight: true, valid: false }); response = new protos.cockroach.server.serverpb.TableDetailsResponse(dbTables[databases.generateTableID(database, table)]); return { sendAsJson: false, body: response.toArrayBuffer(), }; }); return databases.refreshTableDetails(id.db, id.table)(dispatch, () => state).then(() => { let generatedID = databases.generateTableID(id.db, id.table); assert.deepEqual(state.databaseInfo.tableDetails[generatedID].data, new protos.cockroach.server.serverpb.TableDetailsResponse(dbTables[id.db][id.table])); assert.deepEqual(state.databaseInfo.tableDetails[generatedID], { inFlight: false, valid: true, data: response, lastError: null, }); }); }));
return Promise.all(_.map([DB1, DB2], (db: string) => { let response: DatabaseDetailsResponseMessage; fetchMock.reMock(re, "get", (url: string, requestObj: RequestInit) => { let database = url.match(re)[1]; assert.deepEqual(state.databaseInfo.databaseDetails[database], { inFlight: true, valid: false }); response = new protos.cockroach.server.serverpb.DatabaseDetailsResponse(dbs[database]); return { sendAsJson: false, body: response.toArrayBuffer(), }; }); return databases.refreshDatabaseDetails(db)(dispatch, () => state).then(() => { assert.deepEqual(new protos.cockroach.server.serverpb.DatabaseDetailsResponse(dbs[db]), response); assert.deepEqual(state.databaseInfo.databaseDetails[db].data, new protos.cockroach.server.serverpb.DatabaseDetailsResponse(dbs[db])); assert.deepEqual(state.databaseInfo.databaseDetails[db], { inFlight: false, valid: true, data: response, lastError: null, }); }); }));
return Promise.all(_.map(tableList, (id: TableID) => { fetchMock.reMock(new RegExp("/_admin/v1/databases/.+/tables/.+"), "get", (url: string, requestObj: RequestInit) => { assert.deepEqual(state.databaseInfo.tableDetails[databases.generateTableID(id.db, id.table)], { inFlight: true, valid: false }); return { throws: error }; }); return databases.refreshTableDetails(id.db, id.table)(dispatch, () => state).then(() => { let generatedID = databases.generateTableID(id.db, id.table); assert.deepEqual(state.databaseInfo.tableDetails[generatedID], { inFlight: false, valid: false, lastError: error, }); }); }));
return Promise.all(_.map([DB1, DB2], (db: string) => { fetchMock.reMock(re, "get", (url: string, requestObj: RequestInit) => { let database = url.match(re)[1]; assert.deepEqual(state.databaseInfo.databaseDetails[database], { inFlight: true, valid: false }); return { throws: error }; }); return databases.refreshDatabaseDetails(db)(dispatch, () => state).then(() => { assert.deepEqual(state.databaseInfo.databaseDetails[db], { inFlight: false, valid: false, lastError: error, }); }); }));
fetchMock.mock("http://test.com", 200); fetchMock.mock(/test\.com/, 200); fetchMock.mock(() => true, 200); fetchMock.mock((url, opts) => true, 200); fetchMock.mock(/test/, "test").mock(/test/, { a: "b" }); fetchMock.mock(/test/, { status: 200, headers: { "test": "test" }, body: { a: "b" } }); fetchMock.reMock(); fetchMock.restore().reset(); fetchMock.calls().matched[0][1].body; fetchMock.calls().unmatched[0][0].toUpperCase(); fetchMock.calls("http://test.com")[0][0].toUpperCase(); fetchMock.calls("http://test.com")[0][1].body; fetchMock.called("http://test.com"); fetchMock.lastCall()[1].body; fetchMock.lastUrl(); fetchMock.lastOptions();