Skip to content

Commit 31bee67

Browse files
committed
test: add tests for BaseModel
1 parent bfa2285 commit 31bee67

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

test/test_base_model.py

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
import pprint
2+
import unittest
3+
from typing import Dict
4+
5+
from fingerprint_pro_server_api_sdk import BaseModel
6+
7+
8+
class ExampleModel(BaseModel):
9+
"""Example model that inherits from BaseModel for testing purposes."""
10+
swagger_types: Dict[str, str] = {
11+
'name': 'str',
12+
'details': 'dict',
13+
'items': 'list',
14+
'sub_model': 'object'
15+
}
16+
17+
attribute_map: Dict[str, str] = {
18+
'name': 'name',
19+
'details': 'details',
20+
'items': 'items',
21+
'sub_model': 'sub_model'
22+
}
23+
24+
def __init__(self, name=None, details=None, items=None, sub_model=None):
25+
self.name = name
26+
self.details = details
27+
self.items = items
28+
self.sub_model = sub_model
29+
30+
31+
class SubModel(BaseModel):
32+
"""SubModel to be used in ExampleModel."""
33+
swagger_types: Dict[str, str] = {
34+
'id': 'int',
35+
'value': 'str'
36+
}
37+
38+
attribute_map: Dict[str, str] = {
39+
'id': 'id',
40+
'value': 'value'
41+
}
42+
43+
def __init__(self, id=None, value=None):
44+
self.id = id
45+
self.value = value
46+
47+
48+
class MyTestCase(unittest.TestCase):
49+
50+
def setUp(self):
51+
"""Set up test fixtures."""
52+
self.sub_model = SubModel(id=1, value="sub_value")
53+
self.model = ExampleModel(name="Test Model", details={"key": "value"}, items=[1, 2, 3], sub_model=self.sub_model)
54+
55+
def test_to_dict(self):
56+
"""Test conversion to dictionary."""
57+
expected = {
58+
'name': "Test Model",
59+
'details': {"key": "value"},
60+
'items': [1, 2, 3],
61+
'sub_model': {'id': 1, 'value': 'sub_value'}
62+
}
63+
self.assertEqual(self.model.to_dict(), expected)
64+
65+
def test_to_dict_with_none(self):
66+
"""Test conversion to dictionary with None values."""
67+
model = ExampleModel(name=None, details=None, items=None, sub_model=None)
68+
expected = {}
69+
self.assertEqual(model.to_dict(), expected)
70+
71+
def test_to_dict_with_dict_of_models(self):
72+
"""Test conversion to dictionary with a dictionary of models."""
73+
model = ExampleModel(name="Test Model", details={"key": "value"}, items=[1, 2, 3], sub_model={"sub": self.sub_model})
74+
expected = {
75+
'name': "Test Model",
76+
'details': {"key": "value"},
77+
'items': [1, 2, 3],
78+
'sub_model': {'sub': {'id': 1, 'value': 'sub_value'}}
79+
}
80+
self.assertEqual(model.to_dict(), expected)
81+
82+
def test_to_str(self):
83+
"""Test conversion to string."""
84+
expected_str = pprint.pformat(self.model.to_dict())
85+
self.assertEqual(self.model.to_str(), expected_str)
86+
87+
def test_repr(self):
88+
"""Test __repr__ method."""
89+
expected_repr = self.model.to_str()
90+
self.assertEqual(repr(self.model), expected_repr)
91+
92+
def test_eq(self):
93+
"""Test equality comparison."""
94+
model1 = ExampleModel(name="Test Model", details={"key": "value"}, items=[1, 2, 3], sub_model=self.sub_model)
95+
model2 = ExampleModel(name="Test Model", details={"key": "value"}, items=[1, 2, 3], sub_model=self.sub_model)
96+
sub_model2 = SubModel(id=1, value="sub_value")
97+
model3 = ExampleModel(name="Test Model", details={"key": "value"}, items=[1, 2, 3], sub_model=sub_model2)
98+
self.assertTrue(model1 == model2)
99+
self.assertTrue(model1 == model3)
100+
101+
def test_ne(self):
102+
"""Test inequality comparison."""
103+
model1 = ExampleModel(name="Test Model", details={"key": "value"}, items=[1, 2, 3], sub_model=self.sub_model)
104+
sub_model2 = SubModel(id=2, value="different_value")
105+
model2 = ExampleModel(name="Test Model", details={"key": "value"}, items=[1, 2, 3], sub_model=sub_model2)
106+
self.assertTrue(model1 != model2)
107+
self.assertTrue(model1 != sub_model2)
108+
self.assertTrue(model2 != sub_model2)
109+
110+
def test_dict_inheritance(self):
111+
"""Test behavior when inheriting from dict."""
112+
class DictInheritedModel(dict, BaseModel):
113+
swagger_types: Dict[str, str] = {}
114+
attribute_map: Dict[str, str] = {}
115+
116+
dict_inherited_model = DictInheritedModel()
117+
dict_inherited_model["key"] = "value"
118+
expected = {"key": "value"}
119+
self.assertEqual(dict_inherited_model.to_dict(), expected)
120+
121+
122+
if __name__ == '__main__':
123+
unittest.main()

0 commit comments

Comments
 (0)