def test_index_updates(self): """ test that indexes get updated correctly when objects are created or deleted or updated from pending to ok """ # this object will be status pending and should not be returned in the search # results new_ix_p = models.InternetExchange.objects.create( status="pending", org=self.org, name="Test IU ix") self.test_search() # this object will be status ok, and should show up in the index new_ix_o = models.InternetExchange.objects.create( status="ok", org=self.org, name="Test IU P ix") rv = search.search("test") assert len(rv["ix"]) == 2 # now we switch the first object to ok as well and it as well should show up in the # index new_ix_p.status = "ok" new_ix_p.save() rv = search.search("test") assert len(rv["ix"]) == 3 #finally we delete both and they should disappear again new_ix_p.delete() new_ix_o.delete() self.test_search()
def test_index_updates(self): """ test that indexes get updated correctly when objects are created or deleted or updated from pending to ok """ # this object will be status pending and should not be returned in the search # results new_ix_p = models.InternetExchange.objects.create(status="pending", org=self.org, name="Test IU ix") self.test_search() # this object will be status ok, and should show up in the index new_ix_o = models.InternetExchange.objects.create(status="ok", org=self.org, name="Test IU P ix") rv = search.search("test") assert len(rv["ix"]) == 2 # now we switch the first object to ok as well and it as well should show up in the # index new_ix_p.status = "ok" new_ix_p.save() rv = search.search("test") assert len(rv["ix"]) == 3 # finally we delete both and they should disappear again new_ix_p.delete() new_ix_o.delete() self.test_search()
def test_search_unaccent(self): """ search for entities containing 'ãccented' using accented and unaccented terms """ rv = search.search(u"accented") for k, inst in self.instances_accented.items(): assert k in rv assert len(rv[k]) == 1 assert unidecode.unidecode(rv[k][0]["name"]) == unidecode.unidecode(inst.search_result_name) rv = search.search(u"ãccented") for k, inst in self.instances_accented.items(): assert k in rv assert len(rv[k]) == 1 assert unidecode.unidecode(rv[k][0]["name"]) == unidecode.unidecode(inst.search_result_name)
def test_search_case(self): """ search for entities containing 'test' - this should return all instances we created during setUp since matching is case-insensitive """ rv = search.search("test") for k, inst in self.instances.items(): assert k in rv assert len(rv[k]) == 1 assert rv[k][0]["name"] == inst.search_result_name
def test_search(self): """ search for entities containing 'Test' - this should return all instances we created during setUp """ rv = search.search("Test") for k, inst in self.instances.items(): assert k in rv assert len(rv[k]) == 1 assert rv[k][0]["name"] == inst.search_result_name rv = search.search("as1") assert len(rv["net"]) == 1 assert rv["net"][0]["name"] == self.instances["net"].search_result_name rv = search.search("asn1") assert len(rv["net"]) == 1 assert rv["net"][0]["name"] == self.instances["net"].search_result_name
def test_search(self): """ search for entities containing 'Test' - this should return all instances we created during setUp """ rv = search.search("Test") for k, inst in self.instances.items(): assert k in rv assert len(rv[k]) == 1 assert rv[k][0]["name"] == inst.search_result_name assert rv[k][0]["org_id"] == inst.org_id rv = search.search("as1") assert len(rv["net"]) == 1 assert rv["net"][0]["name"] == self.instances["net"].search_result_name assert rv["net"][0]["org_id"] == self.instances["net"].org_id rv = search.search("asn1") assert len(rv["net"]) == 1 assert rv["net"][0]["name"] == self.instances["net"].search_result_name assert rv["net"][0]["org_id"] == self.instances["net"].org_id
def test_search(self): """ search for entities containing 'Test' - this should return all instances we created during setUp """ rv = search.search("Test") for k, inst in list(self.instances.items()): assert k in rv assert len(rv[k]) == 1 assert rv[k][0]["name"] == inst.search_result_name assert rv[k][0]["org_id"] == inst.org_id # test that term order does not matter for k, inst in list(self.instances.items()): rv = search.search(f"Test {k}") assert k in rv assert len(rv[k]) == 1 assert rv[k][0]["name"] == inst.search_result_name assert rv[k][0]["org_id"] == inst.org_id rv = search.search(f"{k} Test") assert k in rv assert len(rv[k]) == 1 assert rv[k][0]["name"] == inst.search_result_name assert rv[k][0]["org_id"] == inst.org_id rv = search.search("as1") assert len(rv["net"]) == 1 assert rv["net"][0]["name"] == self.instances["net"].search_result_name assert rv["net"][0]["org_id"] == self.instances["net"].org_id rv = search.search("asn1") assert len(rv["net"]) == 1 assert rv["net"][0]["name"] == self.instances["net"].search_result_name assert rv["net"][0]["org_id"] == self.instances["net"].org_id
def test_search_asn_match(self): """ Test that exact numeric match on an ASN always appears at the top of the results (#232) """ # network with asn 633 - this should be the first # resut when searching for `633` net_1 = models.Network.objects.create(name="Test ASN Matching", asn=633, org=self.org, status="ok") # network with asn 6333, this should match, but not # be the first result net_2 = models.Network.objects.create(name="Test ASN Matching 2", asn=6333, org=self.org, status="ok") # network with asn 6334 and 633 as part of its name # this should score high, but should not be the first # result net_3 = models.Network.objects.create(name="Test ASN 633 Matching", asn=6334, org=self.org, status="ok") # rebuild the index call_command("rebuild_index", "--noinput") rv = search.search("633") assert rv["net"][0]["id"] == net_1.id # clean up net_1.delete(hard=True) net_2.delete(hard=True) net_3.delete(hard=True) call_command("rebuild_index", "--noinput")