@@ -27,6 +27,25 @@ def test_uopengraph(self):
2727 data = extruct .extract (body , syntaxes = ['opengraph' ], uniform = True )
2828 self .assertEqual (data ['opengraph' ], expected )
2929
30+ def test_uopengraph_with_og_array (self ):
31+ expected = [{"@context" : {
32+ "og" : "http://ogp.me/ns#" ,
33+ "fb" : "http://www.facebook.com/2008/fbml" ,
34+ "concerts" : "http://ogp.me/ns/fb/songkick-concerts#"
35+ },
36+ "fb:app_id" : "308540029359" ,
37+ "og:site_name" : "Songkick" ,
38+ "@type" : "songkick-concerts:artist" ,
39+ "og:title" : "Elysian Fields" ,
40+ "og:description" : "Buy tickets for an upcoming Elysian Fields concert near you. List of all Elysian Fields tickets and tour dates for 2017." ,
41+ "og:url" : "http://www.songkick.com/artists/236156-elysian-fields" ,
42+ "og:image" : [ "http://images.sk-static.com/images/media/img/col4/20100330-103600-169450.jpg" ,
43+ "http://images.sk-static.com/SECONDARY_IMAGE.jpg" ],
44+ }]
45+ body = get_testdata ('songkick' , 'elysianfields.html' )
46+ data = extruct .extract (body , syntaxes = ['opengraph' ], uniform = True , with_og_array = True )
47+ self .assertEqual (data ['opengraph' ], expected )
48+
3049 def test_uopengraph_duplicated_priorities (self ):
3150 # Ensures that first seen property is kept when flattening
3251 data = _uopengraph ([{'properties' :
@@ -58,6 +77,36 @@ def test_uopengraph_duplicated_priorities(self):
5877 assert data [0 ]['prop_non_empty2' ] == 'value!'
5978 assert data [0 ]['prop_non_empty3' ] == 'value!'
6079
80+ def test_uopengraph_duplicated_with_og_array (self ):
81+ # Ensures that first seen property is kept when flattening
82+ data = _uopengraph ([{'properties' :
83+ [('prop_{}' .format (k ), 'value_{}' .format (v ))
84+ for k in range (5 )
85+ for v in range (5 )],
86+ 'namespace' : 'namespace' }], with_og_array = True )
87+ for k in range (5 ):
88+ assert data [0 ]['prop_{}' .format (k )] == ['value_0' , 'value_1' , 'value_2' , 'value_3' , 'value_4' ]
89+
90+ # Ensures that empty is not returned if a property contains any
91+ # non empty value
92+ data = _uopengraph ([{'properties' :
93+ [('prop_empty' , ' ' ),
94+
95+ ('prop_non_empty' , ' ' ),
96+ ('prop_non_empty' , 'value!' ),
97+
98+ ('prop_non_empty2' , 'value!' ),
99+ ('prop_non_empty2' , ' ' ),
100+
101+ ('prop_non_empty3' , ' ' ),
102+ ('prop_non_empty3' , 'value!' ),
103+ ('prop_non_empty3' , 'other value' ),
104+ ],
105+ 'namespace' : 'namespace' }], with_og_array = True )
106+ assert data [0 ]['prop_empty' ] == ' '
107+ assert data [0 ]['prop_non_empty' ] == 'value!'
108+ assert data [0 ]['prop_non_empty2' ] == 'value!'
109+ assert data [0 ]['prop_non_empty3' ] == ['value!' , 'other value' ]
61110
62111 def test_umicroformat (self ):
63112 expected = [ { '@context' : 'http://microformats.org/wiki/' ,
0 commit comments