Skip to content

Commit

Permalink
Refactoring and spec test
Browse files Browse the repository at this point in the history
  • Loading branch information
bmclaughlin committed Sep 20, 2019
1 parent aaf3b54 commit ae8da7f
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 5 deletions.
9 changes: 4 additions & 5 deletions app/services/ems_dashboard_service.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
class EmsDashboardService < DashboardService
attr_reader :ems
include Mixins::CheckedIdMixin

def initialize(ems_id, controller, klass)
Expand Down Expand Up @@ -60,17 +61,15 @@ def recent_records(model)
end

def format_data(resource, attributes, attr_icon, attr_url, attr_hsh)
attr_data = []
attributes.each do |attr|
attr_data.push(
attributes.reject { |a| @ems.send(a).nil? }.map do |attr|
{
:id => "#{attr_hsh[attr]}_#{@ems_id}",
:iconClass => attr_icon[attr],
:title => attr_hsh[attr],
:count => @ems.send(attr).count,
:href => get_url(resource, @ems_id, attr_url[attr]),
) unless @ems.send(attr).nil?
}
end
attr_data
end

def status_data
Expand Down
64 changes: 64 additions & 0 deletions spec/services/ems_dashboard_service_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
describe EmsDashboardService do
let(:ems1) { FactoryBot.create(:ems_openstack) }

context '#format_data' do
let(:resource) { 'ems_cloud' }
let(:attributes) do
[
:flavors,
:cloud_tenants,
:miq_templates,
:vms,
:availability_zones,
:security_groups,
:cloud_networks,
:cloud_volumes
]
end
let(:attr_icon) do
{
:flavors => "pficon pficon-flavor",
:cloud_tenants => "pficon pficon-cloud-tenant",
:miq_templates => "fa fa-database",
:vms => "pficon pficon-virtual-machine",
:availability_zones => "pficon pficon-zone",
:security_groups => "pficon pficon-cloud-security",
:cloud_networks => "pficon pficon-network",
:cloud_volumes => "pficon pficon-volume"
}
end
let(:attr_url) do
{
:flavors => "flavors",
:cloud_tenants => "cloud_tenants",
:miq_templates => "images",
:vms => "instances",
:availability_zones => "availability_zones",
:security_groups => "security_groups",
:cloud_networks => "cloud_networks",
:cloud_volumes => "cloud_volumes"
}
end
let(:attr_hsh) do
{
:flavors => "Flavors",
:cloud_tenants => "Cloud Tenants",
:miq_templates => "Images",
:vms => "Instances",
:availability_zones => "Availability Zones",
:security_groups => "Security Groups",
:cloud_networks => "Cloud Networks",
:cloud_volumes => "Cloud Volumes"
}
end

subject { EmsDashboardService.new(ems1.id, "ems_cloud", EmsCloud) }

it 'returns non-nil attributes' do
allow(subject.ems).to receive(:cloud_networks).and_return(nil)
data = subject.format_data(resource, attributes, attr_icon, attr_url, attr_hsh)
expect(data.length).to eq(7)
data.each { |d| expect(d[:id]).to_not be("Cloud Networks_#{subject.ems.id}") }
end
end
end

0 comments on commit ae8da7f

Please sign in to comment.