1
+ from labthings .server import types
2
+
3
+
4
+ def test_make_primative ():
5
+ from fractions import Fraction
6
+
7
+ assert types .make_primative (Fraction (5 , 2 )) == 2.5
8
+
9
+
10
+ def test_value_to_field ():
11
+ from labthings .server import fields
12
+
13
+ # Test arrays of data
14
+ d1 = [1 , 2 , 3 ]
15
+ gen_field = types .value_to_field (d1 )
16
+ expected_field = fields .List (fields .Int ())
17
+
18
+ assert gen_field ._serialize (d1 , None , None ) == expected_field ._serialize (
19
+ d1 , None , None
20
+ )
21
+
22
+ # Test single values
23
+ d2 = "String"
24
+ gen_field_2 = types .value_to_field (d2 )
25
+ expected_field_2 = fields .String (example = "String" )
26
+
27
+ assert gen_field_2 ._serialize (d2 , None , None ) == expected_field_2 ._serialize (
28
+ d2 , None , None
29
+ )
30
+
31
+
32
+ def test_data_dict_to_schema ():
33
+ from labthings .server import fields
34
+ from fractions import Fraction
35
+ from marshmallow import Schema
36
+
37
+ d = {
38
+ "val1" : Fraction (5 , 2 ),
39
+ "map1" : {
40
+ "subval1" : "Hello" ,
41
+ "subval2" : False ,
42
+ },
43
+ "val2" : 5 ,
44
+ "val3" : [1 , 2 , 3 , 4 ],
45
+ "val4" : range (1 , 5 ),
46
+ }
47
+
48
+ gen_schema_dict = types .data_dict_to_schema (d )
49
+ expected_schema_dict = {
50
+ "val1" : fields .Float (),
51
+ "map1" : {
52
+ "subval1" : fields .String (),
53
+ "subval2" : fields .Boolean (),
54
+ },
55
+ "val2" : fields .Integer (),
56
+ "val3" : fields .List (fields .Int ()),
57
+ "val4" : fields .List (fields .Int ()),
58
+ }
59
+
60
+ gen_schema = Schema .from_dict (gen_schema_dict )()
61
+ expected_schema = Schema .from_dict (expected_schema_dict )()
62
+
63
+ assert gen_schema .dump (d ) == expected_schema .dump (d )
0 commit comments