3
3
import json
4
4
5
5
from lbry .schema .claim import Claim , Stream , Collection
6
- from lbry .schema .attrs import StreamExtension
6
+ from lbry .schema .attrs import StreamExtension , Struct
7
7
from google .protobuf .struct_pb2 import Struct as StructMessage
8
8
from lbry .schema .types .v2 .extension_pb2 import Extension as ExtensionMessage
9
9
from lbry .error import InputValueIsNoneError
@@ -253,14 +253,17 @@ def setUp(self):
253
253
254
254
def test_extension_properties (self ):
255
255
self .maxDiff = None
256
+
256
257
# Verify schema.
257
258
self .assertEqual (self .ext1 .schema , 'cad' )
258
259
self .assertEqual (self .ext2 .schema , 'music' )
259
260
self .assertEqual (self .ext3 .schema , 'lit' )
261
+
260
262
# Verify to_dict().
261
263
self .assertEqual (self .ext1 .to_dict (), self .ext1_dict )
262
264
self .assertEqual (self .ext2 .to_dict (), self .ext2_dict )
263
265
self .assertEqual (self .ext3 .to_dict (), self .ext3_dict )
266
+
264
267
# Decode from dict.
265
268
parsed1 = StreamExtension (None , ExtensionMessage ())
266
269
parsed1 .from_value (self .ext1_dict )
@@ -271,6 +274,7 @@ def test_extension_properties(self):
271
274
parsed3 = StreamExtension (None , ExtensionMessage ())
272
275
parsed3 .from_value (self .ext3_dict )
273
276
self .assertEqual (parsed3 .to_dict (), self .ext3_dict )
277
+
274
278
# Decode from str (JSON).
275
279
parsed1 = StreamExtension (None , ExtensionMessage ())
276
280
parsed1 .from_value (self .ext1_json )
@@ -282,6 +286,35 @@ def test_extension_properties(self):
282
286
parsed3 .from_value (self .ext3_json )
283
287
self .assertEqual (parsed3 .to_dict (), self .ext3_dict )
284
288
289
+ # Verify Mapping functionality.
290
+ self .assertEqual (self .ext1 .unpacked ['material' ], ['PLA1' , 'PLA2' ])
291
+ self .assertEqual (self .ext1 .unpacked ['cubic_cm' ], 5 )
292
+ self .assertEqual (self .ext2 .unpacked ['venue' ], 'studio' )
293
+ self .assertEqual (self .ext2 .unpacked ['genre' ], ['metal' ])
294
+ self .assertEqual (self .ext2 .unpacked ['instrument' ], ['drum' , 'cymbal' , 'guitar' ])
295
+ self .assertEqual (self .ext3 .unpacked ['pages' ], 185 )
296
+ self .assertEqual (self .ext3 .unpacked ['genre' ], ['fiction' , 'mystery' ])
297
+ self .assertEqual (self .ext3 .unpacked ['format' ], 'epub' )
298
+
299
+ # Verify Iterable functionality.
300
+ self .assertEqual (len (self .ext1 .unpacked ), 2 )
301
+ for k , v in self .ext1 .unpacked .items ():
302
+ self .assertIn (k , self .ext1 .unpacked )
303
+ self .assertTrue (isinstance (v , (str , list , float )), type (v ))
304
+ self .assertEqual (v , self .ext1 .unpacked [k ])
305
+ self .assertEqual (len (self .ext2 .unpacked ), 3 )
306
+ for k , v in self .ext2 .unpacked .items ():
307
+ self .assertIn (k , self .ext2 .unpacked )
308
+ self .assertTrue (isinstance (v , (str , list , float )), type (v ))
309
+ self .assertEqual (v , self .ext2 .unpacked [k ])
310
+ self .assertEqual (len (self .ext3 .unpacked ), 3 )
311
+ for k , v in self .ext3 .unpacked .items ():
312
+ self .assertIn (k , self .ext3 .unpacked )
313
+ self .assertTrue (isinstance (v , (str , list , float )), type (v ))
314
+ self .assertEqual (v , self .ext3 .unpacked [k ])
315
+
316
+
317
+
285
318
def test_extension_clear_field (self ):
286
319
self .maxDiff = None
287
320
ext = StreamExtension (None , ExtensionMessage ())
0 commit comments