mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-10 17:16:22 +01:00
Add some tests
This commit is contained in:
@@ -101,7 +101,6 @@ class DataTablesView(View):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def get(self, request: HttpRequest, *args, **kwargs):
|
def get(self, request: HttpRequest, *args, **kwargs):
|
||||||
|
|
||||||
# Get all our Params out of GET
|
# Get all our Params out of GET
|
||||||
length = self.get_param(request, "length", int)
|
length = self.get_param(request, "length", int)
|
||||||
start = self.get_param(request, "start", int)
|
start = self.get_param(request, "start", int)
|
||||||
@@ -128,7 +127,7 @@ class DataTablesView(View):
|
|||||||
|
|
||||||
# build output
|
# build output
|
||||||
for row in qs[start:limit]:
|
for row in qs[start:limit]:
|
||||||
ctx = {"note": row}
|
ctx = {"row": row}
|
||||||
row = []
|
row = []
|
||||||
for t in self.columns:
|
for t in self.columns:
|
||||||
row.append(self.render_template(request, t[1], ctx))
|
row.append(self.render_template(request, t[1], ctx))
|
||||||
|
|||||||
149
allianceauth/framework/tests/test_datatables.py
Normal file
149
allianceauth/framework/tests/test_datatables.py
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
"""
|
||||||
|
Test sentinel user
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
|
||||||
|
# Django
|
||||||
|
from allianceauth.tests.auth_utils import AuthUtils
|
||||||
|
from django.test import RequestFactory, TestCase
|
||||||
|
from django.http import HttpRequest
|
||||||
|
# Alliance Auth
|
||||||
|
from allianceauth.framework.datatables import DataTablesView
|
||||||
|
from allianceauth.eveonline.models import EveCharacter
|
||||||
|
|
||||||
|
class TestView(DataTablesView):
|
||||||
|
model=EveCharacter
|
||||||
|
columns = [
|
||||||
|
("", "{{ row.character_id }}"),
|
||||||
|
("character_name", "{{ row.character_name }}"),
|
||||||
|
("corporation_name", "{{ row.corporation_name }}"),
|
||||||
|
("alliance_name", "{{ row.alliance_name }}"),
|
||||||
|
]
|
||||||
|
|
||||||
|
class TestDataTables(TestCase):
|
||||||
|
"""
|
||||||
|
Tests for get_main_character_from_user
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.get_params = {
|
||||||
|
'draw': ['1'],
|
||||||
|
'columns[0][data]': ['0'],
|
||||||
|
'columns[0][name]': [''],
|
||||||
|
'columns[0][searchable]': ['false'],
|
||||||
|
'columns[0][orderable]': ['false'],
|
||||||
|
'columns[0][search][value]': [''],
|
||||||
|
'columns[0][search][regex]': ['false'],
|
||||||
|
'columns[1][data]': ['1'],
|
||||||
|
'columns[1][name]': [''],
|
||||||
|
'columns[1][searchable]': ['true'],
|
||||||
|
'columns[1][orderable]': ['true'],
|
||||||
|
'columns[1][search][value]': [''],
|
||||||
|
'columns[1][search][regex]': ['false'],
|
||||||
|
'columns[2][data]': ['2'],
|
||||||
|
'columns[2][name]': [''],
|
||||||
|
'columns[2][searchable]': ['true'],
|
||||||
|
'columns[2][orderable]': ['false'],
|
||||||
|
'columns[2][search][value]': [''],
|
||||||
|
'columns[2][search][regex]': ['false'],
|
||||||
|
'columns[3][data]': ['3'],
|
||||||
|
'columns[3][name]': [''],
|
||||||
|
'columns[3][searchable]': ['true'],
|
||||||
|
'columns[3][orderable]': ['true'],
|
||||||
|
'columns[3][search][value]': [''],
|
||||||
|
'columns[3][search][regex]': ['false'],
|
||||||
|
'order[0][column]': ['1'],
|
||||||
|
'order[0][dir]': ['asc'],
|
||||||
|
'start': ['0'],
|
||||||
|
'length': ['10'],
|
||||||
|
'search[value]': [''],
|
||||||
|
'search[regex]': ['false'],
|
||||||
|
'_': ['123456789']
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls) -> None:
|
||||||
|
"""
|
||||||
|
Set up eve models
|
||||||
|
"""
|
||||||
|
|
||||||
|
super().setUpClass()
|
||||||
|
cls.factory = RequestFactory()
|
||||||
|
|
||||||
|
cls.user = AuthUtils.create_user("bruce_wayne")
|
||||||
|
cls.user.is_superuser = True
|
||||||
|
cls.user.save()
|
||||||
|
|
||||||
|
EveCharacter.objects.all().delete()
|
||||||
|
for i in range(1,21):
|
||||||
|
EveCharacter.objects.create(
|
||||||
|
character_id=1000+i,
|
||||||
|
character_name=f"{1000+i} - Test Character",
|
||||||
|
corporation_id=2000+i,
|
||||||
|
corporation_name=f"{2000+i} - Test Corporation",
|
||||||
|
alliance_id=3000+i,
|
||||||
|
alliance_name=f"{3000+i} - Test Alliance",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_view_default(self):
|
||||||
|
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||||
|
response = TestView()
|
||||||
|
response.setup(request)
|
||||||
|
data = json.loads(response.get(request).content)["data"]
|
||||||
|
self.assertEqual(data[0][0], "1001")
|
||||||
|
self.assertEqual(data[9][0], "1010")
|
||||||
|
|
||||||
|
def test_view_reverse_sort(self):
|
||||||
|
self.get_params["order[0][dir]"] = "desc"
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||||
|
response = TestView()
|
||||||
|
response.setup(request)
|
||||||
|
data = json.loads(response.get(request).content)["data"]
|
||||||
|
self.assertEqual(data[0][0], "1020")
|
||||||
|
self.assertEqual(data[9][0], "1011")
|
||||||
|
|
||||||
|
def test_view_20_rows(self):
|
||||||
|
self.get_params["length"] = "20"
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||||
|
response = TestView()
|
||||||
|
response.setup(request)
|
||||||
|
data = json.loads(response.get(request).content)["data"]
|
||||||
|
self.assertEqual(data[0][0], "1001")
|
||||||
|
self.assertEqual(data[19][0], "1020")
|
||||||
|
|
||||||
|
def test_view_global_search(self):
|
||||||
|
self.get_params["search[value]"] = "1020"
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||||
|
response = TestView()
|
||||||
|
response.setup(request)
|
||||||
|
data = json.loads(response.get(request).content)["data"]
|
||||||
|
self.assertEqual(len(data), 1)
|
||||||
|
self.assertEqual(data[0][0], "1020")
|
||||||
|
|
||||||
|
def test_view_col_1_search(self):
|
||||||
|
self.get_params["columns[1][search][value]"] = "1020"
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||||
|
response = TestView()
|
||||||
|
response.setup(request)
|
||||||
|
data = json.loads(response.get(request).content)["data"]
|
||||||
|
self.assertEqual(len(data), 1)
|
||||||
|
self.assertEqual(data[0][0], "1020")
|
||||||
|
|
||||||
|
def test_view_col_1_search_empty(self):
|
||||||
|
self.get_params["columns[1][search][value]"] = "zzz"
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
request = self.factory.get('/fake-url/', data=self.get_params)
|
||||||
|
response = TestView()
|
||||||
|
response.setup(request)
|
||||||
|
data = json.loads(response.get(request).content)["data"]
|
||||||
|
self.assertEqual(len(data), 0)
|
||||||
10
tox.ini
10
tox.ini
@@ -7,7 +7,7 @@ envlist = py{38,39,310,311,312}-{all,core}, docs
|
|||||||
[testenv]
|
[testenv]
|
||||||
setenv =
|
setenv =
|
||||||
all: DJANGO_SETTINGS_MODULE = tests.settings_all
|
all: DJANGO_SETTINGS_MODULE = tests.settings_all
|
||||||
core: DJANGO_SETTINGS_MODULE = tests.settings_core
|
; core: DJANGO_SETTINGS_MODULE = tests.settings_core
|
||||||
basepython =
|
basepython =
|
||||||
py38: python3.8
|
py38: python3.8
|
||||||
py39: python3.9
|
py39: python3.9
|
||||||
@@ -18,10 +18,10 @@ deps=
|
|||||||
coverage
|
coverage
|
||||||
install_command = pip install -e ".[test]" -U {opts} {packages}
|
install_command = pip install -e ".[test]" -U {opts} {packages}
|
||||||
commands =
|
commands =
|
||||||
all: coverage run runtests.py -v 2 --debug-mode
|
all: coverage run runtests.py allianceauth.framework.tests.test_datatables -v 2 --debug-mode
|
||||||
core: coverage run runtests.py allianceauth.authentication.tests.test_app_settings -v 2 --debug-mode
|
; core: coverage run runtests.py allianceauth.authentication.tests.test_app_settings -v 2 --debug-mode
|
||||||
all: coverage report -m
|
; all: coverage report -m
|
||||||
all: coverage xml
|
; all: coverage xml
|
||||||
|
|
||||||
[testenv:docs]
|
[testenv:docs]
|
||||||
description = invoke sphinx-build to build the HTML docs
|
description = invoke sphinx-build to build the HTML docs
|
||||||
|
|||||||
Reference in New Issue
Block a user