def test_with_lords(self):
        """Instantiate PrivateMembersBill with HTML of a PMB initiated in the lords."""

        html_input = """<tr>
                        <td>
                           <table width="100%" cellpadding="0" cellspacing="0" border="0">
                              <tr>
                                 <td align="right" style="width: 1.06cm;" valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="text-align:right;"><span class="charBusinessItemNumber">2</span>
</div>

                                 </td>
                                 <td valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="padding-left:12pt;">	LAW COMMISSION BILL [<span class="Italic">LORDS</span>]: As amended in the Public Bill Committee, to be considered.

</div>

                                 </td>
                              </tr>
                           </table>
                        </td>
                     </tr>
                     <tr>
                        <td>
                           <div class="paraMemberinCharge">Member in charge: Emily Thornberry
</div>

                        </td>
                     </tr>"""

        expected_xml = '<private-members-bill id="test.2" lords="yes" speakerid="uk.org.publicwhip/member/1656" speakername="Emily Thornberry"><item-heading id="test.2.1">LAW COMMISSION BILL [LORDS]: As amended in the Public Bill Committee, to be considered.</item-heading><motion-member id="test.2.2">Emily Thornberry</motion-member></private-members-bill>'

        soup = BeautifulSoup.BeautifulSoup(html_input)

        trs = soup.findAll('tr', recursive=False)

        bill_item = PrivateMembersBill(trs[0], 'test',
                                       datetime.date(2009, 10, 16))

        assert bill_item.id == 'test.2'

        expected_text = u'LAW COMMISSION BILL [LORDS]: As amended in the Public Bill Committee, to be considered.'

        assert bill_item.heading_text == expected_text, (
            bill_item.heading_text, expected_text)

        bill_item.feed_member(trs[1])

        assert bill_item.get_unique_member(
        ) == u'Emily Thornberry', bill_item.get_unique_member()

        expected_dom = xml.dom.minidom.parseString(
            expected_xml).documentElement

        # Doesn't really matter what this document looks like
        document = dom_impl.createDocument(None, 'test', None)
        received_dom = bill_item.get_dom(document)

        compare_doms(expected_dom, received_dom)
    def test_simple_case(self):
        """Instantiate a PrivateMembersBill with two tr input (the most common case)."""

        html_input = """
                     <tr>
                        <td>
                           <table width="100%" cellpadding="0" cellspacing="0" border="0">
                              <tr>
                                 <td align="right" style="width: 1.06cm;" valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="text-align:right;"><span class="charBusinessItemNumber">3</span>
</div>

                                 </td>
                                 <td valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="padding-left:12pt;">	CROWN EMPLOYMENT (NATIONALITY) BILL: As amended in the Public Bill Committee, to be considered.
</div>

                                 </td>
                              </tr>
                           </table>
                        </td>
                     </tr>
                     <tr>
                        <td>
                           <div class="paraMemberinCharge">Member in charge: Mr Andrew Dismore
</div>

                        </td>
                     </tr>"""

        expected_xml = u'<private-members-bill id="test.3" speakerid="uk.org.publicwhip/member/1628" speakername="Mr Andrew Dismore"><item-heading id="test.3.1">CROWN EMPLOYMENT (NATIONALITY) BILL: As amended in the Public Bill Committee, to be considered.</item-heading><motion-member id="test.3.2">Mr Andrew Dismore</motion-member></private-members-bill>'

        soup = BeautifulSoup.BeautifulSoup(html_input)

        trs = soup.findAll('tr', recursive=False)

        bill_item = PrivateMembersBill(trs[0], 'test',
                                       datetime.date(2009, 10, 16))

        assert bill_item.id == 'test.3'

        assert bill_item.heading_text == u'CROWN EMPLOYMENT (NATIONALITY) BILL: As amended in the Public Bill Committee, to be considered.'

        bill_item.feed_member(trs[1])

        assert bill_item.get_unique_member(
        ) == u'Mr Andrew Dismore', bill_item.get_unique_member()

        expected_dom = xml.dom.minidom.parseString(
            expected_xml).documentElement

        # Doesn't really matter what's in this doc.
        document = dom_impl.createDocument(None, 'test', None)
        received_dom = bill_item.get_dom(document)

        compare_doms(expected_dom, received_dom)
    def test_with_lords(self):
        """Instantiate PrivateMembersBill with HTML of a PMB initiated in the lords."""

        html_input = """<tr>
                        <td>
                           <table width="100%" cellpadding="0" cellspacing="0" border="0">
                              <tr>
                                 <td align="right" style="width: 1.06cm;" valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="text-align:right;"><span class="charBusinessItemNumber">2</span>
</div>

                                 </td>
                                 <td valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="padding-left:12pt;">	LAW COMMISSION BILL [<span class="Italic">LORDS</span>]: As amended in the Public Bill Committee, to be considered.

</div>

                                 </td>
                              </tr>
                           </table>
                        </td>
                     </tr>
                     <tr>
                        <td>
                           <div class="paraMemberinCharge">Member in charge: Emily Thornberry
</div>

                        </td>
                     </tr>"""

        expected_xml = '<private-members-bill id="test.2" lords="yes" speakerid="uk.org.publicwhip/member/1656" speakername="Emily Thornberry"><item-heading id="test.2.1">LAW COMMISSION BILL [LORDS]: As amended in the Public Bill Committee, to be considered.</item-heading><motion-member id="test.2.2">Emily Thornberry</motion-member></private-members-bill>'

        soup = BeautifulSoup.BeautifulSoup(html_input)

        trs = soup.findAll('tr', recursive=False)

        bill_item = PrivateMembersBill(trs[0], 'test', datetime.date(2009,10,16))

        assert bill_item.id == 'test.2'

        expected_text = u'LAW COMMISSION BILL [LORDS]: As amended in the Public Bill Committee, to be considered.'

        assert bill_item.heading_text == expected_text, (bill_item.heading_text, expected_text)

        bill_item.feed_member(trs[1])

        assert bill_item.get_unique_member() == u'Emily Thornberry', bill_item.get_unique_member()


        expected_dom = xml.dom.minidom.parseString(expected_xml).documentElement

        # Doesn't really matter what this document looks like
        document = dom_impl.createDocument(None, 'test', None)
        received_dom = bill_item.get_dom(document)

        compare_doms(expected_dom, received_dom)
    def test_simple_case(self):
        """Instantiate a PrivateMembersBill with two tr input (the most common case)."""

        html_input = """
                     <tr>
                        <td>
                           <table width="100%" cellpadding="0" cellspacing="0" border="0">
                              <tr>
                                 <td align="right" style="width: 1.06cm;" valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="text-align:right;"><span class="charBusinessItemNumber">3</span>
</div>

                                 </td>
                                 <td valign="top">
                                    <div class="paraFBPrivateMembersBillItemHeading" style="padding-left:12pt;">	CROWN EMPLOYMENT (NATIONALITY) BILL: As amended in the Public Bill Committee, to be considered.
</div>

                                 </td>
                              </tr>
                           </table>
                        </td>
                     </tr>
                     <tr>
                        <td>
                           <div class="paraMemberinCharge">Member in charge: Mr Andrew Dismore
</div>

                        </td>
                     </tr>"""


        expected_xml = u'<private-members-bill id="test.3" speakerid="uk.org.publicwhip/member/1628" speakername="Mr Andrew Dismore"><item-heading id="test.3.1">CROWN EMPLOYMENT (NATIONALITY) BILL: As amended in the Public Bill Committee, to be considered.</item-heading><motion-member id="test.3.2">Mr Andrew Dismore</motion-member></private-members-bill>'

        soup = BeautifulSoup.BeautifulSoup(html_input)

        trs = soup.findAll('tr', recursive=False)

        bill_item = PrivateMembersBill(trs[0], 'test', datetime.date(2009,10,16))

        assert bill_item.id == 'test.3'

        assert bill_item.heading_text == u'CROWN EMPLOYMENT (NATIONALITY) BILL: As amended in the Public Bill Committee, to be considered.'

        bill_item.feed_member(trs[1])

        assert bill_item.get_unique_member() == u'Mr Andrew Dismore', bill_item.get_unique_member()


        expected_dom = xml.dom.minidom.parseString(expected_xml).documentElement

        # Doesn't really matter what's in this doc.
        document = dom_impl.createDocument(None, 'test', None)
        received_dom = bill_item.get_dom(document)

        compare_doms(expected_dom, received_dom)