feature/IO-3701-Harness-Replacement - Implement
This commit is contained in:
60
server/feature-flags/socket-events.test.js
Normal file
60
server/feature-flags/socket-events.test.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { createRequire } from "module";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
const {
|
||||
FEATURE_FLAGS_CHANGED_EVENT,
|
||||
createFeatureFlagsChangedPayload,
|
||||
emitFeatureFlagsChanged
|
||||
} = require("./socket-events");
|
||||
|
||||
describe("feature flag socket events", () => {
|
||||
it("creates a global payload when no bodyshop id is provided", () => {
|
||||
expect(createFeatureFlagsChangedPayload({ source: "admin", table: "feature_flags", name: "Demo" })).toEqual(
|
||||
expect.objectContaining({
|
||||
bodyshopId: null,
|
||||
name: "Demo",
|
||||
scope: "global",
|
||||
source: "admin",
|
||||
table: "feature_flags"
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it("emits bodyshop-scoped changes to the bodyshop room", () => {
|
||||
const emit = vi.fn();
|
||||
const req = {
|
||||
ioHelpers: {
|
||||
getBodyshopRoom: vi.fn(() => "bodyshop-room-shop-1")
|
||||
},
|
||||
ioRedis: {
|
||||
to: vi.fn(() => ({ emit }))
|
||||
}
|
||||
};
|
||||
|
||||
const payload = emitFeatureFlagsChanged({
|
||||
req,
|
||||
bodyshopId: "shop-1",
|
||||
source: "hasura",
|
||||
table: "bodyshop_feature_flags",
|
||||
name: "Demo"
|
||||
});
|
||||
|
||||
expect(req.ioRedis.to).toHaveBeenCalledWith("bodyshop-room-shop-1");
|
||||
expect(emit).toHaveBeenCalledWith(FEATURE_FLAGS_CHANGED_EVENT, payload);
|
||||
expect(payload).toEqual(expect.objectContaining({ bodyshopId: "shop-1", scope: "bodyshop" }));
|
||||
});
|
||||
|
||||
it("broadcasts global changes to all sockets", () => {
|
||||
const req = {
|
||||
ioRedis: {
|
||||
emit: vi.fn()
|
||||
}
|
||||
};
|
||||
|
||||
const payload = emitFeatureFlagsChanged({ req, source: "admin", table: "feature_flags" });
|
||||
|
||||
expect(req.ioRedis.emit).toHaveBeenCalledWith(FEATURE_FLAGS_CHANGED_EVENT, payload);
|
||||
expect(payload).toEqual(expect.objectContaining({ bodyshopId: null, scope: "global" }));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user