require 'yaml'

describe 'compiled component <%= @component_name %>' do

context 'cftest' do
  it 'compiles test' do
    expect(system("cfhighlander cftest #{@validate} --tests tests/<%= @test_name %>.test.yaml")).to be_truthy
  end      
end

let(:template) { YAML.load_file("#{File.dirname(__FILE__)}/../out/tests/<%= @test_name %>/<%= @component_name %>.compiled.yaml") }

context "Resource" do

  <% config['Resources'].each do |resource, details| %>
  context "<%= resource %>" do
    let(:resource) { template["Resources"]["<%= resource %>"] }

    it "is of type <%= details['Type'] %>" do
        expect(resource["Type"]).to eq("<%= details['Type'] %>")
    end
    <% if details.has_key?('Properties')%><% details['Properties'].each do |property, value| %>
    it "to have property <%= property %>" do
        expect(resource["Properties"]["<%= property %>"]).to eq(<%= value.is_a?(String) ? "\"#{value}\"" : value %>)
    end
    <% end %><% end %>
  end
  <% end %>
end

end