import { expect } from "chai"; import { FakeRequestBuilder } from "../fakeRequestBuilder"; import ExternalBlacklistStep from "../../../src/steps/externalBlacklist/externalBlacklist.step"; import { StepBuilder } from "../../../src/steps/stepBuilder"; import { ExternalBlacklistService } from "../../../src/services/ExternalBlacklist.service"; import { Step } from "../../../src/steps/step"; import { Campaign } from "../../../src/models"; import { FakeCampaign } from "../fake/Campaign"; describe("ExternalBlacklistStep", function () { let externalBlacklistStep: Step; let externalBlacklistService: ExternalBlacklistService; beforeEach(() => { externalBlacklistService = new ExternalBlacklistService(null as any, null as any, 0, "", ""); externalBlacklistStep = new StepBuilder( new ExternalBlacklistStep(externalBlacklistService) ).build(); }); it("should pass all non-blacklisted campaigns", async function () { const campaigns: Campaign[] = [ new FakeCampaign("1"), new FakeCampaign("2"), new FakeCampaign("3"), ]; const request = new FakeRequestBuilder().withCampaigns(...campaigns).build(); const result = await externalBlacklistStep.execute(request); expect(result.passedCampaigns.length).to.equal(3); expect(result.passedCampaigns.find((c) => c.id === "1")).not.to.be.undefined; expect(result.passedCampaigns.find((c) => c.id === "2")).not.to.be.undefined; expect(result.passedCampaigns.find((c) => c.id === "3")).not.to.be.undefined; }); it("should filter out blacklisted campaigns", async function () { const campaigns: Campaign[] = [ new FakeCampaign("1"), new FakeCampaign("2"), new FakeCampaign("3"), ]; externalBlacklistService.blacklist = new Set(["1", "3"]); const request = new FakeRequestBuilder().withCampaigns(...campaigns).build(); const result = await externalBlacklistStep.execute(request); expect(result.passedCampaigns.length).to.equal(1); expect(result.passedCampaigns.find((c) => c.id === "2")).not.to.be.undefined; }); });