This commit is contained in:
SepehrYahyaee
2026-05-18 11:00:53 +03:30
parent 7ff3e9fd10
commit e1954cdb37
8 changed files with 327 additions and 34 deletions

View File

@@ -0,0 +1,73 @@
import { Types } from "mongoose";
import {
ExpertFileActivityType,
} from "src/users/entities/schema/expert-file-activity.schema";
import { expertPortfolioFileIdsFromActivityEvents } from "./expert-portfolio";
describe("expertPortfolioFileIdsFromActivityEvents", () => {
const fid = new Types.ObjectId();
it("includes handled files after HANDLED", () => {
const ids = expertPortfolioFileIdsFromActivityEvents([
{
fileId: fid,
eventType: ExpertFileActivityType.CHECKED,
occurredAt: new Date("2026-01-01T10:00:00Z"),
},
{
fileId: fid,
eventType: ExpertFileActivityType.HANDLED,
occurredAt: new Date("2026-01-01T11:00:00Z"),
},
]);
expect(ids.has(String(fid))).toBe(true);
});
it("includes currently checked files", () => {
const ids = expertPortfolioFileIdsFromActivityEvents([
{
fileId: fid,
eventType: ExpertFileActivityType.CHECKED,
occurredAt: new Date("2026-01-01T10:00:00Z"),
},
]);
expect(ids.has(String(fid))).toBe(true);
});
it("keeps handled files after a later UNCHECKED (e.g. resend unlock)", () => {
const ids = expertPortfolioFileIdsFromActivityEvents([
{
fileId: fid,
eventType: ExpertFileActivityType.CHECKED,
occurredAt: new Date("2026-01-01T10:00:00Z"),
},
{
fileId: fid,
eventType: ExpertFileActivityType.HANDLED,
occurredAt: new Date("2026-01-01T10:30:00Z"),
},
{
fileId: fid,
eventType: ExpertFileActivityType.UNCHECKED,
occurredAt: new Date("2026-01-01T11:00:00Z"),
},
]);
expect(ids.has(String(fid))).toBe(true);
});
it("excludes files after UNCHECKED without HANDLED", () => {
const ids = expertPortfolioFileIdsFromActivityEvents([
{
fileId: fid,
eventType: ExpertFileActivityType.CHECKED,
occurredAt: new Date("2026-01-01T10:00:00Z"),
},
{
fileId: fid,
eventType: ExpertFileActivityType.UNCHECKED,
occurredAt: new Date("2026-01-01T10:30:00Z"),
},
]);
expect(ids.has(String(fid))).toBe(false);
});
});