def test_header_simple(self, read_part): """ header() should output only page start text if no requires_headers. """ page = Page() header = page.header() self.assertEqual(0, read_part.call_count) self.assertEqual(header, 'MockPageStart\n')
def test_header_include_parts(self, read_part): """ Page.header() should call read_part for appropriate parts. """ read_part.side_effect = ['part_1', 'part_2', 'part_3'] page = Page() ps_object_1 = Mock() ps_object_1.required_parts = ['foo'] ps_object_2 = Mock() ps_object_2.required_parts = ['foo', 'bar', 'bang'] page.extend(ps_object_1, ps_object_2) header = page.header() # Access to parts is unordered, strictly speaking parts_requested = [kwargs['name'] for args, kwargs in read_part.call_args_list] self.assertEqual(len(parts_requested), 3) # No repeat requests self.assertEqual(set(parts_requested), set(['foo', 'bar', 'bang'])) self.assertEqual(header, 'MockPageStart\n' 'part_1\n' 'part_2\n' 'part_3\n')