Sha256: 33b0676cbc9e0d453bda763b6ca4f9f53fc37481a3c8798219a342fdd6c511c2

Contents?: true

Size: 1.46 KB

Versions: 13

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

module Awspec::Generator
  module Spec
    class Ebs
      include Awspec::Helper::Finder
      def generate_all
        volumes = select_all_attached_ebs
        raise 'Not Found EBS' if volumes.empty?

        specs = volumes.map do |volume|
          attachment_specs = generate_attachment_specs(volume)
          content = ERB.new(ebs_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
        end
        specs.join("\n")
      end

      def generate_attachment_specs(volume)
        linespecs = []
        volume.attachments.each do |attachment|
          instance = find_ec2(attachment.instance_id)
          linespecs.push(ERB.new(attachment_linetemplate, nil, '-').result(binding)) if attachment.instance_id
        end
        linespecs
      end

      def attachment_linetemplate
        <<-'EOF'
<%- if instance.tag_name -%>
it { should be_attached_to('<%= instance.tag_name %>') }
<%- else -%>
it { should be_attached_to('<%= instance.instance_id %>') }
<%- end -%>
EOF
      end

      def ebs_spec_template
        <<-'EOF'
<%- if volume.tag_name -%>
describe ebs('<%= volume.tag_name %>') do
<%- else -%>
describe ebs('<%= volume.volume_id %>') do
<%- end -%>
  it { should exist }
  it { should be_<%= volume.state.tr('-', '_') %> }
  its(:size) { should eq <%= volume.size %> }
  its(:volume_type) { should eq '<%= volume.volume_type %>' }
<% attachment_specs.each do |line| %>
  <%= line %>
<% end %>
end
EOF
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
awspec-1.31.0 lib/awspec/generator/spec/ebs.rb
awspec-1.30.0 lib/awspec/generator/spec/ebs.rb
awspec-1.29.3 lib/awspec/generator/spec/ebs.rb
awspec-1.29.2 lib/awspec/generator/spec/ebs.rb
awspec-1.29.1 lib/awspec/generator/spec/ebs.rb
awspec-1.29.0 lib/awspec/generator/spec/ebs.rb
awspec-1.28.2 lib/awspec/generator/spec/ebs.rb
awspec-1.28.1 lib/awspec/generator/spec/ebs.rb
awspec-1.28.0 lib/awspec/generator/spec/ebs.rb
awspec-1.27.1 lib/awspec/generator/spec/ebs.rb
awspec-1.27.0 lib/awspec/generator/spec/ebs.rb
awspec-1.26.0 lib/awspec/generator/spec/ebs.rb
awspec-1.25.2 lib/awspec/generator/spec/ebs.rb