6
6
7
7
import pytest
8
8
9
- from docx .enum .section import WD_ORIENT , WD_SECTION
9
+ from docx .enum .section import WD_HEADER_FOOTER , WD_ORIENT , WD_SECTION
10
10
from docx .parts .document import DocumentPart
11
11
from docx .parts .hdrftr import FooterPart , HeaderPart
12
12
from docx .section import _BaseHeaderFooter , _Footer , _Header , Section , Sections
@@ -121,7 +121,9 @@ def it_provides_access_to_its_default_footer(
121
121
122
122
footer = section .footer
123
123
124
- _Footer_ .assert_called_once_with (sectPr , document_part_ )
124
+ _Footer_ .assert_called_once_with (
125
+ sectPr , document_part_ , WD_HEADER_FOOTER .PRIMARY
126
+ )
125
127
assert footer is footer_
126
128
127
129
def it_provides_access_to_its_default_header (
@@ -133,7 +135,9 @@ def it_provides_access_to_its_default_header(
133
135
134
136
header = section .header
135
137
136
- _Header_ .assert_called_once_with (sectPr , document_part_ )
138
+ _Header_ .assert_called_once_with (
139
+ sectPr , document_part_ , WD_HEADER_FOOTER .PRIMARY
140
+ )
137
141
assert header is header_
138
142
139
143
def it_knows_its_start_type (self , start_type_get_fixture ):
@@ -413,7 +417,7 @@ def it_knows_when_its_linked_to_the_previous_header_or_footer(
413
417
):
414
418
has_definition , expected_value = is_linked_get_fixture
415
419
_has_definition_prop_ .return_value = has_definition
416
- header = _BaseHeaderFooter (None , None )
420
+ header = _BaseHeaderFooter (None , None , None )
417
421
418
422
is_linked = header .is_linked_to_previous
419
423
@@ -428,7 +432,7 @@ def it_can_change_whether_it_is_linked_to_previous_header_or_footer(
428
432
):
429
433
has_definition , new_value , drop_calls , add_calls = is_linked_set_fixture
430
434
_has_definition_prop_ .return_value = has_definition
431
- header = _BaseHeaderFooter (None , None )
435
+ header = _BaseHeaderFooter (None , None , None )
432
436
433
437
header .is_linked_to_previous = new_value
434
438
@@ -440,7 +444,7 @@ def it_provides_access_to_the_header_or_footer_part_for_BlockItemContainer(
440
444
):
441
445
# ---this override fulfills part of the BlockItemContainer subclass interface---
442
446
_get_or_add_definition_ .return_value = header_part_
443
- header = _BaseHeaderFooter (None , None )
447
+ header = _BaseHeaderFooter (None , None , None )
444
448
445
449
header_part = header .part
446
450
@@ -453,7 +457,7 @@ def it_provides_access_to_the_hdr_or_ftr_element_to_help(
453
457
hdr = element ("w:hdr" )
454
458
_get_or_add_definition_ .return_value = header_part_
455
459
header_part_ .element = hdr
456
- header = _BaseHeaderFooter (None , None )
460
+ header = _BaseHeaderFooter (None , None , None )
457
461
458
462
hdr_elm = header ._element
459
463
@@ -465,7 +469,7 @@ def it_gets_the_definition_when_it_has_one(
465
469
):
466
470
_has_definition_prop_ .return_value = True
467
471
_definition_prop_ .return_value = header_part_
468
- header = _BaseHeaderFooter (None , None )
472
+ header = _BaseHeaderFooter (None , None , None )
469
473
470
474
header_part = header ._get_or_add_definition ()
471
475
@@ -481,7 +485,7 @@ def but_it_gets_the_prior_definition_when_it_is_linked(
481
485
_has_definition_prop_ .return_value = False
482
486
_prior_headerfooter_prop_ .return_value = prior_headerfooter_
483
487
prior_headerfooter_ ._get_or_add_definition .return_value = header_part_
484
- header = _BaseHeaderFooter (None , None )
488
+ header = _BaseHeaderFooter (None , None , None )
485
489
486
490
header_part = header ._get_or_add_definition ()
487
491
@@ -498,7 +502,7 @@ def and_it_adds_a_definition_when_it_is_linked_and_the_first_section(
498
502
_has_definition_prop_ .return_value = False
499
503
_prior_headerfooter_prop_ .return_value = None
500
504
_add_definition_ .return_value = header_part_
501
- header = _BaseHeaderFooter (None , None )
505
+ header = _BaseHeaderFooter (None , None , None )
502
506
503
507
header_part = header ._get_or_add_definition ()
504
508
@@ -564,7 +568,7 @@ class Describe_Footer(object):
564
568
def it_can_add_a_footer_part_to_help (self , document_part_ , footer_part_ ):
565
569
sectPr = element ("w:sectPr{r:a=b}" )
566
570
document_part_ .add_footer_part .return_value = footer_part_ , "rId3"
567
- footer = _Footer (sectPr , document_part_ )
571
+ footer = _Footer (sectPr , document_part_ , WD_HEADER_FOOTER . PRIMARY )
568
572
569
573
footer_part = footer ._add_definition ()
570
574
@@ -577,18 +581,18 @@ def it_can_add_a_footer_part_to_help(self, document_part_, footer_part_):
577
581
def it_provides_access_to_its_footer_part_to_help (
578
582
self , document_part_ , footer_part_
579
583
):
580
- sectPr = element ("w:sectPr/w:footerReference{w:type=default ,r:id=rId3}" )
584
+ sectPr = element ("w:sectPr/w:footerReference{w:type=even ,r:id=rId3}" )
581
585
document_part_ .footer_part .return_value = footer_part_
582
- footer = _Footer (sectPr , document_part_ )
586
+ footer = _Footer (sectPr , document_part_ , WD_HEADER_FOOTER . EVEN_PAGE )
583
587
584
588
footer_part = footer ._definition
585
589
586
590
document_part_ .footer_part .assert_called_once_with ("rId3" )
587
591
assert footer_part is footer_part_
588
592
589
593
def it_can_drop_the_related_footer_part_to_help (self , document_part_ ):
590
- sectPr = element ("w:sectPr{r:a=b}/w:footerReference{w:type=default ,r:id=rId42}" )
591
- footer = _Footer (sectPr , document_part_ )
594
+ sectPr = element ("w:sectPr{r:a=b}/w:footerReference{w:type=first ,r:id=rId42}" )
595
+ footer = _Footer (sectPr , document_part_ , WD_HEADER_FOOTER . FIRST_PAGE )
592
596
593
597
footer ._drop_definition ()
594
598
@@ -597,7 +601,7 @@ def it_can_drop_the_related_footer_part_to_help(self, document_part_):
597
601
598
602
def it_knows_when_it_has_a_definition_to_help (self , has_definition_fixture ):
599
603
sectPr , expected_value = has_definition_fixture
600
- footer = _Footer (sectPr , None )
604
+ footer = _Footer (sectPr , None , WD_HEADER_FOOTER . PRIMARY )
601
605
602
606
has_definition = footer ._has_definition
603
607
@@ -608,19 +612,21 @@ def it_provides_access_to_the_prior_Footer_to_help(
608
612
):
609
613
doc_elm = element ("w:document/(w:sectPr,w:sectPr)" )
610
614
prior_sectPr , sectPr = doc_elm [0 ], doc_elm [1 ]
611
- footer = _Footer (sectPr , document_part_ )
615
+ footer = _Footer (sectPr , document_part_ , WD_HEADER_FOOTER . EVEN_PAGE )
612
616
# ---mock must occur after construction of "real" footer---
613
617
_Footer_ = class_mock (request , "docx.section._Footer" , return_value = footer_ )
614
618
615
619
prior_footer = footer ._prior_headerfooter
616
620
617
- _Footer_ .assert_called_once_with (prior_sectPr , document_part_ )
621
+ _Footer_ .assert_called_once_with (
622
+ prior_sectPr , document_part_ , WD_HEADER_FOOTER .EVEN_PAGE
623
+ )
618
624
assert prior_footer is footer_
619
625
620
626
def but_it_returns_None_when_its_the_first_footer (self ):
621
627
doc_elm = element ("w:document/w:sectPr" )
622
628
sectPr = doc_elm [0 ]
623
- footer = _Footer (sectPr , None )
629
+ footer = _Footer (sectPr , None , None )
624
630
625
631
prior_footer = footer ._prior_headerfooter
626
632
@@ -658,13 +664,13 @@ class Describe_Header(object):
658
664
def it_can_add_a_header_part_to_help (self , document_part_ , header_part_ ):
659
665
sectPr = element ("w:sectPr{r:a=b}" )
660
666
document_part_ .add_header_part .return_value = header_part_ , "rId3"
661
- header = _Header (sectPr , document_part_ )
667
+ header = _Header (sectPr , document_part_ , WD_HEADER_FOOTER . FIRST_PAGE )
662
668
663
669
header_part = header ._add_definition ()
664
670
665
671
document_part_ .add_header_part .assert_called_once_with ()
666
672
assert sectPr .xml == xml (
667
- "w:sectPr{r:a=b}/w:headerReference{w:type=default ,r:id=rId3}"
673
+ "w:sectPr{r:a=b}/w:headerReference{w:type=first ,r:id=rId3}"
668
674
)
669
675
assert header_part is header_part_
670
676
@@ -673,16 +679,16 @@ def it_provides_access_to_its_header_part_to_help(
673
679
):
674
680
sectPr = element ("w:sectPr/w:headerReference{w:type=default,r:id=rId8}" )
675
681
document_part_ .header_part .return_value = header_part_
676
- header = _Header (sectPr , document_part_ )
682
+ header = _Header (sectPr , document_part_ , WD_HEADER_FOOTER . PRIMARY )
677
683
678
684
header_part = header ._definition
679
685
680
686
document_part_ .header_part .assert_called_once_with ("rId8" )
681
687
assert header_part is header_part_
682
688
683
689
def it_can_drop_the_related_header_part_to_help (self , document_part_ ):
684
- sectPr = element ("w:sectPr{r:a=b}/w:headerReference{w:type=default ,r:id=rId42}" )
685
- header = _Header (sectPr , document_part_ )
690
+ sectPr = element ("w:sectPr{r:a=b}/w:headerReference{w:type=even ,r:id=rId42}" )
691
+ header = _Header (sectPr , document_part_ , WD_HEADER_FOOTER . EVEN_PAGE )
686
692
687
693
header ._drop_definition ()
688
694
@@ -691,7 +697,7 @@ def it_can_drop_the_related_header_part_to_help(self, document_part_):
691
697
692
698
def it_knows_when_it_has_a_header_part_to_help (self , has_definition_fixture ):
693
699
sectPr , expected_value = has_definition_fixture
694
- header = _Header (sectPr , None )
700
+ header = _Header (sectPr , None , WD_HEADER_FOOTER . FIRST_PAGE )
695
701
696
702
has_definition = header ._has_definition
697
703
@@ -702,19 +708,21 @@ def it_provides_access_to_the_prior_Header_to_help(
702
708
):
703
709
doc_elm = element ("w:document/(w:sectPr,w:sectPr)" )
704
710
prior_sectPr , sectPr = doc_elm [0 ], doc_elm [1 ]
705
- header = _Header (sectPr , document_part_ )
711
+ header = _Header (sectPr , document_part_ , WD_HEADER_FOOTER . PRIMARY )
706
712
# ---mock must occur after construction of "real" header---
707
713
_Header_ = class_mock (request , "docx.section._Header" , return_value = header_ )
708
714
709
715
prior_header = header ._prior_headerfooter
710
716
711
- _Header_ .assert_called_once_with (prior_sectPr , document_part_ )
717
+ _Header_ .assert_called_once_with (
718
+ prior_sectPr , document_part_ , WD_HEADER_FOOTER .PRIMARY
719
+ )
712
720
assert prior_header is header_
713
721
714
722
def but_it_returns_None_when_its_the_first_header (self ):
715
723
doc_elm = element ("w:document/w:sectPr" )
716
724
sectPr = doc_elm [0 ]
717
- header = _Header (sectPr , None )
725
+ header = _Header (sectPr , None , None )
718
726
719
727
prior_header = header ._prior_headerfooter
720
728
@@ -724,7 +732,7 @@ def but_it_returns_None_when_its_the_first_header(self):
724
732
725
733
@pytest .fixture (
726
734
params = [
727
- ("w:sectPr" , False ), ("w:sectPr/w:headerReference{w:type=default }" , True )
735
+ ("w:sectPr" , False ), ("w:sectPr/w:headerReference{w:type=first }" , True )
728
736
]
729
737
)
730
738
def has_definition_fixture (self , request ):
0 commit comments