Skip to content

Commit

Permalink
[bugfix/aggregate_test] - Bugfix feature - Add More Aggregate Test fo…
Browse files Browse the repository at this point in the history
…r bool
  • Loading branch information
tt88dev committed Jan 3, 2024
1 parent ea78e1b commit 9dbcdc9
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions drift/test/database/expressions/aggregate_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ void main() {
const foo = CustomExpression<int>('foo', precedence: Precedence.primary);
const b1 = CustomExpression<BigInt>('b1', precedence: Precedence.primary);
const s1 = CustomExpression<String>('s1', precedence: Precedence.primary);
const p1 = CustomExpression<bool>('p1', precedence: Precedence.primary);

group('count', () {
test('all', () {
Expand All @@ -26,18 +27,24 @@ void main() {
countAll(filter: s1.equals('STRING_VALUE')),
generates('COUNT(*) FILTER (WHERE s1 = ?)', ['STRING_VALUE']),
);
expect(
countAll(filter: p1.equals(true)),
generates('COUNT(*) FILTER (WHERE p1 = ?)', [1]),
);
});

test('single', () {
expect(foo.count(), generates('COUNT(foo)'));
expect(b1.count(), generates('COUNT(b1)'));
expect(s1.count(), generates('COUNT(s1)'));
expect(p1.count(), generates('COUNT(p1)'));
});

test('single - distinct', () {
expect(foo.count(distinct: true), generates('COUNT(DISTINCT foo)'));
expect(b1.count(distinct: true), generates('COUNT(DISTINCT b1)'));
expect(s1.count(distinct: true), generates('COUNT(DISTINCT s1)'));
expect(p1.count(distinct: true), generates('COUNT(DISTINCT p1)'));
});

test('single - filter', () {
Expand All @@ -53,6 +60,10 @@ void main() {
s1.count(filter: s1.equals('STRING_VALUE')),
generates('COUNT(s1) FILTER (WHERE s1 = ?)', ['STRING_VALUE']),
);
expect(
p1.count(filter: p1.equals(true)),
generates('COUNT(p1) FILTER (WHERE p1 = ?)', [1]),
);
});

test('single - distinct and filter', () {
Expand All @@ -70,6 +81,10 @@ void main() {
s1.count(distinct: true, filter: s1.equals('STRING_VALUE')),
generates('COUNT(DISTINCT s1) FILTER (WHERE s1 = ?)', ['STRING_VALUE']),
);
expect(
p1.count(distinct: true, filter: p1.equals(true)),
generates('COUNT(DISTINCT p1) FILTER (WHERE p1 = ?)', [1]),
);
});
});

Expand All @@ -87,12 +102,14 @@ void main() {
expect(foo.max(), generates('MAX(foo)'));
expect(b1.max(), generates('MAX(b1)'));
expect(s1.max(), generates('MAX(s1)'));
expect(p1.max(), generates('MAX(p1)'));
});

test('min', () {
expect(foo.min(), generates('MIN(foo)'));
expect(b1.min(), generates('MIN(b1)'));
expect(s1.min(), generates('MIN(s1)'));
expect(p1.min(), generates('MIN(p1)'));
});

test('sum', () {
Expand All @@ -110,10 +127,12 @@ void main() {
expect(foo.groupConcat(), generates('GROUP_CONCAT(foo)'));
expect(b1.groupConcat(), generates('GROUP_CONCAT(b1)'));
expect(s1.groupConcat(), generates('GROUP_CONCAT(s1)'));
expect(p1.groupConcat(), generates('GROUP_CONCAT(p1)'));

expect(foo.groupConcat(separator: ','), generates('GROUP_CONCAT(foo)'));
expect(b1.groupConcat(separator: ','), generates('GROUP_CONCAT(b1)'));
expect(s1.groupConcat(separator: ','), generates('GROUP_CONCAT(s1)'));
expect(p1.groupConcat(separator: ','), generates('GROUP_CONCAT(p1)'));
});

test('with a custom separator', () {
Expand All @@ -123,6 +142,8 @@ void main() {
generates('GROUP_CONCAT(b1, ?)', [' and ']));
expect(s1.groupConcat(separator: ' and '),
generates('GROUP_CONCAT(s1, ?)', [' and ']));
expect(p1.groupConcat(separator: ' and '),
generates('GROUP_CONCAT(p1, ?)', [' and ']));
});

test('with a filter', () {
Expand All @@ -136,6 +157,8 @@ void main() {
s1.groupConcat(filter: s1.isSmallerThan(Variable('STRING_VALUE'))),
generates(
'GROUP_CONCAT(s1) FILTER (WHERE s1 < ?)', ['STRING_VALUE']));
expect(p1.groupConcat(filter: p1.equals(true)),
generates('GROUP_CONCAT(p1) FILTER (WHERE p1 = ?)', [1]));
});

test('with distinct', () {
Expand All @@ -145,6 +168,8 @@ void main() {
generates('GROUP_CONCAT(DISTINCT b1)', isEmpty));
expect(s1.groupConcat(distinct: true),
generates('GROUP_CONCAT(DISTINCT s1)', isEmpty));
expect(p1.groupConcat(distinct: true),
generates('GROUP_CONCAT(DISTINCT p1)', isEmpty));

expect(
foo.groupConcat(
Expand Down Expand Up @@ -176,6 +201,16 @@ void main() {
['STRING_VALUE'],
),
);
expect(
p1.groupConcat(
distinct: true,
filter: p1.equals(true),
),
generates(
'GROUP_CONCAT(DISTINCT p1) FILTER (WHERE p1 = ?)',
[1],
),
);
});

test('does not allow distinct with a custom separator', () {
Expand All @@ -185,6 +220,8 @@ void main() {
throwsArgumentError);
expect(() => s1.groupConcat(distinct: true, separator: ' and '),
throwsArgumentError);
expect(() => p1.groupConcat(distinct: true, separator: ' and '),
throwsArgumentError);

expect(
() => foo.groupConcat(
Expand All @@ -210,6 +247,14 @@ void main() {
),
throwsArgumentError,
);
expect(
() => p1.groupConcat(
distinct: true,
separator: ' and ',
filter: p1.equals(true),
),
throwsArgumentError,
);
});
});
}

0 comments on commit 9dbcdc9

Please sign in to comment.