"""Tests for video single validators.""" from mock import patch from switchboard_consumer.constants.validation import REJECT_RESPONSE, \ VALIDATION_CODE, WARNING_RESPONSE from switchboard_consumer.logic.validation.video_single_product.validate \ import _validate_cline, _validate_pline, _validate_type_of_video, \ validate_video_single_product def test_validate_type_of_video_success(): """Test for correct type of video.""" track_data = { 'videoType': 'OFFICIAL_MUSIC_VIDEO' } result = _validate_type_of_video(track_data) assert result is None def test_validate_type_of_video_failure(): """Test for correct type of video.""" track_data = { 'videoType': 'UNKNOWN' } result = _validate_type_of_video(track_data) assert result == { 'code': 'validation', 'message': 'Type of video UNKNOWN not allowed', 'response': WARNING_RESPONSE } def test_validate_pline_success(): """Validate pline is correct.""" product_data = { 'pLine': { 'pLineText': '2020 COMPANY NAME' } } result = _validate_pline(product_data) assert result is None def test_validate_pline_failure(): """Validate pline is failed.""" product_data = { 'pLine': { 'pLineText': 'COMPANY NAME' } } result = _validate_pline(product_data) assert result == { 'code': 'validation', 'message': 'pline "COMPANY NAME" does not match expected format', 'response': REJECT_RESPONSE } def test_validate_cline_success(): """Validate cline is correct.""" product_data = { 'cLine': { 'cLineText': '2020 COMPANY NAME' } } result = _validate_cline(product_data) assert result is None def test_validate_cline_failure(): """Validate cline is failed.""" product_data = { 'cLine': { 'cLineText': 'COMPANY NAME' } } result = _validate_cline(product_data) assert result == { 'code': 'validation', 'message': 'cline "COMPANY NAME" does not match expected format', 'response': REJECT_RESPONSE } @patch(('switchboard_consumer.logic.validation.video_single_product.' 'validate._validate_type_of_video')) @patch(('switchboard_consumer.logic.validation.video_single_product.' 'validate._validate_video_title')) @patch(('switchboard_consumer.logic.validation.video_single_product.' 'validate._validate_pline')) @patch(('switchboard_consumer.logic.validation.video_single_product.' 'validate._validate_cline')) def test_validate_video_single_product( mock_validate_cline, mock_validate_pline, mock_validate_video_title, mock_validate_type_of_video): """Test for returning grouped errors.""" payload = { 'components': [{ 'sides': [{ 'productTracks': [ { 'track': { } } ] }] }] } mock_validate_type_of_video.return_value = { 'code': VALIDATION_CODE, 'message': 'BAD_VIDEO_TYPE', 'response': WARNING_RESPONSE } mock_validate_video_title.return_value = { 'code': VALIDATION_CODE, 'message': 'BAD_VIDEO_TITLE', 'response': WARNING_RESPONSE } mock_validate_cline.return_value = { 'code': VALIDATION_CODE, 'message': 'BAD_CLINE', 'response': REJECT_RESPONSE } mock_validate_pline.return_value = { 'code': VALIDATION_CODE, 'message': 'BAD_PLINE', 'response': REJECT_RESPONSE } result = validate_video_single_product(payload) assert result == [ { 'code': 'validation', 'message': 'BAD_VIDEO_TYPE', 'response': WARNING_RESPONSE }, { 'code': 'validation', 'message': 'BAD_VIDEO_TITLE', 'response': WARNING_RESPONSE }, { 'code': VALIDATION_CODE, 'message': 'BAD_PLINE', 'response': REJECT_RESPONSE }, { 'code': VALIDATION_CODE, 'message': 'BAD_CLINE', 'response': REJECT_RESPONSE } ] def test_validate_video_single_product_with_missing_data(): """Test validation of video single product with missing data.""" assert validate_video_single_product({}) == []