Skip to content

Commit

Permalink
Merge pull request #839 from cfcosta/mw-os-disable-cmds2-refactor
Browse files Browse the repository at this point in the history
Refactor MiddlewareServerAction#visible?
(cherry picked from commit 00983f5)
  • Loading branch information
Martin Povolny authored and simaishi committed Apr 13, 2017
1 parent 7800de6 commit e19432a
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 113 deletions.
@@ -1,12 +1,5 @@
class ApplicationHelper::Button::MiddlewareDomainServerAction < ApplicationHelper::Button::MiddlewareServerAction

def visible?
in_domain? && super
end

private

def in_domain?
@record.present? && (@record.try(:in_domain?) || @record.try(:middleware_server).try(:in_domain?))
@record.try(:in_domain?)
end
end
@@ -1,18 +1,5 @@
class ApplicationHelper::Button::MiddlewareServerAction < ApplicationHelper::Button::Basic

def visible?
@record.present? && !hawkular? && !immutable?
end

private

def immutable?
properties = @record.try(:properties)
properties.nil? ? false : properties['Immutable'] == 'true'
end

def hawkular?
@record.try(:product) == 'Hawkular' ||
@record.try(:middleware_server).try(:product) == 'Hawkular'
@record.try(:mutable?)
end
end
@@ -1,12 +1,5 @@
class ApplicationHelper::Button::MiddlewareStandaloneServerAction < ApplicationHelper::Button::MiddlewareServerAction

def visible?
!in_domain? && super
end

private

def in_domain?
@record.present? && (@record.try(:in_domain?) || @record.try(:middleware_server).try(:in_domain?))
!@record.try(:in_domain?) && super
end
end
37 changes: 14 additions & 23 deletions spec/helpers/application_helper/buttons/middleware_action_spec.rb
@@ -1,30 +1,21 @@
describe ApplicationHelper::Button::MiddlewareServerAction do
subject { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }
let(:record) { double("MiddlewareServer") }
subject(:action) { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }

describe '#visible?' do
let(:record) { FactoryGirl.create(middleware, :product => product) }
context 'when record respond_to?(:product)' do
let(:middleware) { :middleware_server }
context 'and product is Hawkular' do
let(:product) { 'Hawkular' }
it { expect(subject.visible?).to be_falsey }
end
context 'and product is not Hawkular' do
let(:product) { nil }
it { expect(subject.visible?).to be_truthy }
end
it 'is true if record is mutable' do
allow(record).to receive(:mutable?) { true }
expect(action).to be_visible
end
context 'when record does not respond_to?(:product)' do
let(:record) { FactoryGirl.create(:middleware_datasource, :middleware_server => server) }
let(:server) { FactoryGirl.create(:middleware_server, :product => product) }
context 'and its middleware server returns Hawkular' do
let(:product) { 'Hawkular' }
it { expect(subject.visible?).to be_falsey }
end
context 'and its middleware server does not return Hawkular' do
let(:product) { nil }
it { expect(subject.visible?).to be_truthy }
end

it 'is false if record is immutable' do
allow(record).to receive(:mutable?) { false }
expect(action).not_to be_visible
end

it 'is false if record is nil' do
action = described_class.new(setup_view_context_with_sandbox({}), {}, {}, {})
expect(action).not_to be_visible
end
end
end
@@ -1,29 +1,23 @@
describe ApplicationHelper::Button::MiddlewareDomainServerAction do
let(:server) { FactoryGirl.create(:middleware_server, :middleware_server_group => group) }
subject { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }
let(:record) { double("MiddlewareServer") }
subject(:action) { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }

describe '#visible?' do
context 'when record responds to #in_domain?' do
let(:record) { server }
context 'when server.in_domain? == true' do
let(:group) { FactoryGirl.create(:middleware_server_group) }
it { expect(subject.visible?).to be_truthy }
end
context 'when server.in_domain? == false' do
let(:group) { nil }
it { expect(subject.visible?).to be_falsey }
end
it 'is true if server is in domain' do
allow(record).to receive(:in_domain?) { true }

expect(action).to be_visible
end
context 'when record does not respond to #in_domain?' do
let(:record) { FactoryGirl.create(:middleware_deployment, :middleware_server => server) }
context 'when server.in_domain? == true' do
let(:group) { FactoryGirl.create(:middleware_server_group) }
it { expect(subject.visible?).to be_truthy }
end
context 'when server.in_domain? == false' do
let(:group) { nil }
it { expect(subject.visible?).to be_falsey }
end

it 'is false if server is not in domain' do
allow(record).to receive(:in_domain?) { false }

expect(action).not_to be_visible
end

it 'is false if record is nil' do
action = described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {})
expect(action).not_to be_visible
end
end
end
@@ -1,50 +1,31 @@
describe ApplicationHelper::Button::MiddlewareStandaloneServerAction do
let(:server) { FactoryGirl.create(:middleware_server, :middleware_server_group => group) }
subject { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }
let(:record) { double("MiddlewareServer") }
subject(:action) { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }

describe '#visible?' do
context 'when record responds to #in_domain?' do
let(:record) { server }
context 'when server.in_domain? == true' do
let(:group) { FactoryGirl.create(:middleware_server_group) }
it { expect(subject.visible?).to be_falsey }
end
context 'when server.in_domain? == false' do
let(:group) { nil }
it { expect(subject.visible?).to be_truthy }
end
it 'is true if record it not in domain and is mutable' do
allow(record).to receive(:in_domain?) { false }
allow(record).to receive(:mutable?) { true }

expect(action).to be_visible
end

context 'when record responds to #immutable?' do
def create_immutable(value)
{'Immutable' => value.to_s }
end
it 'is false if record is in domain' do
allow(record).to receive(:in_domain?) { true }

expect(action).not_to be_visible
end

context 'when server.properties.immutable? == true' do
let(:immutable_server) { FactoryGirl.create(:middleware_server, :properties => create_immutable(true)) }
let(:record) { immutable_server }
subject { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }
it { expect(subject).not_to be_visible }
end
it 'is false if record is not in domain but it is immutable' do
allow(record).to receive(:in_domain?) { false }
allow(record).to receive(:mutable?) { false }

context 'when server.properties.immutable? == false' do
let(:mutable_server) { FactoryGirl.create(:middleware_server, :properties => create_immutable(false)) }
let(:record) { mutable_server }
subject { described_class.new(setup_view_context_with_sandbox({}), {}, {'record' => record}, {}) }
it { expect(subject).to be_visible }
end
expect(action).not_to be_visible
end

context 'when record does not respond to #in_domain?' do
let(:record) { FactoryGirl.create(:middleware_deployment, :middleware_server => server) }
context 'when server.in_domain? == true' do
let(:group) { FactoryGirl.create(:middleware_server_group) }
it { expect(subject.visible?).to be_falsey }
end
context 'when server.in_domain? == false' do
let(:group) { nil }
it { expect(subject.visible?).to be_truthy }
end
it 'is false if record is nil' do
action = described_class.new(setup_view_context_with_sandbox({}), {}, {}, {})
expect(action).not_to be_visible
end
end
end

0 comments on commit e19432a

Please sign in to comment.