aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/arel/nodes/count_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/test/cases/arel/nodes/count_test.rb')
-rw-r--r--activerecord/test/cases/arel/nodes/count_test.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/activerecord/test/cases/arel/nodes/count_test.rb b/activerecord/test/cases/arel/nodes/count_test.rb
new file mode 100644
index 0000000000..28d8481993
--- /dev/null
+++ b/activerecord/test/cases/arel/nodes/count_test.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+require_relative '../helper'
+
+class Arel::Nodes::CountTest < Arel::Spec
+ describe "as" do
+ it 'should alias the count' do
+ table = Arel::Table.new :users
+ table[:id].count.as('foo').to_sql.must_be_like %{
+ COUNT("users"."id") AS foo
+ }
+ end
+ end
+
+ describe "eq" do
+ it "should compare the count" do
+ table = Arel::Table.new :users
+ table[:id].count.eq(2).to_sql.must_be_like %{
+ COUNT("users"."id") = 2
+ }
+ end
+ end
+
+ describe 'equality' do
+ it 'is equal with equal ivars' do
+ array = [Arel::Nodes::Count.new('foo'), Arel::Nodes::Count.new('foo')]
+ assert_equal 1, array.uniq.size
+ end
+
+ it 'is not equal with different ivars' do
+ array = [Arel::Nodes::Count.new('foo'), Arel::Nodes::Count.new('foo!')]
+ assert_equal 2, array.uniq.size
+ end
+ end
+
+ describe 'math' do
+ it 'allows mathematical functions' do
+ table = Arel::Table.new :users
+ (table[:id].count + 1).to_sql.must_be_like %{
+ (COUNT("users"."id") + 1)
+ }
+ end
+ end
+end