Sha256: 90b45b383e8bd9e3c7d54726d73b7187a3521936a97527f8186072100cc1ed8e

Contents?: true

Size: 1.98 KB

Versions: 19

Compression:

Stored size: 1.98 KB

Contents

require 'test_helper'

describe Merit::BaseTargetFinder do
  describe '#find' do
    describe 'rule has a model_name' do
      it "should prioritize the rule's model name" do
        rule = Merit::Rule.new
        rule.to = :itself
        rule.model_name = 'comment'
        action = Merit::Action.new(target_model: 'users', target_id: 2)
        comment = Comment.new

        Comment.stubs(:find_by_id).with(2).returns(comment)

        finder = Merit::BaseTargetFinder.new(rule, action)
        collection = finder.find
        _(collection).must_be :==, comment
      end
    end

    describe 'rule has no model_name' do
      it 'should fall back to the action#target_model' do
        rule = Merit::Rule.new
        rule.to = :itself
        action = Merit::Action.new(target_model: 'users', target_id: 3)
        user = User.new(id: 3)

        User.stubs(:find_by_id).with(3).returns(user)

        finder = Merit::BaseTargetFinder.new(rule, action)
        _(finder.find).must_be :==, user
      end
    end

    describe 'when the targeted class is not meritable' do
      it 'should warn and return' do
        rule = Merit::Rule.new
        rule.to = :itself
        rule.model_name = 'registrations'
        action = Merit::Action.new(target_model: 'users', target_id: 220)

        finder = Merit::BaseTargetFinder.new(rule, action)
        Rails.logger.expects(:warn)
        _(finder.find).must_be_nil
      end
    end

    describe 'target was destroyed' do
      it 'gets the object from the JSON data in the merit_actions table' do
        comment = Comment.new(name: 'the comment name')

        rule = Merit::Rule.new
        rule.to = :itself
        rule.model_name = 'comment'
        action = Merit::Action.new(target_model: 'comment',
                                   target_id: 2,
                                   target_data: comment.to_yaml)

        finder = Merit::BaseTargetFinder.new(rule, action)
        _(finder.find.name).must_be :==, 'the comment name'
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
merit-4.0.3 test/unit/base_target_finder_test.rb
qalam_merit-4.5.12 test/unit/base_target_finder_test.rb
merit-4.0.2 test/unit/base_target_finder_test.rb
qalam_merit-4.5.11 test/unit/base_target_finder_test.rb
qalam_merit-4.5.10 test/unit/base_target_finder_test.rb
qalam_merit-4.5.09 test/unit/base_target_finder_test.rb
qalam_merit-4.5.08 test/unit/base_target_finder_test.rb
qalam_merit-4.5.07 test/unit/base_target_finder_test.rb
qalam_merit-4.5.06 test/unit/base_target_finder_test.rb
qalam_merit-4.5.05 test/unit/base_target_finder_test.rb
qalam_merit-4.5.04 test/unit/base_target_finder_test.rb
qalam_merit-4.5.03 test/unit/base_target_finder_test.rb
qalam_merit-4.5.02 test/unit/base_target_finder_test.rb
qalam_merit-4.5.01 test/unit/base_target_finder_test.rb
qalam_merit-4.5.00 test/unit/base_target_finder_test.rb
qalam_merit-4.0.4 test/unit/base_target_finder_test.rb
qalam_merit-4.0.35 test/unit/base_target_finder_test.rb
merit-4.0.1 test/unit/base_target_finder_test.rb
merit-4.0.0 test/unit/base_target_finder_test.rb