Skip to content

Commit

Permalink
chore: replace metabase client w singleton instance
Browse files Browse the repository at this point in the history
  • Loading branch information
zz-hh-aa committed Dec 19, 2024
1 parent 15ad49c commit 8f12f20
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createMetabaseClient } from "../shared/client.js";
import type { GetCollectionResponse } from "./types.js";
import { $metabase } from "../shared/client.js";

const client = createMetabaseClient();
/**
* Retrieves info on a collection from Metabase, use to check a parent. Currently only used in tests but could be useful for other Metabase functionality
* @param id
Expand All @@ -10,6 +10,6 @@ const client = createMetabaseClient();
export async function getCollection(
id: number,
): Promise<GetCollectionResponse> {
const response = await client.get(`/api/collection/${id}`);
const response = await $metabase.get(`/api/collection/${id}`);
return response.data;
}
21 changes: 10 additions & 11 deletions api.planx.uk/modules/analytics/metabase/shared/client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
MetabaseError,
} from "./client.js";
import nock from "nock";
import { $metabase } from "./client.js";

describe("Metabase client", () => {
beforeEach(() => {
Expand All @@ -16,13 +17,12 @@ describe("Metabase client", () => {
});

test("returns configured client", async () => {
const client = createMetabaseClient();
expect(client.defaults.baseURL).toBe(process.env.METABASE_URL_EXT);
expect(client.defaults.headers["X-API-Key"]).toBe(
expect($metabase.defaults.baseURL).toBe(process.env.METABASE_URL_EXT);
expect($metabase.defaults.headers["X-API-Key"]).toBe(
process.env.METABASE_API_KEY,
);
expect(client.defaults.headers["Content-Type"]).toBe("application/json");
expect(client.defaults.timeout).toBe(30_000);
expect($metabase.defaults.headers["Content-Type"]).toBe("application/json");
expect($metabase.defaults.timeout).toBe(30_000);
});

describe("validates configuration", () => {
Expand Down Expand Up @@ -61,8 +61,7 @@ describe("Metabase client", () => {
.get("/test")
.reply(200, { data: "success" });

const client = createMetabaseClient();
const response = await client.get("/test");
const response = await $metabase.get("/test");

expect(response.data).toEqual({ data: "success" });
expect(metabaseScope.isDone()).toBe(true);
Expand All @@ -76,10 +75,10 @@ describe("Metabase client", () => {
.times(4)
.reply(500, { message: "Internal Server Error" });

const client = createMetabaseClient();
const $metabase = createMetabaseClient();

try {
await client.get("/test");
await $metabase.get("/test");
expect.fail("Should have thrown an error");
} catch (error) {
expect(error).toBeInstanceOf(MetabaseError);
Expand All @@ -93,8 +92,8 @@ describe("Metabase client", () => {

metabaseScope.get("/test").once().reply(200, { data: "success" });

const client = createMetabaseClient();
const response = await client.get("/test");
const $metabase = createMetabaseClient();
const response = await $metabase.get("/test");

expect(response.data).toEqual({ data: "success" });

Expand Down
8 changes: 1 addition & 7 deletions api.planx.uk/modules/analytics/metabase/shared/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,4 @@ export const createMetabaseClient = (): AxiosInstance => {
return client;
};

// // Export both client and instance with delayed instantiation for test purposes
// export let metabaseClient: AxiosInstance;

// export const initializeMetabaseClient = () => {
// metabaseClient = createMetabaseClient();
// return metabaseClient;
// };
export const $metabase = createMetabaseClient();

0 comments on commit 8f12f20

Please sign in to comment.