import { expect } from "chai"; import { Campaign } from "../../../src/models"; import { StepBuilder } from "../../../src/steps/stepBuilder"; import { FakeRequestBuilder } from "../fakeRequestBuilder"; import CampaignSizeStep from "../../../src/steps/campaignSize/campaignSize.step"; import { FakeCampaign } from "../fake/Campaign"; describe("CampaignSizeStep", function () { const campaignSizeStep = new StepBuilder(new CampaignSizeStep()).build(); const campaigns: Campaign[] = [ new FakeCampaign("1"), new FakeCampaign("2"), new FakeCampaign("3"), new FakeCampaign("4"), ]; it("should not change the campaigns when size is not set", async function () { const request = new FakeRequestBuilder().withCampaigns(...campaigns).build(); const result = await campaignSizeStep.execute(request); expect(result.passedCampaigns.length).to.equal(4); expect(request.campaigns.length).to.equal(4); expect(result.passedCampaigns[0].id).to.equal("1"); expect(result.passedCampaigns[1].id).to.equal("2"); expect(result.passedCampaigns[2].id).to.equal("3"); expect(result.passedCampaigns[3].id).to.equal("4"); }); it("should not change the campaigns when size is bigger than the number of campaigns", async function () { const request = new FakeRequestBuilder() .withCampaigns(...campaigns) .withSize(5) .build(); const result = await campaignSizeStep.execute(request); expect(result.passedCampaigns.length).to.equal(4); expect(request.campaigns.length).to.equal(4); expect(result.passedCampaigns[0].id).to.equal("1"); expect(result.passedCampaigns[1].id).to.equal("2"); expect(result.passedCampaigns[2].id).to.equal("3"); expect(result.passedCampaigns[3].id).to.equal("4"); }); it("should return the first 2 campaigns with size 2", async function () { const request = new FakeRequestBuilder() .withCampaigns(...campaigns) .withSize(2) .build(); const result = await campaignSizeStep.execute(request); expect(result.passedCampaigns.length).to.equal(2); expect(request.campaigns.length).to.equal(2); expect(result.passedCampaigns[0].id).to.equal("1"); expect(result.passedCampaigns[1].id).to.equal("2"); }); });