import { expect } from "chai"; import { FakeRequestBuilder } from "../fakeRequestBuilder"; import { StepBuilder } from "../../../src/steps/stepBuilder"; import PriorityStep from "../../../src/steps/priority/priority.step"; import { CampaignModelFake } from "../fake/CampaignModelFake"; import { Campaign } from "../../../src/models"; import { FakeCampaign } from "../fake/Campaign"; describe("Priority", function () { let campaigns: Campaign[]; let priorityStep: any; let campaignModel; before(() => { campaignModel = new CampaignModelFake([]); campaigns = [ new FakeCampaign("1"), new FakeCampaign("2"), new FakeCampaign("3"), new FakeCampaign("4"), new FakeCampaign("5"), new FakeCampaign("6"), new FakeCampaign("7"), new FakeCampaign("8"), new FakeCampaign("9"), ]; priorityStep = new StepBuilder(new PriorityStep(campaignModel)).build(); }); beforeEach(() => {}); it("should sort campaigns according to their priority", async function () { // we expect : // bucket 1: [6] // bucket 2: [2, 3, 4, 8, 9] // bucket 3: [1, 5, 7] const stepRes = await priorityStep.execute( new FakeRequestBuilder() .withCampaigns(...campaigns) .withCampaignData([ { id: "1", priority: 3 }, { id: "2", priority: 2 }, { id: "3", priority: 2 }, { id: "4", priority: 2 }, { id: "5", priority: 3 }, { id: "6", priority: 1 }, { id: "7", priority: 3 }, { id: "8", priority: 2 }, { id: "9", priority: 2 }, ]) .build() ); expect(stepRes.passedCampaigns.length).to.equal(9); expect(stepRes.passedCampaigns).to.have.ordered.members([ campaigns[5], campaigns[1], campaigns[2], campaigns[3], campaigns[7], campaigns[8], campaigns[0], campaigns[4], campaigns[6], ]); }); });