mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
* Add migration for service level and terms * Add service level and terms to UI and serializer, as well as data/enum * Wire up data/enum endpoint and loader * remove proto_ from ix UI * derive fields for proto_unicast and proto_ipv6 * update tests for readonly fields * Fix query for protocols * Fix api bug with protocol * add readonly fields to django admin * rename readonly fields * Add translation to names * Add pdb api test for suggested facility re-add * Add printing debuggin test * add printing debugging serializer * Update _undelete with _reapprove to handle pending cases * Update tests (one is still failing) * adjust suggest test * Add ix_count to fac (834) * Add test for ix_count on fac (834) * Add fac_count to IX (836) * add ix_count and fac_count to Network * Refactor ix net_count filtering * Add filtering for 834, 835, 836 * Remove duplicates from the Network's ix_count * Setup Network for ix_count and fac_count (835) * initial obj_counts for Facilities and Exchanges * Add signals for updates to all counts * add migration * Add print statements to test * introduce reversion to tests * rename network count to net count across codebase * fix network_count typo * add migration to set default vals * fix filter tests for obj_counts * speed up migration * fix failing tests * fix final test * sort out migration tree and add fac offered fields * update frontend for facility dropdown offered_resilience * First pass at advanced api search for user story 1 * melissa geo lookup first steps * fix migration hierarchy * working melissa integration * begin ending filters for api endpoints * add more org_present endpoints * add search for IXs that match multiple networks * extend logic to facility * Add service level and terms to advanced search * use address2 field for lookup * melissa tests * cleanup and docs * uncomment offered_power * developed offered_power component * fix geo normalize existing cmd normalize state * change migration to match django-peeringdb * add offered_space field * Fill out remaining api filter fields * Add org_not_present endpoint filter * fix unit input ux * more ux fixes * remove merge cruft * google for geocoding various melissa improvements (consider result quality) * fix tests * refactor org_preset and org_not_present queries * ix capacity api filters * ix capacity filters for #802 advanced search ux for #802 * finalize advanced search UX for #802 * css fixes * remove cruft * fix net_count fac_count queries * add new fields to create facility (#800) tests for #802 and #800 * fix tests * remove #800 changes * fix capacity search * more #800 changes to remove * django-peeringdb 2.7.0 and pipenv relock * black format * pin black version Co-authored-by: Elliot Frank <elliot@20c.com> Co-authored-by: Stefan Pratter <stefan@20c.com>
80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
import json
|
|
|
|
from django.urls import reverse
|
|
from django.test import Client, RequestFactory
|
|
|
|
import reversion
|
|
|
|
from peeringdb_server.models import User, Organization, Network
|
|
from peeringdb_server import autocomplete_views
|
|
from .util import ClientCase
|
|
|
|
|
|
class TestAutocomplete(ClientCase):
|
|
@classmethod
|
|
def setUpTestData(cls):
|
|
super().setUpTestData()
|
|
cls.staff_user = User.objects.create_user(
|
|
"staff", "staff@localhost", "staff", is_staff=True
|
|
)
|
|
|
|
def setUp(self):
|
|
self.factory = RequestFactory()
|
|
|
|
def test_deleted_versions(self):
|
|
with reversion.create_revision():
|
|
org = Organization.objects.create(name="Test Org", status="ok")
|
|
with reversion.create_revision():
|
|
org.delete()
|
|
with reversion.create_revision():
|
|
org.status = "ok"
|
|
org.save()
|
|
with reversion.create_revision():
|
|
org.delete()
|
|
|
|
url = reverse("autocomplete-admin-deleted-versions")
|
|
|
|
r = self.factory.get(f"{url}?q=org {org.id}")
|
|
r.user = self.staff_user
|
|
r = autocomplete_views.DeletedVersionAutocomplete.as_view()(r)
|
|
|
|
content = json.loads(r.content)
|
|
|
|
assert reversion.models.Version.objects.all().count() == 4
|
|
assert len(content.get("results")) == 2
|
|
|
|
def test_network_autocomplete(self):
|
|
org = Organization.objects.create(name="Test Org", status="ok")
|
|
net = Network.objects.create(
|
|
name="First Network", asn=1000, status="ok", org=org
|
|
)
|
|
net = Network.objects.create(
|
|
name="Second Network", asn=2000, status="ok", org=org
|
|
)
|
|
|
|
url = reverse("autocomplete-net")
|
|
|
|
req = self.factory.get(f"{url}?q=First")
|
|
rsp = autocomplete_views.NetworkAutocomplete.as_view()(req).content.decode(
|
|
"utf-8"
|
|
)
|
|
|
|
assert "First" in rsp
|
|
assert "Second" not in rsp
|
|
|
|
req = self.factory.get(f"{url}?q=1000")
|
|
rsp = autocomplete_views.NetworkAutocomplete.as_view()(req).content.decode(
|
|
"utf-8"
|
|
)
|
|
|
|
assert "First" in rsp
|
|
assert "Second" not in rsp
|
|
|
|
req = self.factory.get(f"{url}?q=Network")
|
|
rsp = autocomplete_views.NetworkAutocomplete.as_view()(req).content.decode(
|
|
"utf-8"
|
|
)
|
|
|
|
assert "First" in rsp
|
|
assert "Second" in rsp
|