Commit 407b928a5cde9451d7009e006309feaaa8730b15
1 parent
03304903
Exists in
master
Not fail when the target model is not an active record
Showing
2 changed files
with
10 additions
and
1 deletions
Show diff stats
lib/merit/point_rules.rb
| ... | ... | @@ -178,7 +178,7 @@ module Merit |
| 178 | 178 | target_url = AVAILABLE_RULES[rule_name.to_sym][:target_url] |
| 179 | 179 | return nil if target_url.blank? || point.action.blank? |
| 180 | 180 | |
| 181 | - model = BaseTargetFinder.new(Merit::Rule.new, point.action).get_target_from_database | |
| 181 | + model = BaseTargetFinder.new(Merit::Rule.new, point.action).get_target_from_database rescue nil | |
| 182 | 182 | model.present? ? target_url.call(model) : nil |
| 183 | 183 | end |
| 184 | 184 | ... | ... |
test/unit/point_rules_test.rb
| ... | ... | @@ -36,4 +36,13 @@ class PointRulesTest < ActiveSupport::TestCase |
| 36 | 36 | assert_equal comment.url, url |
| 37 | 37 | end |
| 38 | 38 | |
| 39 | + should 'do not fail when return target url for a point without a related model' do | |
| 40 | + person = create_user('testuser').person | |
| 41 | + create_point_rule_definition('article_author') | |
| 42 | + article = create(TextArticle, :profile_id => person.id, :author => person) | |
| 43 | + point = person.score_points.last | |
| 44 | + point.action.stubs(:target_model).returns('Hash') | |
| 45 | + Merit::PointRules.target_url(point) | |
| 46 | + end | |
| 47 | + | |
| 39 | 48 | end | ... | ... |