django/tests/db_functions/window/test_validation.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

40 lines
1.5 KiB
Python
Raw Normal View History

from django.db.models.functions import Lag, Lead, NthValue, Ntile
from django.test import SimpleTestCase
class ValidationTests(SimpleTestCase):
def test_nth_negative_nth_value(self):
msg = "NthValue requires a positive integer as for nth"
with self.assertRaisesMessage(ValueError, msg):
NthValue(expression="salary", nth=-1)
def test_nth_null_expression(self):
msg = "NthValue requires a non-null source expression"
with self.assertRaisesMessage(ValueError, msg):
NthValue(expression=None)
def test_lag_negative_offset(self):
msg = "Lag requires a positive integer for the offset"
with self.assertRaisesMessage(ValueError, msg):
Lag(expression="salary", offset=-1)
def test_lead_negative_offset(self):
msg = "Lead requires a positive integer for the offset"
with self.assertRaisesMessage(ValueError, msg):
Lead(expression="salary", offset=-1)
def test_null_source_lead(self):
msg = "Lead requires a non-null source expression"
with self.assertRaisesMessage(ValueError, msg):
Lead(expression=None)
def test_null_source_lag(self):
msg = "Lag requires a non-null source expression"
with self.assertRaisesMessage(ValueError, msg):
Lag(expression=None)
def test_negative_num_buckets_ntile(self):
msg = "num_buckets must be greater than 0"
with self.assertRaisesMessage(ValueError, msg):
Ntile(num_buckets=-1)