import { Campaign, RequestInventorySource, RequestType } from "../../../src/models"; import { expect } from "chai"; import { ResponseContract } from "../../../src/data-contract/response.contract"; import { RequestContract } from "../../../src/data-contract/request.contract"; import uuid = require("uuid"); import { SiteContract } from "../../../src/data-contract/site.contract"; import { FakeCampaign } from "../../unit/fake/Campaign"; export function getCampaignCandidate(id: string, creatives?: number[]): Campaign { const cm = new FakeCampaign(id); cm.creatives = creatives; return cm; } export function hasLength(response: ResponseContract, length: number): void { expect(response.campaigns.length).to.equal(length); } export function hasCampaignWithIndex( response: ResponseContract, id: string, index: number, creativeId?: number ): void { expect(response.campaigns[index].id).to.be.equal(id); if (creativeId) { expect(response.campaigns[index].creative_id).to.be.equal(creativeId); } } export class FakeRequestContractBuilder { private requestContract: RequestContract; constructor() { this.requestContract = { id: "d19ad1b3-5135-411f-a6c3-954db35381f6", request_id: "d19ad1b3-5135-411f-a6c3-954db35381f7", user: { odid: "aa922640-b067-5418-9a90-3ce74453ca87", is_gdpr_applied: true, }, app: { app_id: "82349", name: "appName", bundle_id: "a.valid.bundle", sdk_version: "1.2.3", ad_unit_id: "82349_default", app_api_key: "111", seller_id: "sellerID", publisher_is_network_partner: false, publisher_name: "publisherName", ad_unit_type: "ad_unit_type", eecpm: 1, }, device: { ip: "1.1.1.1", ua: "Mozilla/5.0 (Linux; Android 5.1.1; SM-G360T1 Build/LMY47X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.124 Mobile Safari/537.36", os: "ANDROID", ifa: "ifa", screen_size: { width: 300, height: 600, density: 2, }, }, context: { country: "FR", ssp: "ogury" }, campaigns: [{ id: "10001", category_iab: [] }], source_type: "", bidFloor: 1, at: 1, size: 3, }; } withType(type: RequestType): FakeRequestContractBuilder { this.requestContract.type = type; return this; } withSite(site: SiteContract): FakeRequestContractBuilder { this.requestContract.site = site; return this; } withSourceType(sourceType: string): FakeRequestContractBuilder { this.requestContract.source_type = sourceType; return this; } withRandomId(): FakeRequestContractBuilder { this.requestContract.id = uuid.v4(); return this; } withBidfloor(bidfloor: number | undefined): FakeRequestContractBuilder { this.requestContract.bidFloor = bidfloor; return this; } withCampaigns(...campaigns: Campaign[]): FakeRequestContractBuilder { this.requestContract.campaigns = campaigns.map((c) => { return { id: c.id, category_iab: [], creatives: c.creatives }; }); return this; } withIP(ip: string): FakeRequestContractBuilder { this.requestContract.device.ip = ip; return this; } withIPv6(ipv6: string): FakeRequestContractBuilder { this.requestContract.device.ipv6 = ipv6; return this; } withUserAgent(ua: string): FakeRequestContractBuilder { this.requestContract.device.ua = ua; return this; } withAppBundleOrDomain(appBundleOrDomain: string): FakeRequestContractBuilder { this.requestContract.app ??= {}; this.requestContract.app.bundle_id = appBundleOrDomain; return this; } withSize(size: number): FakeRequestContractBuilder { this.requestContract.size = size; return this; } withOS(os: string): FakeRequestContractBuilder { this.requestContract.device.os = os; return this; } withHeaderBiddingType(headerBiddingType: string): FakeRequestContractBuilder { this.requestContract.header_bidding_type = headerBiddingType; return this; } withTMax(tMax: number): FakeRequestContractBuilder { this.requestContract.tmax = tMax; return this; } build(): RequestContract { return this.requestContract; } }