code_uniqueness_validator_spec.rb 1.09 KB
require 'spec_helper'

describe CodeUniquenessValidator do
  describe 'methods' do
    describe 'validate_each' do
      context 'without saved metric_configurations' do
        before :each do
          MetricConfiguration.expects(:metric_configurations_of).returns([])
          MetricConfiguration.expects(:request).returns(42)
        end

        subject { FactoryGirl.build(:metric_configuration) }
        it 'should contain no errors' do
          subject.save
          subject.errors.should be_empty
        end
      end

      context 'with code already taken by another metric_configuration' do
        before :each do
          @subject = FactoryGirl.build(:metric_configuration)
          MetricConfiguration.expects(:metric_configurations_of).with(@subject.configuration_id).returns([FactoryGirl.build(:metric_configuration, id: @subject.id + 1)])
        end

        it 'should contain errors' do
          @subject.save
          @subject.errors[:code].should eq(["There's already a MetricConfiguration with code #{@subject.code}! Please, choose another one."])
        end
      end
    end
  end
end