video-ad-sdk
Version:
VAST/VPAID SDK that allows video ads to be played on top of any player
496 lines (476 loc) • 12.8 kB
text/typescript
import {
vastWrapperXML,
vastInlineXML,
wrapperParsedXML,
inlineParsedXML,
wrapperAd,
inlineAd,
vastNoAdXML,
noAdParsedXML
} from '../../../fixtures'
import {ErrorCode} from '../../tracker'
import type {VastChain} from '../../types'
import {getDetails} from '../getDetails'
describe('getDetails', () => {
let vastChain: VastChain
let inlineVastChain: VastChain
let noInlineVastChain: VastChain
let emptyVastChain: VastChain
beforeEach(() => {
vastChain = [
{
ad: inlineAd,
parsedXML: inlineParsedXML,
requestTag: 'https://test.example.com/vastadtaguri',
XML: vastInlineXML
},
{
ad: wrapperAd,
parsedXML: wrapperParsedXML,
requestTag: 'https://test.example.com/vastadtaguri',
XML: vastWrapperXML
},
{
ad: wrapperAd,
parsedXML: wrapperParsedXML,
requestTag: 'http://adtag.test.example.com',
XML: vastWrapperXML
}
]
inlineVastChain = [vastChain[0]]
noInlineVastChain = vastChain.slice(1)
emptyVastChain = [
{
ad: undefined,
errorCode: ErrorCode.UNKNOWN_ERROR,
parsedXML: noAdParsedXML,
requestTag: 'http://adtag.test.example.com',
XML: vastNoAdXML
}
]
})
it('must return the adId and adWrapperIds', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
adId: 'abc123',
adWrapperIds: ['4367623109', '4367623109']
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
adId: 'abc123',
adWrapperIds: []
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
adId: undefined,
adWrapperIds: ['4367623109', '4367623109']
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
adId: undefined,
adWrapperIds: []
})
)
})
it('must return the adSystem and adWrapperSystems', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
adSystem: 'MOL',
adWrapperSystems: ['MOL', 'MOL']
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
adSystem: 'MOL',
adWrapperSystems: []
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
adSystem: undefined,
adWrapperSystems: ['MOL', 'MOL']
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
adSystem: undefined,
adWrapperSystems: []
})
)
})
it('must return the creativeId and adWrapperCreativeIds', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeIds: ['wrapper123', 'wrapper123'],
creativeId: 'inline123'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeIds: [],
creativeId: 'inline123'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeIds: ['wrapper123', 'wrapper123'],
creativeId: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeIds: [],
creativeId: undefined
})
)
})
it('must return the creativeAdId and adWrapperCreativeAdIds', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeAdIds: ['wrapper123', 'wrapper123'],
creativeAdId: 'inline123'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeAdIds: [],
creativeAdId: 'inline123'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeAdIds: ['wrapper123', 'wrapper123'],
creativeAdId: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
adWrapperCreativeAdIds: [],
creativeAdId: undefined
})
)
})
it('must return the clickThroughUrl', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
clickThroughUrl: 'https://test.example.com/clickthrough'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
clickThroughUrl: 'https://test.example.com/clickthrough'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
clickThroughUrl: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
clickThroughUrl: undefined
})
)
})
it('must return the pricing, pricingCurrency and pricingModel', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
pricing: '25.00',
pricingCurrency: 'EUR',
pricingModel: 'cpm'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
pricing: '25.00',
pricingCurrency: 'EUR',
pricingModel: 'cpm'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
pricing: '25.00',
pricingCurrency: 'USD',
pricingModel: 'cpm'
})
)
expect(getDetails([...emptyVastChain, ...inlineVastChain])).toEqual(
expect.objectContaining({
pricing: '25.00',
pricingCurrency: 'EUR',
pricingModel: 'cpm'
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
pricing: undefined,
pricingCurrency: undefined,
pricingModel: undefined
})
)
})
it('must return the category and categoryAuthority', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
category: 'Inline Video',
categoryAuthority: 'IAB'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
category: 'Inline Video',
categoryAuthority: 'IAB'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
category: undefined,
categoryAuthority: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
category: undefined,
categoryAuthority: undefined
})
)
})
it('must return the adServingId', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
adServingId: 'ADID_INSIMPLETEST_ABC123'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
adServingId: 'ADID_INSIMPLETEST_ABC123'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
adServingId: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
adServingId: undefined
})
)
})
it('must return the vastVersion', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
vastVersion: '4.0'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
vastVersion: '4.0'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
vastVersion: '3.0'
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
vastVersion: '4.0'
})
)
expect(
getDetails([
{
ad: undefined,
errorCode: ErrorCode.UNKNOWN_ERROR,
parsedXML: '' as any,
requestTag: 'http://adtag.test.example.com',
XML: vastNoAdXML
}
])
).toEqual(
expect.objectContaining({
vastVersion: 'unknown'
})
)
})
it('must return the advertiser and adTitle', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
adTitle: 'VAST 4.0 Test',
advertiser: 'MOL',
description: 'VAST Inline'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
adTitle: 'VAST 4.0 Test',
advertiser: 'MOL',
description: 'VAST Inline'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
adTitle: undefined,
advertiser: undefined,
description: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
adTitle: undefined,
advertiser: undefined,
description: undefined
})
)
})
it('must return the creativeData', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
creativeData: {
AdParameters: 'qs=test&reddit=true',
xmlEncoded: false
}
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
creativeData: {
AdParameters: 'qs=test&reddit=true',
xmlEncoded: false
}
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
creativeData: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
creativeData: undefined
})
)
})
it('must return the linear duration and durationInMs', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
duration: '00:00:30',
durationInMs: 30000
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
duration: '00:00:30',
durationInMs: 30000
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
duration: undefined,
durationInMs: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
duration: undefined,
durationInMs: undefined
})
)
})
it('must return the universalAdId', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
universalAdId: '8465',
universalAdIdRegistry: 'Ad-ID'
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
universalAdId: '8465',
universalAdIdRegistry: 'Ad-ID'
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
universalAdId: undefined,
universalAdIdRegistry: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
universalAdId: undefined,
universalAdIdRegistry: undefined
})
)
})
it('must return the media files', () => {
expect(getDetails(vastChain).mediaFiles).toMatchSnapshot()
expect(getDetails(inlineVastChain).mediaFiles).toMatchSnapshot()
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
mediaFiles: []
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
mediaFiles: []
})
)
})
it('must return vpaid flag', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
vpaid: false
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
vpaid: false
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
vpaid: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
vpaid: undefined
})
)
})
it('must return the skipOffset, skipOffsetInMs and skippable flag', () => {
expect(getDetails(vastChain)).toEqual(
expect.objectContaining({
skipOffset: '00:00:05',
skipOffsetInMs: 5000,
skippable: true
})
)
expect(getDetails(inlineVastChain)).toEqual(
expect.objectContaining({
skipOffset: '00:00:05',
skipOffsetInMs: 5000,
skippable: true
})
)
expect(getDetails(noInlineVastChain)).toEqual(
expect.objectContaining({
skipOffset: undefined,
skipOffsetInMs: undefined,
skippable: undefined
})
)
expect(getDetails(emptyVastChain)).toEqual(
expect.objectContaining({
skipOffset: undefined,
skipOffsetInMs: undefined,
skippable: undefined
})
)
})
})