Sha256: 174d050b55d969c4116f0459f9c7cf22a08d09d3f1d81dc6c15454f44e1c51f3

Contents?: true

Size: 1.38 KB

Versions: 32

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module BetterRecord
  module Rspec
    module Extensions
      def required_column(factory_name, column_name, unique = false, in_app_only = false, &blk)
        describe column_name.to_s do
          let(:record) { build(factory_name) }

          it "is required" do
            record.__send__"#{column_name}=", nil
            expect(record.valid?).to be false
            expect(record.errors[column_name]).to include("can't be blank")
            unless in_app_only
              expect { record.save(validate: false) }.to raise_error(ActiveRecord::NotNullViolation)
            end
          end

          if unique
            it "must be unique" do
              expect(record.valid?).to be true
              expect(record.save).to be true

              dupped = nil

              begin
                dupped = record.dup(true)
              rescue ArgumentError
                dupped = record.dup
              end

              expect(dupped.valid?).to be false
              expect(dupped.errors[column_name]).to include("has already been taken")
              expect(dupped.save).to be false

              record.destroy
              expect(dupped.valid?).to be true
              expect(dupped.save).to be true
              dupped.destroy
            end
          end

          instance_eval(&blk) if block_given?
        end
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
better_record-0.16.1 lib/better_record/rspec/extensions/required_column.rb
better_record-0.16.0 lib/better_record/rspec/extensions/required_column.rb
better_record-0.15.2 lib/better_record/rspec/extensions/required_column.rb
better_record-0.15.1 lib/better_record/rspec/extensions/required_column.rb
better_record-0.15.0 lib/better_record/rspec/extensions/required_column.rb
better_record-0.14.6 lib/better_record/rspec/extensions/required_column.rb
better_record-0.14.5 lib/better_record/rspec/extensions/required_column.rb
better_record-0.14.4 lib/better_record/rspec/extensions/required_column.rb
better_record-0.14.3 lib/better_record/rspec/extensions/required_column.rb
better_record-0.14.2 lib/better_record/rspec/extensions/required_column.rb
better_record-0.14.1 lib/better_record/rspec/extensions/required_column.rb
better_record-0.14.0 lib/better_record/rspec/extensions/required_column.rb
better_record-0.13.1 lib/better_record/rspec/extensions/required_column.rb
better_record-0.13.0 lib/better_record/rspec/extensions/required_column.rb
better_record-0.12.5 lib/better_record/rspec/extensions/required_column.rb
better_record-0.12.4 lib/better_record/rspec/extensions/required_column.rb
better_record-0.12.3 lib/better_record/rspec/extensions/required_column.rb
better_record-0.12.2 lib/better_record/rspec/extensions/required_column.rb
better_record-0.12.1 lib/better_record/rspec/extensions/required_column.rb
better_record-0.11.5 lib/better_record/rspec/extensions/required_column.rb