Skip to content

Commit a8ce44d

Browse files
committed
Initial implementation of ValueObjects::ActionView with skeletal implementation of ValueObjects::ActionView::Cocoon.
1 parent 5cbb139 commit a8ce44d

File tree

4 files changed

+46
-0
lines changed

4 files changed

+46
-0
lines changed

lib/value_objects.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
require 'value_objects/value'
55
require 'value_objects/valid_validator'
66
require 'value_objects/active_record'
7+
require 'value_objects/action_view'

lib/value_objects/action_view.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
module ValueObjects
3+
4+
module ActionView
5+
6+
def self.integrate_with(library)
7+
require "value_objects/action_view/#{library}"
8+
end
9+
10+
end
11+
12+
end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
module ValueObjects
3+
4+
module ActionView
5+
6+
module Cocoon
7+
end
8+
9+
end
10+
11+
end
12+
13+
ActionView::Base.send(:include, ValueObjects::ActionView::Cocoon)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
RSpec.describe ValueObjects::ActionView do
2+
3+
it 'never loads unused modules' do
4+
expect(defined?(ValueObjects::ActionView::Cocoon)).to eq(nil)
5+
end
6+
7+
describe '::integrate_with' do
8+
9+
let(:action_view_base) { class_double(ActionView::Base).as_stubbed_const }
10+
11+
it 'integrates with cocoon' do
12+
expect(action_view_base).to receive(:include) do |mod|
13+
expect(mod).to eq(ValueObjects::ActionView::Cocoon)
14+
end.once
15+
expect(subject.integrate_with(:cocoon)).to eq(true)
16+
end
17+
18+
end
19+
20+
end

0 commit comments

Comments
 (0)