Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Orchard\Tests\Lib\Web\Metadata\Store\Ddexern;
- use Orchard\Tests\Lib\Web\Metadata\Store\BaseTest;
- class DefaultVersion030400Test extends BaseTest
- {
- /**
- * Sets up the fixture, for example, opens a network connection.
- * This method is called before a test is executed.
- */
- protected function setUp()
- {
- parent::setUp();
- $this->object = $this->getMockBuilder('\Web_Metadata_Store_Ddexern_Version030400_Default')
- ->setMethods(
- ['fetchGenresMappingsFromVAPI', 'fetchGenresFromDatabase']
- )
- ->getMock();
- $this->object->method('fetchGenresMappingsFromVAPI')->willReturn($this->getGenres());
- $this->object->method('fetchGenresFromDatabase')->willReturn($this->getGenres());
- $this->object->setDataSource($this->db);
- $this->object->setService($this->service);
- }
- /**
- * test createMessageSender
- */
- public function testCreateMessageSender()
- {
- $expectedXmlStr = '<testroot>'
- . '<MessageSender><PartyId IsDPID="true">' . $this->samplePartyIds['orchard'] . '</PartyId>'
- . '<PartyName><FullName>The Orchard Enterprises</FullName></PartyName>'
- . '<TradingName>The Orchard Enterprises, LLC</TradingName></MessageSender>'
- . '<MessageRecipient><PartyId IsDPID="true">DDEXPARTYID9999</PartyId>'
- . '<PartyName><FullName>Sample DMS</FullName></PartyName></MessageRecipient>'
- . '</testroot>';
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(152, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateMessageHeaderParties', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test createMessageSenderRed with RED release
- */
- public function testCreateMessageSenderRed()
- {
- $this->sampleIsRed = true;
- $expectedXmlStr = '<testroot>'
- . '<MessageSender><PartyId IsDPID="true">' . $this->samplePartyIds['orchard'] . '</PartyId>'
- . '<PartyName><FullName>The Orchard Enterprises</FullName></PartyName>'
- . '<TradingName>The Orchard Enterprises, LLC</TradingName></MessageSender>'
- . '<SentOnBehalfOf><PartyId IsDPID="true">' . $this->samplePartyIds['red'] . '</PartyId>'
- . '<PartyName><FullName>RED</FullName></PartyName></SentOnBehalfOf>'
- . '<MessageRecipient><PartyId IsDPID="true">DDEXPARTYID9999</PartyId>'
- . '<PartyName><FullName>Sample DMS</FullName></PartyName></MessageRecipient>'
- . '</testroot>';
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(286, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateMessageHeaderParties', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test createMessageSenderSomLivre for Som Livre
- */
- public function testCreateMessageSenderSomLivre()
- {
- $expectedXmlStr = '<testroot>'
- . '<MessageSender><PartyId IsDPID="true">' . $this->samplePartyIds['orchard'] . '</PartyId>'
- . '<PartyName><FullName>The Orchard Enterprises</FullName></PartyName>'
- . '<TradingName>The Orchard Enterprises, LLC</TradingName></MessageSender>'
- . '<SentOnBehalfOf><PartyId IsDPID="true">' . $this->samplePartyIds['somlivre'] . '</PartyId>'
- . '<PartyName><FullName>Som Livre</FullName></PartyName></SentOnBehalfOf>'
- . '<MessageRecipient><PartyId IsDPID="true">DDEXPARTYID9999</PartyId>'
- . '<PartyName><FullName>Sample DMS</FullName></PartyName></MessageRecipient>'
- . '</testroot>';
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(592, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateMessageHeaderParties', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateSoundRecordingResource
- */
- public function testGenerateSoundRecordingResource()
- {
- $track = $this->getTracks()[0];
- $genre = $this->getGenres()[0];
- $expectedXmlStr = '<testroot>'
- . '<SoundRecording LanguageAndScriptCode="en">'
- . '<SoundRecordingType>MusicalWorkSoundRecording</SoundRecordingType>'
- . '<IsArtistRelated>true</IsArtistRelated>'
- . '<SoundRecordingId><ISRC>' . $track->isrc . '</ISRC></SoundRecordingId>'
- . '<ResourceReference>A1</ResourceReference>'
- . '<ReferenceTitle><TitleText>' . $track->track_name . '</TitleText><SubTitle/></ReferenceTitle>'
- . '<IsBonusResource>false</IsBonusResource>'
- . '<LanguageOfPerformance>en</LanguageOfPerformance>'
- . '<Duration>PT0H3M25S</Duration>'
- . '<SoundRecordingDetailsByTerritory>'
- . '<TerritoryCode>Worldwide</TerritoryCode>'
- . '<Title TitleType="OriginalTitle"><TitleText>' . $track->track_name . '</TitleText><SubTitle/></Title>'
- . '<Title TitleType="DisplayTitle"><TitleText>' . $track->track_name . '</TitleText><SubTitle/></Title>'
- . '<DisplayArtist SequenceNumber="1">'
- . '<PartyName><FullName>Test Track Artist #1</FullName></PartyName>'
- . '<ArtistRole>MainArtist</ArtistRole>'
- . '</DisplayArtist>'
- . '<DisplayArtist SequenceNumber="2">'
- . '<PartyName><FullName>Test Track Artist #2</FullName></PartyName>'
- . '<ArtistRole>FeaturedArtist</ArtistRole>'
- . '</DisplayArtist>'
- . '<DisplayArtist SequenceNumber="3">'
- . '<PartyName><FullName>Test Track Artist #3</FullName></PartyName>'
- . '<ArtistRole Namespace="DPID:PADPIDA2012041004F" UserDefinedValue="Remixer">UserDefined</ArtistRole>'
- . '</DisplayArtist>'
- . '<LabelName>Test Label</LabelName>'
- . '<PLine><Year>2016</Year><PLineText>(P) ' . $track->p_line . '</PLineText></PLine>'
- . '<SequenceNumber>1</SequenceNumber>'
- . '<Genre>'
- . '<GenreText>' . $genre->genre . '</GenreText><SubGenre>' . $genre->subgenre . '</SubGenre>'
- . '</Genre>'
- . '<ParentalWarningType>NotExplicit</ParentalWarningType>'
- . '<TechnicalSoundRecordingDetails>'
- . '<TechnicalResourceDetailsReference>T1</TechnicalResourceDetailsReference>'
- . '<AudioCodecType>FLAC</AudioCodecType>'
- . '<NumberOfChannels>2</NumberOfChannels>'
- . '<SamplingRate UnitOfMeasure="Hz">44100</SamplingRate>'
- . '<IsPreview>false</IsPreview>'
- . '<PreviewDetails>'
- . '<StartPoint>' . ($track->preview_start_time / 1000) . '</StartPoint>'
- . '<Duration>PT30S</Duration>'
- . '<ExpressionType>Instructive</ExpressionType>'
- . '</PreviewDetails>'
- . '<File>'
- . '<FileName>123456789012_1_1.flac</FileName>'
- . '<HashSum>'
- . '<HashSum>2cacc564daef0771d74ac7423d451b88</HashSum>'
- . '<HashSumAlgorithmType>MD5</HashSumAlgorithmType>'
- . '</HashSum>'
- . '</File>'
- . '</TechnicalSoundRecordingDetails>'
- . '</SoundRecordingDetailsByTerritory>'
- . '</SoundRecording></testroot>';
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(152, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateSoundRecordingResource', array(&$actualNode, $track, 'A1'));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateSoundRecordingResource for Agedi
- */
- public function testGenerateSoundRecordingResourceAgedi()
- {
- $track = $this->getTracks()[0];
- $genre = $this->getGenres()[0];
- $expectedXmlStr = '<testroot>'
- . '<SoundRecording LanguageAndScriptCode="en">'
- . '<SoundRecordingType>MusicalWorkSoundRecording</SoundRecordingType>'
- . '<IsArtistRelated>true</IsArtistRelated>'
- . '<SoundRecordingId><ISRC>' . $track->isrc . '</ISRC></SoundRecordingId>'
- . '<ResourceReference>A1</ResourceReference>'
- . '<ReferenceTitle><TitleText>' . $track->track_name . '</TitleText><SubTitle/></ReferenceTitle>'
- . '<IsBonusResource>false</IsBonusResource>'
- . '<LanguageOfPerformance>en</LanguageOfPerformance>'
- . '<Duration>PT0H3M25S</Duration>'
- . '<SoundRecordingDetailsByTerritory>'
- . '<TerritoryCode>Worldwide</TerritoryCode>'
- . '<Title TitleType="OriginalTitle"><TitleText>' . $track->track_name . '</TitleText><SubTitle/></Title>'
- . '<Title TitleType="DisplayTitle"><TitleText>' . $track->track_name . '</TitleText><SubTitle/></Title>'
- . '<DisplayArtist SequenceNumber="1">'
- . '<PartyName><FullName>Test Track Artist #1</FullName></PartyName>'
- . '<ArtistRole>MainArtist</ArtistRole>'
- . '</DisplayArtist>'
- . '<DisplayArtist SequenceNumber="2">'
- . '<PartyName><FullName>Test Track Artist #2</FullName></PartyName>'
- . '<ArtistRole>FeaturedArtist</ArtistRole>'
- . '</DisplayArtist>'
- . '<DisplayArtist SequenceNumber="3">'
- . '<PartyName><FullName>Test Track Artist #3</FullName></PartyName>'
- . '<ArtistRole Namespace="DPID:PADPIDA2012041004F" UserDefinedValue="Remixer">UserDefined</ArtistRole>'
- . '</DisplayArtist>'
- . '<LabelName>Test Label</LabelName>'
- . '<RightsController>'
- . '<PartyName><FullName>The Orchard Enterprises</FullName></PartyName>'
- . '<PartyId IsDPID="true">PADPIDA2012041004F</PartyId>'
- . '<RightsControllerRole>RightsController</RightsControllerRole>'
- . '<RightSharePercentage>100</RightSharePercentage>'
- . '</RightsController>'
- . '<PLine><Year>2016</Year><PLineText>(P) ' . $track->p_line . '</PLineText></PLine>'
- . '<SequenceNumber>1</SequenceNumber>'
- . '<Genre>'
- . '<GenreText>' . $genre->genre . '</GenreText><SubGenre>' . $genre->subgenre . '</SubGenre>'
- . '</Genre>'
- . '<ParentalWarningType>NotExplicit</ParentalWarningType>'
- . '<TechnicalSoundRecordingDetails>'
- . '<TechnicalResourceDetailsReference>T1</TechnicalResourceDetailsReference>'
- . '<AudioCodecType>FLAC</AudioCodecType>'
- . '<NumberOfChannels>2</NumberOfChannels>'
- . '<SamplingRate UnitOfMeasure="Hz">44100</SamplingRate>'
- . '<IsPreview>false</IsPreview>'
- . '<PreviewDetails>'
- . '<StartPoint>' . ($track->preview_start_time / 1000) . '</StartPoint>'
- . '<Duration>PT30S</Duration>'
- . '<ExpressionType>Instructive</ExpressionType>'
- . '</PreviewDetails>'
- . '<File>'
- . '<FileName>123456789012_1_1.flac</FileName>'
- . '<HashSum>'
- . '<HashSum>2cacc564daef0771d74ac7423d451b88</HashSum>'
- . '<HashSumAlgorithmType>MD5</HashSumAlgorithmType>'
- . '</HashSum>'
- . '</File>'
- . '</TechnicalSoundRecordingDetails>'
- . '</SoundRecordingDetailsByTerritory>'
- . '</SoundRecording></testroot>';
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(570, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateSoundRecordingResource', array(&$actualNode, $track, 'A1'));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateSoundRecordingResource for Agedi
- */
- public function testGenerateSoundRecordingResourceSoundExchange()
- {
- $track = $this->getTracks()[0];
- $genre = $this->getGenres()[0];
- $expectedXmlStr = '<testroot>'
- . '<SoundRecording LanguageAndScriptCode="en">'
- . '<SoundRecordingType>MusicalWorkSoundRecording</SoundRecordingType>'
- . '<IsArtistRelated>true</IsArtistRelated>'
- . '<SoundRecordingId><ISRC>' . $track->isrc . '</ISRC></SoundRecordingId>'
- . '<ResourceReference>A1</ResourceReference>'
- . '<ReferenceTitle><TitleText>' . $track->track_name . '</TitleText><SubTitle/></ReferenceTitle>'
- . '<IsBonusResource>false</IsBonusResource>'
- . '<LanguageOfPerformance>en</LanguageOfPerformance>'
- . '<Duration>PT0H3M25S</Duration>'
- . '<SoundRecordingDetailsByTerritory>'
- . '<TerritoryCode>Worldwide</TerritoryCode>'
- . '<Title TitleType="OriginalTitle"><TitleText>' . $track->track_name . '</TitleText><SubTitle/></Title>'
- . '<Title TitleType="DisplayTitle"><TitleText>' . $track->track_name . '</TitleText><SubTitle/></Title>'
- . '<DisplayArtist SequenceNumber="1">'
- . '<PartyName><FullName>Test Track Artist #1</FullName></PartyName>'
- . '<ArtistRole>MainArtist</ArtistRole>'
- . '</DisplayArtist>'
- . '<DisplayArtist SequenceNumber="2">'
- . '<PartyName><FullName>Test Track Artist #2</FullName></PartyName>'
- . '<ArtistRole>FeaturedArtist</ArtistRole>'
- . '</DisplayArtist>'
- . '<DisplayArtist SequenceNumber="3">'
- . '<PartyName><FullName>Test Track Artist #3</FullName></PartyName>'
- . '<ArtistRole Namespace="DPID:PADPIDA2012041004F" UserDefinedValue="Remixer">UserDefined</ArtistRole>'
- . '</DisplayArtist>'
- . '<LabelName>Test Label</LabelName>'
- . '<RightsController>'
- . '<PartyName><FullName>The Orchard Enterprises</FullName></PartyName>'
- . '<PartyId IsDPID="true">PADPIDA2012041004F</PartyId>'
- . '<RightsControllerRole>RightsController</RightsControllerRole>'
- . '<RightSharePercentage>1.00</RightSharePercentage>'
- . '</RightsController>'
- . '<PLine><Year>2016</Year><PLineText>(P) ' . $track->p_line . '</PLineText></PLine>'
- . '<SequenceNumber>1</SequenceNumber>'
- . '<Genre>'
- . '<GenreText>' . $genre->genre . '</GenreText><SubGenre>' . $genre->subgenre . '</SubGenre>'
- . '</Genre>'
- . '<ParentalWarningType>NotExplicit</ParentalWarningType>'
- . '<TechnicalSoundRecordingDetails>'
- . '<TechnicalResourceDetailsReference>T1</TechnicalResourceDetailsReference>'
- . '<AudioCodecType>FLAC</AudioCodecType>'
- . '<NumberOfChannels>2</NumberOfChannels>'
- . '<SamplingRate UnitOfMeasure="Hz">44100</SamplingRate>'
- . '<IsPreview>false</IsPreview>'
- . '<PreviewDetails>'
- . '<StartPoint>' . ($track->preview_start_time / 1000) . '</StartPoint>'
- . '<Duration>PT30S</Duration>'
- . '<ExpressionType>Instructive</ExpressionType>'
- . '</PreviewDetails>'
- . '<File>'
- . '<FileName>123456789012_1_1.flac</FileName>'
- . '<HashSum>'
- . '<HashSum>2cacc564daef0771d74ac7423d451b88</HashSum>'
- . '<HashSumAlgorithmType>MD5</HashSumAlgorithmType>'
- . '</HashSum>'
- . '</File>'
- . '</TechnicalSoundRecordingDetails>'
- . '</SoundRecordingDetailsByTerritory>'
- . '</SoundRecording></testroot>';
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(549, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateSoundRecordingResource', array(&$actualNode, $track, 'A1'));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList
- * - test dms supports download and streaming
- */
- public function testGenerateDealList()
- {
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #2 Release (R2) - album_download_only
- // Track #3 Release (R3) - album_track_download
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R3</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #4 Release (R4) - album_download_stream
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R4</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #5 Release (R5) - stream_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R5</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(286, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for metadata update
- * - test dms supports download and streaming
- */
- public function testGenerateDealListUpdate()
- {
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #2 Release (R2) - album_download_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R2</DealReleaseReference>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>FR</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #3 Release (R3) - album_track_download
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R3</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #4 Release (R4) - album_download_stream
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R4</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #5 Release (R5) - stream_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R5</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(286, 'release', 'metadata_update'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList
- * - test dms supports download only
- */
- public function testGenerateDealListDownloadOnly()
- {
- $this->sampleDmsServiceType = self::TYPE_DMS_SERVICE_DOWNLOAD;
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #2 Release (R2) - album_download_only
- // Track #3 Release (R3) - album_track_download
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R3</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #4 Release (R4) - album_download_stream
- // Track #5 Release (R5) - stream_only
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(286, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for metadata update
- * - test dms supports download only
- */
- public function testGenerateDealListDownloadOnlyUpdate()
- {
- $this->sampleDmsServiceType = self::TYPE_DMS_SERVICE_DOWNLOAD;
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #2 Release (R2) - album_download_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R2</DealReleaseReference>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>FR</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #3 Release (R3) - album_track_download
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R3</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #4 Release (R4) - album_download_stream
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R4</DealReleaseReference>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>FR</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #5 Release (R5) - stream_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R5</DealReleaseReference>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>FR</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(286, 'release', 'metadata_update'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList
- * - test dms supports streaming only
- */
- public function testGenerateDealListStreamOnly()
- {
- $this->sampleDmsServiceType = self::TYPE_DMS_SERVICE_STREAM;
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #2 Release (R2) - album_download_only
- // Track #3 Release (R3) - album_track_download
- // Track #4 Release (R4) - album_download_stream
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R4</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #5 Release (R5) - stream_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R5</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(286, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for metadata update
- * - test dms supports streaming only
- */
- public function testGenerateDealListStreamOnlyUpdate()
- {
- $this->sampleDmsServiceType = self::TYPE_DMS_SERVICE_STREAM;
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #2 Release (R2) - album_download_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R2</DealReleaseReference>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>FR</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #3 Release (R3) - album_track_download
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R3</DealReleaseReference>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>FR</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #4 Release (R4) - album_download_stream
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R4</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #5 Release (R5) - stream_only
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R5</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><TakeDown>true</TakeDown>'
- . '<TerritoryCode>FR</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-02</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(286, 'release', 'metadata_update'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for Google
- * - test dms supports download and streaming
- */
- public function testGenerateDealListGoogle()
- {
- $this->sampleHasPricing = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/DealListGoogle.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(496, 'release', 'metadata_update'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for Google with no carvout
- * - test dms supports download and streaming
- */
- public function testGenerateDealListGoogleNoCarveout()
- {
- $this->sampleHasCarveout = false;
- $this->sampleHasPricing = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/DealListGoogleNoCarveout.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(496, 'release', 'metadata_update'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for Google with deleted release
- * - test dms supports download and streaming
- */
- public function testGenerateDealListGoogleDeletedRelease()
- {
- $this->sampleIsDeleted = true;
- $this->sampleHasPricing = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/DealListGoogleDeletedRelease.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(496, 'release', 'metadata_update'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for Amazon
- * - test dms supports download and streaming
- */
- public function testGenerateDealListAmazon()
- {
- $this->sampleHasPricing = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/DealListAmazon.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(187, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for Amazon
- * - test dms supports download and streaming
- */
- public function testGenerateDealListAmazonInstantGrat()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE;
- $this->sampleHasInstantGrat = true;
- $this->sampleHasPricing = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/DealListAmazonInstantGrat.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(187, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for Amazon
- * - test dms supports download and streaming
- */
- public function testGenerateDealListAmazonNoCarveout()
- {
- $this->sampleHasCarveout = false;
- $this->sampleHasPricing = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/DealListAmazonNoCarveout.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(187, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList for Amazon with deleted release
- * - test dms supports download and streaming
- */
- public function testGenerateDealListAmazonDeletedRelease()
- {
- $this->sampleIsDeleted = true;
- $this->sampleHasPricing = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/DealListAmazonDeletedRelease.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(187, 'release', 'metadata_update'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList
- * - test dms using DmsPolicy profile
- */
- public function testGenerateDealListOverrideTurkcellVideo()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #6 Release (R6) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R6</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(698, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList
- * - test dms supports download and streaming with pricing
- */
- public function testGenerateDealListPricing()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE;
- $this->sampleHasPricing = true;
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">10</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">20</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>GB</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">3</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">1</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">2</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>GB</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">30</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(100, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList
- * - test dms supports download and streaming with pricing
- */
- public function testGenerateDealListServicePricing()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE;
- $this->sampleHasPricing = true;
- $this->accessProperty($this->object, 'pricingDmsIds', array(100)); // set to use service
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">101</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>GB</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">201</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">301</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>GB</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">401</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(100, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList
- * - test dms supports download and streaming with interval pricing
- */
- public function testGenerateDealListIntervalPricing()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE;
- $this->sampleHasPricing = true;
- $this->sampleHasIntervalPricing = true;
- $this->accessProperty($this->object, 'pricingDmsIds', array(100)); // set to use service
- $expectedXmlStr = '<testroot>'
- . '<DealList>'
- // Album Release (R0)
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R0</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">RIP1</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate><EndDate>2017-04-01</EndDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">RIP2</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2017-04-01</StartDate><EndDate>2017-05-01</EndDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">RIP3</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2017-05-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">111</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>GB</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">211</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- // Track #1 Release (R1) - all
- . '<ReleaseDeal>'
- . '<DealReleaseReference>R1</DealReleaseReference>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">TIP1</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate><EndDate>2017-04-01</EndDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">TIP2</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2017-04-01</StartDate><EndDate>2017-05-01</EndDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>US</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">TIP3</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2017-05-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">311</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>PayAsYouGoModel</CommercialModelType>'
- . '<Usage><UseType>PermanentDownload</UseType></Usage>'
- . '<TerritoryCode>GB</TerritoryCode>'
- . '<PriceInformation><PriceType Namespace="DPID:PADPIDA2012041004F">411</PriceType></PriceInformation>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<Deal><DealTerms><CommercialModelType>SubscriptionModel</CommercialModelType>'
- . '<Usage><UseType>ConditionalDownload</UseType><UseType>NonInteractiveStream</UseType><UseType>OnDemandStream</UseType></Usage>'
- . '<TerritoryCode>CA</TerritoryCode><TerritoryCode>GB</TerritoryCode><TerritoryCode>US</TerritoryCode>'
- . '<ValidityPeriod><StartDate>2016-01-01</StartDate></ValidityPeriod></DealTerms></Deal>'
- . '<EffectiveDate>{{effdate}}</EffectiveDate>'
- . '</ReleaseDeal>'
- . '</DealList></testroot>';
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(100, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test testCreateMessageSenderGoogleMusic for Google Music
- */
- public function testCreateMessageSenderGoogleMusic()
- {
- $this->sampleIsRed = true;
- $expectedXmlStr = file_get_contents('./fixtures/ddex34/GoogleMusicDeprecateTag.xml');
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(496, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateMessageHeaderParties', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateVideoResource to display artist Youtube delivery settings
- */
- public function testGenerateVideoResourceToDisplayArtistYoutubeDeliverySetting()
- {
- $this->sampleIsSme = true;
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->sampleAssetType = self::TYPE_ASSET_VIDEO;
- $release = $this->getRelease()[0];
- $track = $this->getTracks()[0];
- $genre = $this->getGenres()[0];
- $customId = $release->upc . '_' . $track->isrc . '_' . $track->id;
- $performerArtists = array();
- $featuredArtists = array();
- foreach ($this->getArtists('Track') as $artist) {
- if ($artist->role == 'performer') {
- $performerArtists[] = $artist->name;
- }
- if ($artist->role == 'featuring') {
- $featuredArtists[] = $artist->name;
- }
- }
- $performers = !empty($performerArtists) ? implode(', ', $performerArtists) . ' - ' : '';
- $featured = !empty($featuredArtists) ? ' (ft. ' . implode(', ', $featuredArtists) . ')' : '';
- $titleText = $performers . $track->track_name . $featured;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/generateVideoResourceArtistYTDeliverySetting.xml');
- $expectedXmlStr = str_replace('{{trackisrc}}', $track->isrc, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{customid}}', $customId, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{channelname}}', $release->channel_name, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{trackname}}', $titleText, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{genre}}', $genre->genre, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{subgenre}}', $genre->subgenre, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{pline}}', $track->p_line, $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateVideoResource', array(&$actualNode, $track, 'A1'));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateReleaseDeal to display AdvertisementSupportedModel
- */
- public function testGenerateReleaseDealYoutubeArtTrack()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->sampleAssetType = self::TYPE_ASSET_VIDEO;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/DealListYoutubeArtTrack.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateTerritoryDetailsSet to display RightsController tag for music video release
- */
- public function testGenerateTerritoryDetailsSetToDisplayRightController()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->sampleAssetType = self::TYPE_ASSET_VIDEO;
- $track = $this->getTracks()[0];
- $performerArtists = array();
- $featuredArtists = array();
- foreach ($this->getArtists('Track') as $artist) {
- if ($artist->role == 'performer') {
- $performerArtists[] = $artist->name;
- }
- if ($artist->role == 'featuring') {
- $featuredArtists[] = $artist->name;
- }
- }
- $performers = !empty($performerArtists) ? implode(', ', $performerArtists) . ' - ' : '';
- $featured = !empty($featuredArtists) ? ' (ft. ' . implode(', ', $featuredArtists) . ')' : '';
- $titleText = $performers . $track->track_name . $featured;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/VideoDetailsByTerritoryYouTubeArtTrack.xml');
- $expectedXmlStr = str_replace('{{trackname}}', $titleText, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{pline}}', $track->p_line, $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateTerritoryDetailsSet', array(&$actualNode, $track));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * Test generateAlbumRelease() to display title text for music video release.
- */
- public function testGenerateAlbumReleaseForYoutubeArtTrack()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $releaseObj = $this->getRelease()[0];
- $performerArtists = array();
- $featuredArtists = array();
- foreach ($this->getArtists('Release') as $artist) {
- if ($artist->role == 'performer') {
- $performerArtists[] = $artist->name;
- }
- if ($artist->role == 'featuring') {
- $featuredArtists[] = $artist->name;
- }
- }
- $performers = !empty($performerArtists) ? implode(', ', $performerArtists) . ' - ' : '';
- $featured = !empty($featuredArtists) ? ' (ft. ' . implode(', ', $featuredArtists) . ')' : '';
- $titleText = $performers . $releaseObj->release_name . $featured;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/AlbumReleaseYoutubeArtTrack.xml');
- $expectedXmlStr = str_replace('{{titletext}}', $titleText, $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'assignResourceReference', array('A1', 'music', '', 1, 6));
- $this->invokeMethod($this->object, 'generateAlbumRelease', array(&$actualNode, $releaseObj));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * Test generateTrackRelease() to display title text for music video release.
- */
- public function testGenerateTrackReleaseForYoutubeArtTrack()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->accessProperty($this->object, 'isReleasePlineInXmlEnabled', false);
- $track = $this->getTracks()[0];
- $performerArtists = array();
- $featuredArtists = array();
- foreach ($this->getArtists('Track') as $artist) {
- if ($artist->role == 'performer') {
- $performerArtists[] = $artist->name;
- }
- if ($artist->role == 'featuring') {
- $featuredArtists[] = $artist->name;
- }
- }
- $performers = !empty($performerArtists) ? implode(', ', $performerArtists) . ' - ' : '';
- $featured = !empty($featuredArtists) ? ' (ft. ' . implode(', ', $featuredArtists) . ')' : '';
- $titleText = $performers . $track->track_name . $featured;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/TrackReleaseYoutubeArtTrack.xml');
- $expectedXmlStr = str_replace('{{pLine}}', $track->p_line, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{titletext}}', $titleText, $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'assignResourceReference', array('A1', 'music', '', 1, 6));
- $this->invokeMethod($this->object, 'generateTrackRelease', array(&$actualNode, $track));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * Test validateMusicVideoReleasesForVevoControlledYTSetting() to validate music video releases.
- */
- public function testValidateMusicVideoReleasesForVevoControlledYTSetting()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->sampleHasVevoControlledYTSetting = true;
- $this->expectException('Web_Metadata_Exception');
- $this->expectExceptionMessage('[UPC:123456789012] cannot be delivered directly to YouTube because the destination is a Vevo artist YouTube channel. This UPC must be delivered to Vevo to appear on YouTube.');
- $this->expectExceptionCode(\Web_Metadata_Exception::MusicVideoReleaseVevoControlledException);
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->assertTrue(true);
- }
- /**
- * test generateMessageHeaderParties with RED release to deprecate <SentOnBehalfOf> tag for dms : 187
- */
- public function testCreateMessageSenderforDMS187()
- {
- $this->sampleIsRed = true;
- $this->accessProperty($this->object, 'sentOfBehalfOfRed', array(4, 286));
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/Dms187DeprecateSentOnBehalftag.xml');
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(187, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateMessageHeaderParties', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList to display product time of release.
- */
- public function testTimeOfDayGMT()
- {
- $this->sampleHasTimeOfDay = true;
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE;
- $this->sampleFeature['timed_release_metadata_updates'] = 'enabled';
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/DealListWithTimeOfRelease.xml');
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedXmlStr = str_replace('{{startdatetime}}', '2016-01-01T17:23:00Z', $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->timedReleaseMetaUpdate = true;
- $this->object->newVideoDelivery = true;
- $this->object->setOptions($this->getOptions(117, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateDealList to display product time of release.
- */
- public function testTimeOfDayLocal()
- {
- $this->sampleHasTimeOfDay = true;
- $this->sampleHasTimeOfDayTZ = 'local';
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE;
- $this->sampleFeature['timed_release_metadata_updates'] = 'enabled';
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/DealListWithTimeOfRelease.xml');
- $expectedXmlStr = str_replace('{{startdatetime}}', '2016-01-01T17:23:00', $expectedXmlStr);
- $expectedXmlStr = str_replace('{{effdate}}', date('Y-m-d'), $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->timedReleaseMetaUpdate = true;
- $this->object->newVideoDelivery = true;
- $this->object->setOptions($this->getOptions(117, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateDealList', array(&$actualNode));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateVideoResource to display channel name from product_video
- */
- public function testGenerateVideoResourceToDisplayChannelNameFromProductVideo()
- {
- $this->sampleIsSme = true;
- $this->sampleFeature['new_video_product_delivery'] = 'enabled';
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->sampleAssetType = self::TYPE_ASSET_VIDEO;
- $release = $this->getRelease()[0];
- $track = $this->getTracks()[0];
- $genre = $this->getGenres()[0];
- $customId = $release->upc . '_' . $track->isrc . '_' . $track->id;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/generateVideoResourceArtistYTDeliverySetting.xml');
- $expectedXmlStr = str_replace('{{trackisrc}}', $track->isrc, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{channelname}}', $release->channel_selection, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{trackname}}', 'Test Track Artist #1 - Test Track #6 (ft. Test Track Artist #2)', $expectedXmlStr);
- $expectedXmlStr = str_replace('{{genre}}', $genre->genre, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{subgenre}}', $genre->subgenre, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{pline}}', $track->p_line, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{customid}}', $customId, $expectedXmlStr);
- $expectedDom = new \DOMDocument("1.0", "UTF-8");
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($this->getRelease()));
- $this->invokeMethod($this->object, 'generateVideoResource', array(&$actualNode, $track, 'A1'));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- /**
- * test generateVideoResource which throws exception when channel does not exist.
- */
- public function testGenerateVideoResourceToHandleExceptionWhenChannelDoesNotExist()
- {
- $this->sampleIsSme = true;
- $this->sampleFeature['new_video_product_delivery'] = 'enabled';
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->sampleAssetType = self::TYPE_ASSET_VIDEO;
- $track = $this->getTracks()[0];
- $release = $this->getRelease();
- $release[0]->channel_selection = null;
- $this->expectException('Web_Metadata_Exception');
- $this->expectExceptionMessage('YouTube Channel ID is missing.');
- $docObject = new \DOMDocument("1.0", "UTF-8");
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->timedReleaseMetaUpdate = true;
- $this->object->newVideoDelivery = true;
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($release));
- $this->invokeMethod($this->object, 'generateVideoResource', array(&$actualNode, $track, 'A1'));
- }
- /**
- * Test generateTrackRelease() to display marketing comments for music video release.
- */
- public function testGenerateTrackReleaseForMarketingComments()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->accessProperty($this->object, 'isReleasePlineInXmlEnabled', false);
- $this->sampleFeature['music_video_description_youtube_dms'] = 'enabled';
- $release = $this->getRelease();
- $release[0]->marketing_comment = 'test marketing comment';
- $track = $this->getTracks()[0];
- $performerArtists = array();
- $featuredArtists = array();
- foreach ($this->getArtists('Track') as $artist) {
- if ($artist->role == 'performer') {
- $performerArtists[] = $artist->name;
- }
- if ($artist->role == 'featuring') {
- $featuredArtists[] = $artist->name;
- }
- }
- $performers = !empty($performerArtists) ? implode(', ', $performerArtists) . ' - ' : '';
- $featured = !empty($featuredArtists) ? ' (ft. ' . implode(', ', $featuredArtists) . ')' : '';
- $titleText = $performers . $track->track_name . $featured;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/TrackReleaseYoutubeArtTrackMarketingComment.xml');
- $expectedXmlStr = str_replace('{{pLine}}', $track->p_line, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{titletext}}', $titleText, $expectedXmlStr);
- $expectedDom = new \DOMDocument('1.0', 'UTF-8');
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument('1.0', 'UTF-8');
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($release));
- $this->invokeMethod($this->object, 'assignResourceReference', array('A1', 'music', '', 1, 6));
- $this->invokeMethod($this->object, 'generateTrackRelease', array(&$actualNode, $track));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- public function testGenerateTrackReleaseForMarketingCommentsWithReleasePline()
- {
- $this->sampleReleaseType = self::TYPE_RELEASE_SINGLE_VIDEO;
- $this->accessProperty($this->object, 'isReleasePlineInXmlEnabled', true);
- $this->sampleFeature['music_video_description_youtube_dms'] = 'enabled';
- $release = $this->getRelease();
- $release[0]->marketing_comment = 'test marketing comment';
- $track = $this->getTracks()[0];
- $performerArtists = array();
- $featuredArtists = array();
- foreach ($this->getArtists('Track') as $artist) {
- if ($artist->role == 'performer') {
- $performerArtists[] = $artist->name;
- }
- if ($artist->role == 'featuring') {
- $featuredArtists[] = $artist->name;
- }
- }
- $performers = !empty($performerArtists) ? implode(', ', $performerArtists) . ' - ' : '';
- $featured = !empty($featuredArtists) ? ' (ft. ' . implode(', ', $featuredArtists) . ')' : '';
- $titleText = $performers . $track->track_name . $featured;
- $expectedXmlStr = file_get_contents($this->fixturePath . '/ddex34/TrackReleaseYoutubeArtTrackMarketingComment.xml');
- $expectedXmlStr = str_replace('{{pLine}}', $release[0]->p_line, $expectedXmlStr);
- $expectedXmlStr = str_replace('{{titletext}}', $titleText, $expectedXmlStr);
- $expectedDom = new \DOMDocument('1.0', 'UTF-8');
- $expectedDom->preserveWhiteSpace = false;
- $expectedDom->loadXML($expectedXmlStr);
- $docObject = new \DOMDocument('1.0', 'UTF-8');
- $docObject->formatOutput = true;
- $actualNode = $docObject->appendChild(new \DOMElement('testroot'));
- $this->object->setOptions($this->getOptions(569, 'release', 'complete_album'));
- $this->invokeMethod($this->object, 'initializeReleaseData', array($release));
- $this->invokeMethod($this->object, 'assignResourceReference', array('A1', 'music', '', 1, 6));
- $this->invokeMethod($this->object, 'generateTrackRelease', array(&$actualNode, $track));
- $this->assertEquals($expectedDom, $actualNode); //Parent itself gets updated with child nodes
- }
- }
Add Comment
Please, Sign In to add comment