Skip to content

Commit

Permalink
move code from test to lib
Browse files Browse the repository at this point in the history
  • Loading branch information
Neeraj Singh committed Jul 1, 2011
1 parent fa4db28 commit a00e6ab
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 28 deletions.
14 changes: 11 additions & 3 deletions lib/admin_data/analytics/hm_association.rb
Expand Up @@ -2,9 +2,17 @@

module AdminData
module Analytics
module HmAssociation
class HmAssociation

def self.count_of_main_klass_records_not_in_hm_klass(main_klass, hm_klass, hm_relationship_name)
attr_accessor :main_klass, :hm_klass, :hm_relationship_name

def initialize(main_klass, hm_klass, hm_relationship_name)
@main_klass = main_klass
@hm_klass = hm_klass
@hm_relationship_name = hm_relationship_name
end

def count_of_main_klass_records_not_in_hm_klass
foreign_key = main_klass.reflections[hm_relationship_name].instance_variable_get('@active_record').name.foreign_key
raise 'foreign_key is nil' unless foreign_key

Expand All @@ -22,7 +30,7 @@ def self.count_of_main_klass_records_not_in_hm_klass(main_klass, hm_klass, hm_re
record['count_data'].to_i
end

def self.count_of_main_klass_records_in_hm_klass(main_klass, hm_klass, hm_relationship_name, count = nil)
def count_of_main_klass_records_in_hm_klass(count = nil)
foreign_key = main_klass.reflections[hm_relationship_name].instance_variable_get('@active_record').name.foreign_key
raise 'foreign_key is nil' unless foreign_key

Expand Down
34 changes: 9 additions & 25 deletions test/rails_root/test/unit/user_phone_test.rb
Expand Up @@ -9,26 +9,6 @@ def setup
end


def count_of_main_klass_records_in_hm_klass(main_klass, hm_klass, hm_relationship_name, count = nil)
foreign_key = main_klass.reflections[hm_relationship_name].instance_variable_get('@active_record').name.foreign_key
raise 'foreign_key is nil' unless foreign_key

having_sql = if count
"having count(#{hm_klass.table_name}.id) = #{count}"
else
"having count(#{hm_klass.table_name}.id) > 0"
end

sql = %Q{
select #{main_klass.table_name}.id, count(#{hm_klass.table_name}.id)
from #{main_klass.table_name} join #{hm_klass.table_name} on #{main_klass.table_name}.id = #{hm_klass.table_name}.#{foreign_key}
group by #{main_klass.table_name}.id
#{having_sql}
}

main_klass.find_by_sql(sql).size
end

def test_pie_chart_for_user_with_1_phone_vs_users_with_2_phones_vs_users_with_0_phone
5.times { Factory(:user) }
Expand All @@ -49,9 +29,11 @@ def test_pie_chart_for_user_with_1_phone_vs_users_with_2_phones_vs_users_with_0_
hm_klass = PhoneNumber
hm_relationship = :phone_numbers

assert_equal 5, AdminData::Analytics::HmAssociation.count_of_main_klass_records_not_in_hm_klass(User, PhoneNumber, :phone_numbers)
assert_equal 4, AdminData::Analytics::HmAssociation.count_of_main_klass_records_in_hm_klass(User, PhoneNumber, :phone_numbers, 1)
assert_equal 2, AdminData::Analytics::HmAssociation.count_of_main_klass_records_in_hm_klass(User, PhoneNumber, :phone_numbers, 2)
hma = AdminData::Analytics::HmAssociation.new(User, PhoneNumber, :phone_numbers)

assert_equal 5, hma.count_of_main_klass_records_not_in_hm_klass
assert_equal 4, hma.count_of_main_klass_records_in_hm_klass(1)
assert_equal 2, hma.count_of_main_klass_records_in_hm_klass(2)
end


Expand All @@ -68,8 +50,10 @@ def test_pie_chart_for_user_with_phones_vs_users_without_phones
hm_klass = PhoneNumber
hm_relationship = :phone_numbers

assert_equal 5, AdminData::Analytics::HmAssociation.count_of_main_klass_records_not_in_hm_klass(User, PhoneNumber, :phone_numbers)
assert_equal 3, AdminData::Analytics::HmAssociation.count_of_main_klass_records_in_hm_klass(User, PhoneNumber, :phone_numbers)
hma = AdminData::Analytics::HmAssociation.new(User, PhoneNumber, :phone_numbers)

assert_equal 5, hma.count_of_main_klass_records_not_in_hm_klass
assert_equal 3, hma.count_of_main_klass_records_in_hm_klass
end


Expand Down

0 comments on commit a00e6ab

Please sign in to comment.