1212from docx .shared import Inches
1313
1414from .unitutil .cxml import element , xml
15- from .unitutil .mock import call , class_mock , instance_mock , property_mock
15+ from .unitutil .mock import call , class_mock , instance_mock , method_mock , property_mock
1616
1717
1818class DescribeSections (object ):
@@ -360,16 +360,32 @@ def header_(self, request):
360360class Describe_Header (object ):
361361
362362 def it_knows_when_its_linked_to_the_previous_header (
363- self , is_linked_fixture , _has_header_part_prop_
363+ self , is_linked_get_fixture , _has_header_part_prop_
364364 ):
365- has_header_part , expected_value = is_linked_fixture
365+ has_header_part , expected_value = is_linked_get_fixture
366366 _has_header_part_prop_ .return_value = has_header_part
367367 header = _Header (None , None )
368368
369369 is_linked = header .is_linked_to_previous
370370
371371 assert is_linked is expected_value
372372
373+ def it_can_change_whether_it_is_linked_to_previous_header (
374+ self ,
375+ is_linked_set_fixture ,
376+ _has_header_part_prop_ ,
377+ _drop_header_part_ ,
378+ _add_header_part_ ,
379+ ):
380+ has_header_part , new_value , drop_calls , add_calls = is_linked_set_fixture
381+ _has_header_part_prop_ .return_value = has_header_part
382+ header = _Header (None , None )
383+
384+ header .is_linked_to_previous = new_value
385+
386+ assert _drop_header_part_ .call_args_list == [call (header )] * drop_calls
387+ assert _add_header_part_ .call_args_list == [call (header )] * add_calls
388+
373389 def it_knows_when_it_has_a_header_part_to_help (self , has_header_part_fixture ):
374390 sectPr , expected_value = has_header_part_fixture
375391 header = _Header (sectPr , None )
@@ -391,12 +407,32 @@ def has_header_part_fixture(self, request):
391407 return sectPr , expected_value
392408
393409 @pytest .fixture (params = [(False , True ), (True , False )])
394- def is_linked_fixture (self , request ):
410+ def is_linked_get_fixture (self , request ):
395411 has_header_part , expected_value = request .param
396412 return has_header_part , expected_value
397413
414+ @pytest .fixture (
415+ params = [
416+ (False , True , 0 , 0 ),
417+ (True , False , 0 , 0 ),
418+ (True , True , 1 , 0 ),
419+ (False , False , 0 , 1 ),
420+ ]
421+ )
422+ def is_linked_set_fixture (self , request ):
423+ has_header_part , new_value , drop_calls , add_calls = request .param
424+ return has_header_part , new_value , drop_calls , add_calls
425+
398426 # fixture components ---------------------------------------------
399427
428+ @pytest .fixture
429+ def _add_header_part_ (self , request ):
430+ return method_mock (request , _Header , "_add_header_part" , autospec = True )
431+
432+ @pytest .fixture
433+ def _drop_header_part_ (self , request ):
434+ return method_mock (request , _Header , "_drop_header_part" , autospec = True )
435+
400436 @pytest .fixture
401437 def _has_header_part_prop_ (self , request ):
402438 return property_mock (request , _Header , "_has_header_part" )
0 commit comments