p = 'backend/tests/test_citations.py'
s = open(p).read()
s = s.replace('''class CiteTests(unittest.TestCase):
    def test_maps_a_corpus_filename_to_the_book(self):
        got = citations.cite({"title": "Kliegman R. Nelson Textbook of Pediatrics 2-Volume Set 22ed 2024"})
        self.assertTrue(got.startswith("Kliegman RM"))
        self.assertIn("22nd ed.", got)

    def test_two_names_for_one_book_give_one_citation(self):
        a = citations.cite({"title": "Kliegman R. Nelson Textbook of Pediatrics"})
        b = citations.cite({"title": "Kliegman R. Nelson Textbook of Pediatrics 2-Volume Set 22ed 2024"})
        self.assertEqual(a, b)

    def test_an_epub_filename_still_maps(self):
        got = citations.cite({"title": "2021_Fleisher_&_Ludwig's_Textbook_of_Pediatric_Emergency_Medicine.epub"})
        self.assertIn("Fleisher & Ludwig's", got)''',
'''class CiteTests(unittest.TestCase):
    def test_reads_as_topic_book_page(self):
        got = citations.cite(
            {"title": "Kliegman R. Nelson Textbook of Pediatrics 2-Volume Set 22ed 2024",
             "page": 1069},
            "Periventricular leukomalacia")
        self.assertEqual(
            got,
            "Periventricular leukomalacia — Kliegman R, ed. Nelson Textbook of "
            "Pediatrics, 22nd ed., 2024, p. 1069.")

    def test_no_page_leaves_the_page_off(self):
        got = citations.cite({"title": "Berkowitz's Pediatrics"}, "Colic")
        self.assertTrue(got.endswith("6th ed., 2020."))
        self.assertNotIn("p. ", got)

    def test_no_topic_leaves_the_dash_off(self):
        got = citations.cite({"title": "Berkowitz's Pediatrics", "page": 12})
        self.assertFalse(got.startswith(" —"))
        self.assertTrue(got.startswith("Berkowitz CD"))

    def test_two_names_for_one_book_give_one_citation(self):
        a = citations.cite({"title": "Kliegman R. Nelson Textbook of Pediatrics"}, "x")
        b = citations.cite({"title": "Kliegman R. Nelson Textbook of Pediatrics 2-Volume Set 22ed 2024"}, "x")
        self.assertEqual(a, b)

    def test_an_epub_filename_still_maps(self):
        got = citations.cite({"title": "2021_Fleisher_&_Ludwig's_Textbook_of_Pediatric_Emergency_Medicine.epub"})
        self.assertIn("Fleisher & Ludwig's", got)''')

s = s.replace('''    def test_an_uptodate_topic_is_cited_as_one(self):
        got = citations.cite({"title": "Fever in infants and children: Pathophysiology and management - UpToDate"})
        self.assertEqual(got, "Fever in infants and children: Pathophysiology and management. UpToDate. Wolters Kluwer.")''',
'''    def test_an_uptodate_topic_is_cited_as_one(self):
        got = citations.cite({"title": "Fever in infants and children: Pathophysiology and management - UpToDate"})
        self.assertEqual(
            got,
            "Fever in infants and children: Pathophysiology and management. "
            "UpToDate, Wolters Kluwer.")''')

s = s.replace('''    def test_an_unmapped_source_is_cleaned_not_dropped(self):
        got = citations.cite({"title": "Some_New_Book_2029.epub", "author": "Ade A"})
        self.assertEqual(got, "Ade A. Some New Book 2029.")

    def test_a_scanning_tool_is_not_an_author(self):
        got = citations.cite({"title": "Something Unmapped", "author": "CamScanner"})
        self.assertEqual(got, "Something Unmapped.")''',
'''    def test_an_unmapped_source_is_cleaned_not_dropped(self):
        got = citations.cite({"title": "Some_New_Book_2029.epub", "author": "Ade A"})
        self.assertEqual(got, "Ade A. Some New Book 2029.")

    def test_a_scanning_tool_is_not_an_author(self):
        got = citations.cite({"title": "Something Unmapped", "author": "CamScanner"})
        self.assertEqual(got, "Something Unmapped.")


class TopicTests(unittest.TestCase):
    def test_takes_the_bold_lead_in(self):
        got = citations.topic_of(
            "**Periventricular leukomalacia (PVL)** is a disorder of the white matter", "Fall")
        self.assertEqual(got, "Periventricular leukomalacia (PVL)")

    def test_takes_a_heading(self):
        self.assertEqual(citations.topic_of("### Ultrasound diagnosis\\nThe scan shows", "F"),
                         "Ultrasound diagnosis")

    def test_falls_back_to_the_article_subject(self):
        self.assertEqual(citations.topic_of("continuing from the previous page,", "Cerebral Palsy"),
                         "Cerebral Palsy")

    def test_nothing_at_all(self):
        self.assertEqual(citations.topic_of("", ""), "")''')

s = s.replace('''class TidyTests(unittest.TestCase):
    def test_merges_the_same_book_and_keeps_the_pages(self):
        out = citations.tidy([
            {"title": "Kliegman R. Nelson Textbook of Pediatrics", "pages": [10]},
            {"title": "Kliegman R. Nelson Textbook of Pediatrics 2-Volume Set 22ed 2024", "pages": [12, 10]},
            {"title": "Cover", "author": "Vitalsource Download", "pages": [1]},
        ])
        self.assertEqual(len(out), 1)
        self.assertEqual(out[0]["pages"], [10, 12])

    def test_alphabetical(self):
        out = citations.tidy([
            {"title": "Zitelli and Davis' Atlas of Pediatric Physical Diagnosis"},
            {"title": "Berkowitz's Pediatrics"},
        ])
        self.assertEqual([r["text"][0] for r in out], ["B", "Z"])''',
'''class TidyTests(unittest.TestCase):
    def test_a_page_list_becomes_one_entry_per_page(self):
        out = citations.tidy([
            {"title": "Kliegman R. Nelson Textbook of Pediatrics", "pages": [10, 12]},
        ], topic="Croup")
        self.assertEqual(len(out), 2)
        self.assertEqual([row["page"] for row in out], [10, 12])

    def test_the_same_book_at_the_same_page_is_one_line(self):
        out = citations.tidy([
            {"title": "Kliegman R. Nelson Textbook of Pediatrics", "pages": [10]},
            {"title": "Kliegman R. Nelson Textbook of Pediatrics 2-Volume Set 22ed 2024",
             "pages": [10]},
            {"title": "Cover", "author": "Vitalsource Download", "pages": [1]},
        ], topic="Croup")
        self.assertEqual(len(out), 1)

    def test_ordered_by_book_then_page(self):
        out = citations.tidy([
            {"title": "Zitelli and Davis' Atlas of Pediatric Physical Diagnosis", "pages": [5]},
            {"title": "Berkowitz's Pediatrics", "pages": [9, 2]},
        ], topic="Croup")
        self.assertEqual([row["page"] for row in out], [2, 9, 5])
        self.assertTrue(out[0]["text"].endswith("p. 2."))''')
open(p, 'w').write(s)
print('written')
