@@ -34,8 +34,56 @@ def it_can_iterate_over_its_styles(self, iter_fixture):
3434 assert count == expected_count
3535 assert StyleFactory_ .call_args_list == expected_calls
3636
37+ def it_can_get_a_style_by_id (self , get_by_id_fixture ):
38+ styles , key , expected_element = get_by_id_fixture
39+ style = styles [key ]
40+ assert style ._element is expected_element
41+
42+ def it_can_get_a_style_by_name (self , get_by_name_fixture ):
43+ styles , key , expected_element = get_by_name_fixture
44+ style = styles [key ]
45+ assert style ._element is expected_element
46+
47+ def it_raises_on_style_not_found (self , get_raises_fixture ):
48+ styles , key = get_raises_fixture
49+ with pytest .raises (KeyError ):
50+ styles [key ]
51+
3752 # fixture --------------------------------------------------------
3853
54+ @pytest .fixture (params = [
55+ ('w:styles/(w:style{%s,w:styleId=Foobar},w:style,w:style)' , 0 ),
56+ ('w:styles/(w:style,w:style{%s,w:styleId=Foobar},w:style)' , 1 ),
57+ ('w:styles/(w:style,w:style,w:style{%s,w:styleId=Foobar})' , 2 ),
58+ ])
59+ def get_by_id_fixture (self , request ):
60+ styles_cxml_tmpl , style_idx = request .param
61+ styles_cxml = styles_cxml_tmpl % 'w:type=paragraph'
62+ styles = Styles (element (styles_cxml ))
63+ expected_element = styles ._element [style_idx ]
64+ return styles , 'Foobar' , expected_element
65+
66+ @pytest .fixture (params = [
67+ ('w:styles/(w:style%s/w:name{w:val=foo},w:style,w:style)' , 0 ),
68+ ('w:styles/(w:style,w:style%s/w:name{w:val=foo},w:style)' , 1 ),
69+ ('w:styles/(w:style,w:style,w:style%s/w:name{w:val=foo})' , 2 ),
70+ ])
71+ def get_by_name_fixture (self , request ):
72+ styles_cxml_tmpl , style_idx = request .param
73+ styles_cxml = styles_cxml_tmpl % '{w:type=character}'
74+ styles = Styles (element (styles_cxml ))
75+ expected_element = styles ._element [style_idx ]
76+ return styles , 'foo' , expected_element
77+
78+ @pytest .fixture (params = [
79+ ('w:styles/(w:style,w:style/w:name{w:val=foo},w:style)' ),
80+ ('w:styles/(w:style{w:styleId=foo},w:style,w:style)' ),
81+ ])
82+ def get_raises_fixture (self , request ):
83+ styles_cxml = request .param
84+ styles = Styles (element (styles_cxml ))
85+ return styles , 'bar'
86+
3987 @pytest .fixture (params = [
4088 ('w:styles' , 0 ),
4189 ('w:styles/w:style' , 1 ),
0 commit comments