"""Tests for the BaseModel class.""" import pytest from accounting.models.base_model import BaseModel from accounting.models.base_model import DataIntegrityException def test_base_model(): """Test instantiating model.""" base_model = BaseModel() assert base_model def test_base_model_invalid_field(): """Test setting an invalid field via the constructor.""" with pytest.raises(DataIntegrityException): base_model = BaseModel(**{'key': 'value'}) assert not base_model def test_base_model_valid_field(monkeypatch): """Test setting a valid field value.""" monkeypatch.setattr(BaseModel, 'fields', {'key': ''}) base_model = BaseModel(**{'key': 'value'}) returned_value = base_model.get_value('key') assert returned_value == 'value' def test_base_model_set_invalid_field(): """Test setting an invalid field via set_value().""" with pytest.raises(DataIntegrityException): base_model = BaseModel() base_model.set_value('key', 'value') assert not base_model def test_base_model_set_valid_field(monkeypatch): """Test setting a valid field via set_value().""" monkeypatch.setattr(BaseModel, 'fields', {'key': ''}) base_model = BaseModel() base_model.set_value('key', 'value') returned_value = base_model.get_value('key') assert returned_value == 'value' def test_base_model_get_invalid_field(): """Test getting invalid field's value.""" base_model = BaseModel() returned_value = base_model.get_value('key') assert returned_value is None def test_base_model_get_valid_field(monkeypatch): """Test getting a valid field's value.""" monkeypatch.setattr(BaseModel, 'fields', {'key': ''}) base_model = BaseModel(**{'key': 'foo'}) returned_value = base_model.get_value('key') assert returned_value == 'foo' def test_base_model_valid_validation(monkeypatch): """Test validating required fields on a valid data representation.""" monkeypatch.setattr(BaseModel, 'fields', {'field1': '', 'field2': ''}) monkeypatch.setattr(BaseModel, 'required_fields', ['field1', 'field2']) base_model = BaseModel() base_model.set_value('field1', 'foo') base_model.set_value('field2', 'bar') assert not base_model.validate() def test_base_model_invalid_validation(monkeypatch): """Test validating required field on an invalid data representation.""" monkeypatch.setattr(BaseModel, 'fields', {'field1': '', 'field2': ''}) monkeypatch.setattr(BaseModel, 'required_fields', ['field1', 'field2']) base_model = BaseModel() base_model.set_value('field1', 'foo') with pytest.raises(DataIntegrityException): assert not base_model.validate()