test: admin.filters
This commit is contained in:
		
							
								
								
									
										62
									
								
								aircox/tests/admin/test_filters.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								aircox/tests/admin/test_filters.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,62 @@
 | 
			
		||||
from datetime import date, timedelta
 | 
			
		||||
 | 
			
		||||
from django.contrib.admin import filters as d_filters
 | 
			
		||||
from django.utils.translation import gettext_lazy as _
 | 
			
		||||
import pytest
 | 
			
		||||
 | 
			
		||||
from ..conftest import req_factory
 | 
			
		||||
from aircox import models
 | 
			
		||||
from aircox.admin import filters
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FakeFilter(d_filters.FieldListFilter):
 | 
			
		||||
    def __init__(self, field, request, params, model, model_admin, field_path):
 | 
			
		||||
        self.field = field
 | 
			
		||||
        self.request = request
 | 
			
		||||
        self.params = params
 | 
			
		||||
        self.model = model
 | 
			
		||||
        self.model_admin = model_admin
 | 
			
		||||
        self.field_path = field_path
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class DateFieldFilter(filters.DateFieldFilter, FakeFilter):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
today = date.today()
 | 
			
		||||
tomorrow = date.today() + timedelta(days=1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def req():
 | 
			
		||||
    return req_factory.get("/test", {"pub_date__gte": today})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def date_filter(req):
 | 
			
		||||
    return DateFieldFilter(
 | 
			
		||||
        models.Page._meta.get_field("pub_date"),
 | 
			
		||||
        req,
 | 
			
		||||
        {"pub_date__lte": tomorrow, "other_param": 13},
 | 
			
		||||
        models.Page,
 | 
			
		||||
        None,
 | 
			
		||||
        "pub_date",
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestDateFieldFilter:
 | 
			
		||||
    def test___init__(self, date_filter):
 | 
			
		||||
        assert date_filter.date_params == {"pub_date__lte": tomorrow}
 | 
			
		||||
 | 
			
		||||
        date_filter.links = [
 | 
			
		||||
            (str(link[0]), *list(link[1:])) for link in date_filter.links
 | 
			
		||||
        ]
 | 
			
		||||
        assert date_filter.links == [
 | 
			
		||||
            (str(_("None")), "pub_date__isnull", None, "1"),
 | 
			
		||||
            (str(_("Exact")), "pub_date__date", date_filter.input_type),
 | 
			
		||||
            (str(_("Since")), "pub_date__gte", date_filter.input_type),
 | 
			
		||||
            (str(_("Until")), "pub_date__lte", date_filter.input_type),
 | 
			
		||||
        ]
 | 
			
		||||
        assert date_filter.query_attrs == {
 | 
			
		||||
            "pub_date__gte": today.strftime("%Y-%m-%d")
 | 
			
		||||
        }
 | 
			
		||||
		Reference in New Issue
	
	Block a user