"""Tests for payee schema.""" from payee.constants import error from payee.schemas.payee import ( PayeeCollaboratorSchema, PayeeCreateSchema, PayeeDataloaderOutputSchema, PayeeDataloaderSchema, PayeeSchema, ) from tests.utils.factories import PayeeCollaboratorFactory, PayeeFactory def test_payee_schema(): """Test payee schema.""" params = PayeeSchema().dump(PayeeFactory.build()) assert PayeeSchema().validate(params) == {} def test_payee_create_schema(): """Test payee create schema.""" params = {'reference_payment_type_id': 1, 'collaborator_id': 1} assert PayeeCreateSchema().validate(params) == {} def test_payee_dataloader_schema(): """Test payee dataloader schema.""" params = {'collaborator_ids': [1]} assert PayeeDataloaderSchema().validate(params) == {} def test_payee_dataloader_output_schema(): """Test payee dataloader output schema.""" params = { 'payees': [ {'data': PayeeSchema().dump(PayeeFactory.build())}, {'error': 'error'}, ] } assert PayeeDataloaderOutputSchema().validate(params) == {} def test_payee_dataloader_schema_requires_at_least_one(): """Test that PayeeDataloaderSchema requires at least one of the fields.""" params = {} errors = PayeeDataloaderSchema().validate(params) assert error.ERROR_PAYEE_DATALOADER_SCHEMA_AT_LEAST_ONE in str(errors) def test_payee_dataloader_schema_exclusive_fields(): """Test that PayeeDataloaderSchema does not allow both fields at once.""" params = {'collaborator_ids': [1], 'payoneer_client_reference_ids': ['abc']} errors = PayeeDataloaderSchema().validate(params) assert error.ERROR_PAYEE_DATALOADER_SCHEMA_EXCLUSIVE in str(errors) def test_payee_dataloader_schema_accepts_collaborator_ids(): """Test that PayeeDataloaderSchema accepts only collaborator_ids.""" params = {'collaborator_ids': [1, 2, 3]} assert PayeeDataloaderSchema().validate(params) == {} def test_payee_dataloader_schema_accepts_payoneer_client_reference_ids(): """Test that PayeeDataloaderSchema accepts only payoneer_client_reference_ids.""" params = {'payoneer_client_reference_ids': ['abc', 'def']} assert PayeeDataloaderSchema().validate(params) == {} def test_payee_collaborator_schema(): """Test PayeeCollaboratorSchema.""" params = PayeeCollaboratorSchema().dump(PayeeCollaboratorFactory.build()) assert PayeeCollaboratorSchema().validate(params) == {}