From d5b026a003056e4a126d0da49fc568c380b471ce Mon Sep 17 00:00:00 2001 From: JoseLuis Torres Date: Wed, 11 Sep 2013 15:10:28 -0500 Subject: [PATCH] adding separated test for rules and validator #1 --- lib/rank_results/rule.rb | 3 ++- test/{test_classes => classes}/video.rb | 0 test/rank_results_test.rb | 12 +++++++++-- test/rules_test/rule_test.rb | 28 +++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 3 deletions(-) rename test/{test_classes => classes}/video.rb (100%) create mode 100644 test/rules_test/rule_test.rb diff --git a/lib/rank_results/rule.rb b/lib/rank_results/rule.rb index f1321c4..e29b506 100644 --- a/lib/rank_results/rule.rb +++ b/lib/rank_results/rule.rb @@ -2,11 +2,12 @@ module RankResults class Rule def initialize(object) + raise 'Add a not nil object' if object.nil? @object = object end def apply - raise "You must implement apply method" + raise 'You must implement apply method' end end diff --git a/test/test_classes/video.rb b/test/classes/video.rb similarity index 100% rename from test/test_classes/video.rb rename to test/classes/video.rb diff --git a/test/rank_results_test.rb b/test/rank_results_test.rb index a700acf..9652ab3 100644 --- a/test/rank_results_test.rb +++ b/test/rank_results_test.rb @@ -1,6 +1,6 @@ require 'helper' Dir["test/rules/*.rb"].each {|file| require './' + file } -Dir["test/test_classes/*.rb"].each {|file| require './' + file } +Dir["test/classes/*.rb"].each {|file| require './' + file } describe RankResults::Valuator do before do @@ -13,7 +13,15 @@ @valuator.add_rule instructor_followed_rule end - it "testing first rule" do + it "should return a LikeRule instance" do + @valuator.rules[0].must_be_instance_of LikesRule + end + + it "should return a InstructorsFollowedRule instance" do + @valuator.rules[1].must_be_instance_of InstructorsFollowedRule + end + + it "testing rank results" do @valuator.rank.must_equal 1020 end diff --git a/test/rules_test/rule_test.rb b/test/rules_test/rule_test.rb new file mode 100644 index 0000000..b8ba982 --- /dev/null +++ b/test/rules_test/rule_test.rb @@ -0,0 +1,28 @@ +require 'helper' + +class ExampleBrokenRule < RankResults::Rule +end + +class ExampleRule < RankResults::Rule + def apply + @object.tickets_sold * 10 + end +end + +describe RankResults::Rule do + before do + @videos = [Video.new(tickets_sold: 2, likes: 3, user_id: 1), Video.new(tickets_sold: 4, likes: 1, user_id: 5)] + end + + it "should raise an exception if apply is not defined" do + proc {ExampleBrokenRule.new(@videos[0]).apply}.must_raise RuntimeError + end + + it "should return the value for the given rule" do + ExampleRule.new(@videos[0]).apply.must_equal 20 + end + + it "should do something with nil object" do + proc {ExampleRule.new(nil)}.must_raise RuntimeError + end +end