49 lines
1.4 KiB
Ruby
49 lines
1.4 KiB
Ruby
|
# frozen_string_literal: false
|
||
|
|
||
|
require 'spec_helper'
|
||
|
require 'impressionist/setup_association'
|
||
|
require 'impressionist/rails_toggle'
|
||
|
|
||
|
describe Impressionist::SetupAssociation do
|
||
|
let(:mock) { double }
|
||
|
let(:setup_association) { described_class.new(mock) }
|
||
|
|
||
|
it 'will include when togglable' do
|
||
|
expect(mock).to receive(:attr_accessible).with(any_args).and_return(true)
|
||
|
expect(setup_association).to receive(:toggle).and_return(true)
|
||
|
|
||
|
expect(setup_association).to be_include_attr_acc
|
||
|
end
|
||
|
|
||
|
it 'will not include if it is not togglable' do
|
||
|
expect(setup_association).to receive(:toggle).and_return(false)
|
||
|
expect(setup_association).not_to be_include_attr_acc
|
||
|
end
|
||
|
|
||
|
context 'when using rails >= 5' do
|
||
|
it 'sets belongs_to' do
|
||
|
stub_const('::Rails::VERSION::MAJOR', 5)
|
||
|
|
||
|
expect(mock).to receive(:belongs_to).twice.with(
|
||
|
:impressionable, { polymorphic: true, optional: true }
|
||
|
).and_return(true)
|
||
|
|
||
|
expect(setup_association.define_belongs_to).to be_truthy
|
||
|
expect(setup_association.set).to be_falsy
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when using rails < 5' do
|
||
|
it 'sets belongs_to' do
|
||
|
stub_const('::Rails::VERSION::MAJOR', 4)
|
||
|
|
||
|
expect(mock).to receive(:belongs_to).twice.with(
|
||
|
:impressionable, { polymorphic: true }
|
||
|
).and_return(true)
|
||
|
|
||
|
expect(setup_association.define_belongs_to).to be_truthy
|
||
|
expect(setup_association.set).to be_falsy
|
||
|
end
|
||
|
end
|
||
|
end
|