"""Tests v43 DDEX generation."""
from textwrap import dedent
from unittest.mock import patch
from soundrecording_utils.constants.ddex.constants import RuleService
from soundrecording_utils.ddex.v43 import generate
from soundrecording_utils.ddex.v43.e import E
from soundrecording_utils.metadata.types import OrchardSoundRecording
@patch('soundrecording_utils.ddex.v43.generate.generate_the_orchard_party')
@patch('soundrecording_utils.ddex.v43.generate.generate_label_party')
@patch('soundrecording_utils.ddex.v43.generate.generate_party_list')
@patch('soundrecording_utils.ddex.v43.generate.generate_release_deal')
@patch('soundrecording_utils.ddex.v43.generate.generate_release')
@patch('soundrecording_utils.ddex.v43.generate.generate_sound_recording_resource')
@patch('soundrecording_utils.ddex.v43.generate.generate_header')
def test_header_creates_correctly(
mock_generate_header,
mock_generate_sound_recording_resource,
mock_generate_release,
mock_generate_release_deal,
mock_generate_party_list,
mock_generate_label_party,
mock_generate_the_orchard_party,
mock_orchard_sound_recording: OrchardSoundRecording,
execution_meta,
):
"""Test that header is created as expected."""
mock_generate_header.return_value = E('MockedMessageHeader')
mock_generate_sound_recording_resource.return_value = E(
'MockSoundRecording',
)
mock_generate_release.return_value = E('MockRelease')
mock_generate_release_deal.return_value = E('MockReleaseDeal')
mock_generate_the_orchard_party.return_value = E('MockPartyTheOrchard')
mock_generate_label_party.return_value = E('MockPartyLabel')
mock_generate_party_list.return_value = [E('MockPartyArtist')]
result = generate.generate_ddex(
mock_orchard_sound_recording,
None,
execution_meta,
'lambda-sr-delivery-youtube',
RuleService.YOUTUBE
)
expected = """
R1
XXAAA2100000
A1
P-94177d6a-51d4-496f-aa1a-a52b75516814
Rock
""" # noqa: E501
assert result == dedent(expected).lstrip()
mock_generate_header.assert_called_once_with(execution_meta, RuleService.YOUTUBE)
mock_generate_sound_recording_resource.assert_called_once_with(
'A1',
mock_orchard_sound_recording,
mock_orchard_sound_recording.track_connection.tracks[0],
None,
takedown=False
)
mock_generate_release.assert_called_once_with(
'R0',
'A1',
mock_orchard_sound_recording,
mock_orchard_sound_recording.track_connection.tracks[0]
)
mock_generate_release_deal.assert_called_once_with(
'R1',
mock_orchard_sound_recording,
service=RuleService.YOUTUBE,
takedown=False
)
@patch('soundrecording_utils.ddex.v43.generate.generate_the_orchard_party')
@patch('soundrecording_utils.ddex.v43.generate.generate_label_party')
@patch('soundrecording_utils.ddex.v43.generate.generate_party_list')
@patch('soundrecording_utils.ddex.v43.generate.generate_release_deal')
@patch('soundrecording_utils.ddex.v43.generate.generate_release')
@patch('soundrecording_utils.ddex.v43.generate.generate_sound_recording_resource')
@patch('soundrecording_utils.ddex.v43.generate.generate_header')
def test_generate_with_takedown(
mock_generate_header,
mock_generate_sound_recording_resource,
mock_generate_release,
mock_generate_release_deal,
mock_generate_party_list,
mock_generate_label_party,
mock_generate_the_orchard_party,
mock_orchard_sound_recording: OrchardSoundRecording,
execution_meta,
):
"""Test that DealList is included even for takedown deliveries."""
mock_generate_header.return_value = E('MockedMessageHeader')
mock_generate_sound_recording_resource.return_value = E(
'MockSoundRecording',
)
mock_generate_release.return_value = E('MockRelease')
mock_generate_release_deal.return_value = E('MockReleaseDeal')
mock_generate_the_orchard_party.return_value = E('MockPartyTheOrchard')
mock_generate_label_party.return_value = E('MockPartyLabel')
mock_generate_party_list.return_value = [E('MockPartyArtist')]
result = generate.generate_ddex(
mock_orchard_sound_recording,
None,
execution_meta,
'lambda-sr-delivery-youtube',
RuleService.YOUTUBE,
takedown=True
)
expected = """
R1
XXAAA2100000
A1
P-94177d6a-51d4-496f-aa1a-a52b75516814
Rock
""" # noqa: E501
assert result == dedent(expected).lstrip()
mock_generate_header.assert_called_once_with(execution_meta, RuleService.YOUTUBE)
mock_generate_sound_recording_resource.assert_called_once_with(
'A1',
mock_orchard_sound_recording,
mock_orchard_sound_recording.track_connection.tracks[0],
None,
takedown=True
)
mock_generate_release.assert_called_once_with(
'R0',
'A1',
mock_orchard_sound_recording,
mock_orchard_sound_recording.track_connection.tracks[0]
)
mock_generate_release_deal.assert_called_once_with(
'R1',
mock_orchard_sound_recording,
service=RuleService.YOUTUBE,
takedown=True
)