chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { MarQSShortKeyProducer } from "../app/v3/marqs/marqsKeyProducer.js";
|
||||
import type { MarQSKeyProducerEnv } from "~/v3/marqs/types.js";
|
||||
|
||||
describe("MarQSShortKeyProducer", () => {
|
||||
const prefix = "test:";
|
||||
const producer = new MarQSShortKeyProducer(prefix);
|
||||
|
||||
// Sample test data
|
||||
const sampleEnv: MarQSKeyProducerEnv = {
|
||||
id: "123456789012345678901234",
|
||||
organizationId: "987654321098765432109876",
|
||||
type: "PRODUCTION",
|
||||
};
|
||||
|
||||
const devEnv: MarQSKeyProducerEnv = {
|
||||
id: "123456789012345678901234",
|
||||
organizationId: "987654321098765432109876",
|
||||
type: "DEVELOPMENT",
|
||||
};
|
||||
|
||||
describe("sharedQueueScanPattern", () => {
|
||||
it("should return correct shared queue scan pattern", () => {
|
||||
expect(producer.sharedQueueScanPattern()).toBe("test:*sharedQueue");
|
||||
});
|
||||
});
|
||||
|
||||
describe("queueCurrentConcurrencyScanPattern", () => {
|
||||
it("should return correct queue current concurrency scan pattern", () => {
|
||||
expect(producer.queueCurrentConcurrencyScanPattern()).toBe(
|
||||
"test:org:*:env:*:queue:*:currentConcurrency"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("stripKeyPrefix", () => {
|
||||
it("should strip prefix from key if present", () => {
|
||||
expect(producer.stripKeyPrefix("test:someKey")).toBe("someKey");
|
||||
});
|
||||
|
||||
it("should return original key if prefix not present", () => {
|
||||
expect(producer.stripKeyPrefix("someKey")).toBe("someKey");
|
||||
});
|
||||
});
|
||||
|
||||
describe("queueKey", () => {
|
||||
it("should generate queue key with environment object", () => {
|
||||
expect(producer.queueKey(sampleEnv, "testQueue")).toBe(
|
||||
"org:765432109876:env:345678901234:queue:testQueue"
|
||||
);
|
||||
});
|
||||
|
||||
it("should generate queue key with separate parameters", () => {
|
||||
expect(producer.queueKey("org123", "env456", "testQueue")).toBe(
|
||||
"org:org123:env:env456:queue:testQueue"
|
||||
);
|
||||
});
|
||||
|
||||
it("should include concurrency key when provided", () => {
|
||||
expect(producer.queueKey(sampleEnv, "testQueue", "concKey")).toBe(
|
||||
"org:765432109876:env:345678901234:queue:testQueue:ck:concKey"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("queueKeyFromQueue", () => {
|
||||
it("should generate queue key", () => {
|
||||
expect(producer.queueKeyFromQueue("org:765432109876:env:345678901234:queue:testQueue")).toBe(
|
||||
"org:765432109876:env:345678901234:queue:testQueue"
|
||||
);
|
||||
});
|
||||
|
||||
it("should include concurrency key when provided", () => {
|
||||
expect(
|
||||
producer.queueKeyFromQueue("org:765432109876:env:345678901234:queue:testQueue:ck:concKey")
|
||||
).toBe("org:765432109876:env:345678901234:queue:testQueue:ck:concKey");
|
||||
});
|
||||
});
|
||||
|
||||
describe("envSharedQueueKey", () => {
|
||||
it("should return organization-specific shared queue for development environment", () => {
|
||||
expect(producer.envSharedQueueKey(devEnv)).toBe(
|
||||
"org:765432109876:env:345678901234:sharedQueue"
|
||||
);
|
||||
});
|
||||
|
||||
it("should return global shared queue for production environment", () => {
|
||||
expect(producer.envSharedQueueKey(sampleEnv)).toBe("sharedQueue");
|
||||
});
|
||||
});
|
||||
|
||||
describe("queueDescriptorFromQueue", () => {
|
||||
it("should parse queue string into descriptor", () => {
|
||||
const queueString = "org:123:env:456:queue:testQueue:ck:concKey";
|
||||
const descriptor = producer.queueDescriptorFromQueue(queueString);
|
||||
|
||||
expect(descriptor).toEqual({
|
||||
name: "testQueue",
|
||||
environment: "456",
|
||||
organization: "123",
|
||||
concurrencyKey: "concKey",
|
||||
});
|
||||
});
|
||||
|
||||
it("should parse queue string without optional parameters", () => {
|
||||
const queueString = "org:123:env:456:queue:testQueue";
|
||||
const descriptor = producer.queueDescriptorFromQueue(queueString);
|
||||
|
||||
expect(descriptor).toEqual({
|
||||
name: "testQueue",
|
||||
environment: "456",
|
||||
organization: "123",
|
||||
concurrencyKey: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it("should throw error for invalid queue string", () => {
|
||||
const invalidQueue = "invalid:queue:string";
|
||||
expect(() => producer.queueDescriptorFromQueue(invalidQueue)).toThrow("Invalid queue");
|
||||
});
|
||||
});
|
||||
|
||||
describe("messageKey", () => {
|
||||
it("should generate correct message key", () => {
|
||||
expect(producer.messageKey("msg123")).toBe("message:msg123");
|
||||
});
|
||||
});
|
||||
|
||||
describe("nackCounterKey", () => {
|
||||
it("should generate correct nack counter key", () => {
|
||||
expect(producer.nackCounterKey("msg123")).toBe("message:msg123:nacks");
|
||||
});
|
||||
});
|
||||
|
||||
describe("currentConcurrencyKey", () => {
|
||||
it("should generate correct current concurrency key", () => {
|
||||
expect(producer.queueCurrentConcurrencyKey(sampleEnv, "testQueue")).toBe(
|
||||
"org:765432109876:env:345678901234:queue:testQueue:currentConcurrency"
|
||||
);
|
||||
});
|
||||
|
||||
it("should include concurrency key when provided", () => {
|
||||
expect(producer.queueCurrentConcurrencyKey(sampleEnv, "testQueue", "concKey")).toBe(
|
||||
"org:765432109876:env:345678901234:queue:testQueue:ck:concKey:currentConcurrency"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("currentConcurrencyKeyFromQueue", () => {
|
||||
it("should generate correct current concurrency key", () => {
|
||||
expect(
|
||||
producer.queueCurrentConcurrencyKeyFromQueue(
|
||||
"org:765432109876:env:345678901234:queue:testQueue"
|
||||
)
|
||||
).toBe("org:765432109876:env:345678901234:queue:testQueue:currentConcurrency");
|
||||
});
|
||||
|
||||
it("should include concurrency key when provided", () => {
|
||||
expect(
|
||||
producer.queueCurrentConcurrencyKeyFromQueue(
|
||||
"org:765432109876:env:345678901234:queue:testQueue:ck:concKey"
|
||||
)
|
||||
).toBe("org:765432109876:env:345678901234:queue:testQueue:ck:concKey:currentConcurrency");
|
||||
});
|
||||
});
|
||||
|
||||
describe("queueReserveConcurrencyKeyFromQueue", () => {
|
||||
it("should generate correct queue reserve concurrency key", () => {
|
||||
expect(
|
||||
producer.queueReserveConcurrencyKeyFromQueue(
|
||||
"org:765432109876:env:345678901234:queue:testQueue"
|
||||
)
|
||||
).toBe("org:765432109876:env:345678901234:queue:testQueue:reserveConcurrency");
|
||||
});
|
||||
|
||||
it("should NOT include the concurrency key when provided", () => {
|
||||
expect(
|
||||
producer.queueReserveConcurrencyKeyFromQueue(
|
||||
"org:765432109876:env:345678901234:queue:testQueue:ck:concKey"
|
||||
)
|
||||
).toBe("org:765432109876:env:345678901234:queue:testQueue:reserveConcurrency");
|
||||
});
|
||||
});
|
||||
|
||||
describe("queueConcurrencyLimitKeyFromQueue", () => {
|
||||
it("should generate correct queue concurrency limit key", () => {
|
||||
expect(
|
||||
producer.queueConcurrencyLimitKeyFromQueue(
|
||||
"org:765432109876:env:345678901234:queue:testQueue"
|
||||
)
|
||||
).toBe("org:765432109876:env:345678901234:queue:testQueue:concurrency");
|
||||
});
|
||||
|
||||
it("should NOT include the concurrency key when provided", () => {
|
||||
expect(
|
||||
producer.queueConcurrencyLimitKeyFromQueue(
|
||||
"org:765432109876:env:345678901234:queue:testQueue:ck:concKey"
|
||||
)
|
||||
).toBe("org:765432109876:env:345678901234:queue:testQueue:concurrency");
|
||||
});
|
||||
});
|
||||
|
||||
describe("envCurrentConcurrencyKey", () => {
|
||||
it("should generate correct env current concurrency key with environment object", () => {
|
||||
expect(producer.envCurrentConcurrencyKey(sampleEnv)).toBe(
|
||||
"env:345678901234:currentConcurrency"
|
||||
);
|
||||
});
|
||||
|
||||
it("should generate correct env current concurrency key with env id", () => {
|
||||
expect(producer.envCurrentConcurrencyKey("env456")).toBe("env:env456:currentConcurrency");
|
||||
});
|
||||
});
|
||||
|
||||
describe("orgIdFromQueue and envIdFromQueue", () => {
|
||||
it("should extract org id from queue string", () => {
|
||||
const queue = "org:123:env:456:queue:testQueue";
|
||||
expect(producer.orgIdFromQueue(queue)).toBe("123");
|
||||
});
|
||||
|
||||
it("should extract env id from queue string", () => {
|
||||
const queue = "org:123:env:456:queue:testQueue";
|
||||
expect(producer.envIdFromQueue(queue)).toBe("456");
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user