def test_if_false_default_None(self): Alphabet.objects.create(a=1) result = list( Alphabet.objects.annotate(conditional=If(Q(a=2), Value(1))).filter( conditional__isnull=True).values_list("conditional", flat=True)) assert result == [None]
def test_if_with_string_values(self): Alphabet.objects.create(a=1, d='Lentils') Alphabet.objects.create(a=2, d='Cabbage') Alphabet.objects.create(a=3, d='Rice') result = list(Alphabet.objects.annotate( conditional=If(Q(a=2), Upper('d'), Lower('d')), ).order_by('id').values_list('conditional', flat=True)) assert result == ['lentils', 'CABBAGE', 'rice']
def test_if_with_Q(self): Alphabet.objects.create(a=12, b=17) Alphabet.objects.create(a=13, b=17) Alphabet.objects.create(a=14, b=17) result = list(Alphabet.objects.annotate( conditional=If(Q(a__lte=13), 'a', 'b'), ).order_by('id').values_list('conditional', flat=True)) assert result == [12, 13, 17]
def test_if_basic(self): Alphabet.objects.create(d='String') Alphabet.objects.create(d='') Alphabet.objects.create(d='String') Alphabet.objects.create(d='') results = list(Alphabet.objects.annotate( has_d=If(Length('d'), Value(True), Value(False)), ).order_by('id').values_list('has_d', flat=True)) assert results == [True, False, True, False]
def test_if_with_string_values(self): Alphabet.objects.create(a=1, d="Lentils") Alphabet.objects.create(a=2, d="Cabbage") Alphabet.objects.create(a=3, d="Rice") result = list( Alphabet.objects.annotate(conditional=If(Q( a=2), Upper("d"), Lower("d"))).order_by("id").values_list( "conditional", flat=True)) assert result == ["lentils", "CABBAGE", "rice"]
def test_if_with_Q(self): Alphabet.objects.create(a=12, b=17) Alphabet.objects.create(a=13, b=17) Alphabet.objects.create(a=14, b=17) result = list( Alphabet.objects.annotate(conditional=If(Q( a__lte=13), "a", "b")).order_by("id").values_list( "conditional", flat=True)) assert result == [12, 13, 17]
def test_if_field_lookups_work(self): Alphabet.objects.create(a=1, d='Lentils') Alphabet.objects.create(a=2, d='Cabbage') Alphabet.objects.create(a=3, d='Rice') result = list(Alphabet.objects.annotate( conditional=If(Q(a__gte=2), Upper('d'), Value('')), ).filter( conditional__startswith='C', ).order_by('id').values_list('conditional', flat=True)) assert result == ['CABBAGE']
def test_if_basic(self): Alphabet.objects.create(d="String") Alphabet.objects.create(d="") Alphabet.objects.create(d="String") Alphabet.objects.create(d="") results = list( Alphabet.objects.annotate(has_d=If(Length("d"), Value( True), Value(False))).order_by("id").values_list("has_d", flat=True)) assert results == [True, False, True, False]
def test_if_field_lookups_work(self): Alphabet.objects.create(a=1, d="Lentils") Alphabet.objects.create(a=2, d="Cabbage") Alphabet.objects.create(a=3, d="Rice") result = list( Alphabet.objects.annotate(conditional=If(Q( a__gte=2), Upper("d"), Value(""))).filter( conditional__startswith="C").order_by("id").values_list( "conditional", flat=True)) assert result == ["CABBAGE"]
def test_if_output_field(self): Alphabet.objects.create(a=0, d="Aaa") Alphabet.objects.create(a=1, d="Bb") Alphabet.objects.create(a=2, d="Ccc") results = list( Alphabet.objects.annotate(d_length=If( "a", Length("d"), Value(0), output_field=IntegerField(), )).order_by("id").values_list("d_length", flat=True)) assert results == [0, 2, 3]