@@ -34,6 +34,18 @@ class Human(Character):
34
34
class Meta :
35
35
type_name = 'core_Human'
36
36
37
+ @property
38
+ def readonly_prop (self ):
39
+ return 'readonly'
40
+
41
+ @property
42
+ def write_prop (self ):
43
+ return self ._write_prop
44
+
45
+ @write_prop .setter
46
+ def write_prop (self , value ):
47
+ self ._write_prop = value
48
+
37
49
schema = Schema ()
38
50
39
51
@@ -44,8 +56,12 @@ def test_interface():
44
56
assert Character ._meta .type_name == 'core_Character'
45
57
assert object_type .description == 'Character description'
46
58
assert list (object_type .get_fields ().keys ()) == ['name' ]
47
- # assert object_type.get_fields() == {
48
- # 'name': Character._meta.fields_map['name'].internal_field(schema)}
59
+
60
+
61
+ def test_interface_cannot_initialize ():
62
+ with raises (Exception ) as excinfo :
63
+ c = Character ()
64
+ assert 'An interface cannot be initialized' == str (excinfo .value )
49
65
50
66
51
67
def test_interface_resolve_type ():
@@ -66,6 +82,27 @@ def test_object_type():
66
82
assert Human ._meta .fields_map ['name' ].object_type == Human
67
83
68
84
85
+ def test_object_type_container ():
86
+ h = Human (name = 'My name' )
87
+ assert h .name == 'My name'
88
+
89
+
90
+ def test_object_type_set_properties ():
91
+ h = Human (readonly_prop = 'custom' , write_prop = 'custom' )
92
+ assert h .readonly_prop == 'readonly'
93
+ assert h .write_prop == 'custom'
94
+
95
+
96
+ def test_object_type_container_invalid_kwarg ():
97
+ with raises (TypeError ):
98
+ Human (invalid = 'My name' )
99
+
100
+
101
+ def test_object_type_container_too_many_args ():
102
+ with raises (IndexError ):
103
+ Human ('Peter' , 'No friends :(' , None )
104
+
105
+
69
106
def test_field_clashes ():
70
107
with raises (Exception ) as excinfo :
71
108
class Droid (Character ):
0 commit comments