| 7 | |
| 8 | |
| 9 | class TestItem: |
| 10 | def assertSortedEqual(self, first, second, msg=None): |
| 11 | assert sorted(first) == sorted(second), msg |
| 12 | |
| 13 | def test_simple(self): |
| 14 | class TestItem(Item): |
| 15 | name = Field() |
| 16 | |
| 17 | i = TestItem() |
| 18 | i["name"] = "name" |
| 19 | assert i["name"] == "name" |
| 20 | |
| 21 | def test_init(self): |
| 22 | class TestItem(Item): |
| 23 | name = Field() |
| 24 | |
| 25 | i = TestItem() |
| 26 | with pytest.raises(KeyError): |
| 27 | i["name"] |
| 28 | |
| 29 | i2 = TestItem(name="john doe") |
| 30 | assert i2["name"] == "john doe" |
| 31 | |
| 32 | i3 = TestItem({"name": "john doe"}) |
| 33 | assert i3["name"] == "john doe" |
| 34 | |
| 35 | i4 = TestItem(i3) |
| 36 | assert i4["name"] == "john doe" |
| 37 | |
| 38 | with pytest.raises(KeyError): |
| 39 | TestItem({"name": "john doe", "other": "foo"}) |
| 40 | |
| 41 | def test_invalid_field(self): |
| 42 | class TestItem(Item): |
| 43 | pass |
| 44 | |
| 45 | i = TestItem() |
| 46 | with pytest.raises(KeyError): |
| 47 | i["field"] = "text" |
| 48 | with pytest.raises(KeyError): |
| 49 | i["field"] |
| 50 | |
| 51 | def test_repr(self): |
| 52 | class TestItem(Item): |
| 53 | name = Field() |
| 54 | number = Field() |
| 55 | |
| 56 | i = TestItem() |
| 57 | i["name"] = "John Doe" |
| 58 | i["number"] = 123 |
| 59 | itemrepr = repr(i) |
| 60 | |
| 61 | assert itemrepr == "{'name': 'John Doe', 'number': 123}" |
| 62 | |
| 63 | i2 = eval(itemrepr) |
| 64 | assert i2["name"] == "John Doe" |
| 65 | assert i2["number"] == 123 |
| 66 |
no outgoing calls