def test_query_obama(self):
        query_obama()

        obama = People(idref="PER_BROBMA", name="Barack Obama")
        steve = People(idref="PER_STEVEN", name="Steve")
        robert = People(idref="PER_ROBERT", name="Robert")
        moon = People(idref="PER_MOOOON", name="The Moon")
        picnic = Crises(idref="CRI_PICNIC", name="A Picnic")
        aliens = Organizations(idref="ORG_ALIENS", name="Aliens")
        obama.save()
        steve.save()
        robert.save()
        moon.save()
        picnic.save()
        aliens.save()

        picnic.people.add(obama)
        picnic.people.add(steve)

        obama.organizations.add(aliens)
        robert.organizations.add(aliens)

        result = query_obama()

        self.assertEqual(len(result), 3)
        self.assertTrue((u"PER_BROBMA",) in result)
        self.assertTrue((u"PER_STEVEN",) in result)
        self.assertTrue((u"PER_ROBERT",) in result)
        self.assertTrue(not (u"PER_MOOOON",) in result)
        self.assertTrue(not (u"CRI_PICNIC",) in result)
        self.assertTrue(not (u"ORG_ALIENS",) in result)
    def test_query_people_with_many_crises(self):
        query_people_with_many_crises()
        zero = People(name="boring person", idref="PER_BORING")
        one = People(name="Person in one crisis", idref="PER_ONECRI")
        two = People(name="Person in two crises", idref="PER_TWOCRI")
        three = People(name="Person in three crises", idref="PER_THRCRI")
        aids = Crises(name="AIDS/HIV", idref="CRI_AIDSHI")
        fire = Crises(name="Arizona Wildfires", idref="CRI_AZWILD")
        china = Crises(name="Democracy in China", idref="CRI_CHINAD")

        aids.people.add(one)
        aids.people.add(two)
        fire.people.add(two)
        aids.people.add(three)
        fire.people.add(three)
        china.people.add(three)

        zero.save()
        one.save()
        two.save()
        three.save()
        aids.save()
        fire.save()
        china.save()

        result = query_people_with_many_crises()

        self.assertEqual(len(result), 2)
        self.assertTrue(("PER_TWOCRI",) in result)
        self.assertTrue(("PER_THRCRI",) in result)
        self.assertTrue(not ("PER_ONECRI",) in result)
        self.assertTrue(not ("PER_BORING",) in result)
        self.assertTrue(not ("CRI_AIDSHI",) in result)
        self.assertTrue(not ("CRI_AZWILD",) in result)
        self.assertTrue(not ("CRI_CHINAD",) in result)
    def test_query_people_in_crises_after_millenium(self):
        civilwar = Crises(name="The Civil War", idref="CRI_CIVWAR", date=date(1960, 1, 1))
        monday = Crises(name="Monday", idref="CRI_MONDAY", date=date(2013, 8, 5))
        lincoln = People(name="Abraham Lincoln", idref="PER_LINCLN")
        me = People(name="James Kunze", idref="PER_JAMESK")
        time = People(name="Some Time Traveler", idref="PER_TIMETR")
        fiction = People(name="Uninvolved Bystander", idref="PER_FICTIO")

        civilwar.people.add(lincoln)
        civilwar.people.add(time)
        monday.people.add(me)
        monday.people.add(time)

        civilwar.save()
        monday.save()
        lincoln.save()
        me.save()
        time.save()
        fiction.save()

        result = query_people_in_crises_after_millenium()

        self.assertEqual(len(result), 2)
        self.assertTrue(("PER_JAMESK",) in result)
        self.assertTrue(("PER_TIMETR",) in result)
        self.assertTrue(not ("PER_LINCLN",) in result)
        self.assertTrue(not ("PER_FICTIO",) in result)
        self.assertTrue(not ("CRI_CIVWAR",) in result)
        self.assertTrue(not ("CRI_MONDAY",) in result)
    def test_query_things_without_pictures(self):
        query_things_without_pictures()

        obama = People(name="Barack Obama", idref="PER_BROBMA")
        me = People(name="James Kunze", idref="PER_JAMESK")
        un = Organizations(name="United Nations", idref="ORG_UNINAT")
        cachemoney = Organizations(name="Cache Money", idref="ORG_CACHEM")
        aids = Crises(name="AIDS/HIV", idref="CRI_AIDSHI")
        phasethree = Crises(name="CS373 Project Phase 3", idref="CRI_PROJCT")

        pic1 = List_Item(list_type="Images", idref="PER_BROBMA", embed="obamapic.png")
        pic2 = List_Item(list_type="Images", idref="ORG_UNINAT", embed="unpic.png")
        pic3 = List_Item(list_type="Images", idref="CRI_AIDSHI", embed="aidspic.png")

        obama.save()
        me.save()
        un.save()
        cachemoney.save()
        aids.save()
        phasethree.save()
        pic1.save()
        pic2.save()
        pic3.save()

        result = query_things_without_pictures()

        self.assertEqual(len(result), 3)
        self.assertTrue(not ("PER_BROBMA",) in result)
        self.assertTrue(not ("ORG_UNINAT",) in result)
        self.assertTrue(not ("CRI_AIDSHI",) in result)
        self.assertTrue(("PER_JAMESK",) in result)
        self.assertTrue(("ORG_CACHEM",) in result)
        self.assertTrue(("CRI_PROJCT",) in result)
    def test_search_one_word(self):
        fire = Crises(name="Arizona Wildfires", idref="CRI_AZWILD", date=date(2013, 8, 5))
        china = Crises(name="Democracy in China", idref="CRI_CHINAD", date=date(2013, 8, 5))
        civilwar = Crises(name="The Civil War", idref="CRI_CIVWAR", date=date(1960, 1, 1))
        dracula = People(name="Dracula", idref="PER_DRACUL")
        firedp = Organizations(name="Arizona Fire Department", idref="ORG_FIREDP")

        fire.save()
        china.save()
        civilwar.save()
        dracula.save()
        firedp.save()

        self.assertEqual(
            search_one_word("Arizona", []),
            [
                ("CRI_AZWILD", "Arizona Wildfires", "Arizona Wildfires"),
                ("ORG_FIREDP", "Arizona Fire Department", "Arizona Fire Department"),
            ],
        )
        self.assertEqual(
            search_one_word("Fire", []),
            [
                ("CRI_AZWILD", "Arizona Wildfires", "Arizona Wildfires"),
                ("ORG_FIREDP", "Arizona Fire Department", "Arizona Fire Department"),
            ],
        )
        self.assertEqual(search_one_word("Extreme Elevator Riding", []), [])
        self.assertEqual(search_one_word("Dracula", []), [("PER_DRACUL", "Dracula", "Dracula")])
        self.assertEqual(
            search_one_word("Fire", ["CRI_AZWILD"]),
            [("ORG_FIREDP", "Arizona Fire Department", "Arizona Fire Department")],
        )
        self.assertEqual(
            search_one_word("Fire", ["ORG_FIREDP"]), [("CRI_AZWILD", "Arizona Wildfires", "Arizona Wildfires")]
        )
        self.assertEqual(search_one_word("Fire", ["CRI_AZWILD", "ORG_FIREDP"]), [])
        self.assertEqual(search_one_word("Democracy in China", []), search_one_word("DeMoCrAcY In CHINA", []))
    def test_query_number_images_before_millenium(self):
        fire = Crises(name="Arizona Wildfires", idref="CRI_AZWILD", date=date(2013, 8, 5))
        china = Crises(name="Democracy in China", idref="CRI_CHINAD", date=date(2013, 8, 5))
        civilwar = Crises(name="The Civil War", idref="CRI_CIVWAR", date=date(1960, 1, 1))
        dracula = People(name="Dracula", idref="PER_DRACUL")

        fire.save()
        china.save()
        civilwar.save()

        List_Item(idref="CRI_AZWILD", list_type="Images").save()
        List_Item(idref="CRI_CHINAD", list_type="Images").save()
        List_Item(idref="CRI_CHINAD", list_type="Videos").save()
        List_Item(idref="CRI_CHINAD", list_type="Maps").save()
        List_Item(idref="CRI_CIVWAR", list_type="Images").save()
        List_Item(idref="CRI_CIVWAR", list_type="Images").save()
        List_Item(idref="CRI_CIVWAR", list_type="Maps").save()
        List_Item(idref="PER_DRACUL", list_type="Images").save()
        List_Item(idref="PER_DRACUL", list_type="Videos").save()

        result = query_number_images_before_millenium()

        self.assertEqual(len(result), 1)
        self.assertTrue((2,) in result)
    def test_query_find_natural_disasters(self):
        query_find_natural_disasters()
        war = Crises(name="War", idref="CRI_THEWAR")
        aliens = Crises(name="Aliens", idref="CRI_ALIENS", kind="Unnatural disaster")
        fire = Crises(name="Forest fire", idref="CRI_FFIRES", kind="Natural disaster")
        flood = Crises(name="Flooding", idref="CRI_FLOODS", kind="Natural disaster")

        war.save()
        aliens.save()
        fire.save()
        flood.save()

        result = query_find_natural_disasters()

        self.assertEqual(len(result), 2)
        self.assertTrue(("CRI_FFIRES",) in result)
        self.assertTrue(("CRI_FLOODS",) in result)
        self.assertTrue(not ("CRI_THEWAR",) in result)
        self.assertTrue(not ("CRI_ALIENS",) in result)
    def test_query_crises_without_things(self):
        query_crises_without_things()

        vader = People(name="Darth Vader", idref="PER_DVADER")
        luke = People(name="Luke Skywalker", idref="PER_LUKESW")
        empire = Organizations(name="The Empire", idref="ORG_EMPIRE")
        war = Crises(name="Intergalactic War", idref="CRI_THEWAR")
        war.people.add(vader)
        war.people.add(luke)
        war.organizations.add(empire)
        vader.organizations.add(empire)
        stormtroopers = Crises(name="Stormtroopers are dumb", idref="CRI_TROOPR")
        stormtroopers.organizations.add(empire)
        rebellion = Crises(name="The Rebellion", idref="CRI_REBELS")
        rebellion.people.add(luke)
        problem = Crises(name="The prequels suck", idref="CRI_PREQEL")
        tired = Crises(name="making these tests is tiring i'm sorry for the dumb stuff", idref="CRI_IMBORD")
        orphan = People(name="person w/o thing", idref="PER_ORPHAN")

        vader.save()
        luke.save()
        empire.save()
        war.save()
        stormtroopers.save()
        rebellion.save()
        problem.save()
        tired.save()
        orphan.save()

        result = query_crises_without_things()

        self.assertEqual(len(result), 2)
        self.assertTrue(("CRI_PREQEL",) in result)
        self.assertTrue(("CRI_IMBORD",) in result)
        self.assertTrue(not ("PER_DVADER",) in result)
        self.assertTrue(not ("PER_LUKESW",) in result)
        self.assertTrue(not ("ORG_EMPIRE",) in result)
        self.assertTrue(not ("CRI_THEWAR",) in result)
        self.assertTrue(not ("CRI_TROOPR",) in result)
        self.assertTrue(not ("CRI_REBELS",) in result)
        self.assertTrue(not ("PER_ORPHAN",) in result)