1
0
mirror of https://github.com/peeringdb/peeringdb.git synced 2024-05-11 05:55:09 +00:00
Files
peeringdb-peeringdb/tests/test_autocomplete.py
Matt Griswold fbc72ea682 Support 202104 (#980)
* 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>
2021-05-19 08:11:30 -05:00

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