-
Notifications
You must be signed in to change notification settings - Fork 82
/
fallthrough_accessors_spec.rb
43 lines (38 loc) · 1.48 KB
/
fallthrough_accessors_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
require "spec_helper"
require "mobility/plugins/fallthrough_accessors"
describe Mobility::Plugins::FallthroughAccessors do
describe "when included into a class" do
let(:model_class) do
klass = Class.new do
def title(**_); end
def title?(**_); end
def title=(_value, **_); end
end
klass.include described_class.new(:title)
klass
end
it_behaves_like "locale accessor", :title, :en
it_behaves_like "locale accessor", :title, :de
it_behaves_like "locale accessor", :title, :'pt-BR'
end
describe ".apply" do
let(:attributes) { instance_double(Mobility::Attributes, model_class: model_class, names: ["title"]) }
let(:model_class) { Class.new }
let(:fallthrough_accessors) { instance_double(described_class) }
context "option value is truthy" do
it "includes instance of FallthroughAccessors into attributes class" do
expect(described_class).to receive(:new).twice.with("title").and_return(fallthrough_accessors)
expect(model_class).to receive(:include).twice.with(fallthrough_accessors)
described_class.apply(attributes, true)
described_class.apply(attributes, [])
end
end
context "option value is falsey" do
it "does not include instance of FallthroughAccessors into attributes class" do
expect(model_class).not_to receive(:include)
described_class.apply(attributes, false)
described_class.apply(attributes, nil)
end
end
end
end