Shindo.tests('Fog::Compute[:xenserver] | HostMetrics model', ['xenserver']) do

  host = Fog::Compute[:xenserver].hosts.first

  tests('The HostMetrics model should') do
    tests('have attributes') do
      model_attribute_hash = host.metrics.attributes
      attributes = [
        :reference,
        :uuid,
        :memory_free,
        :memory_total,
        :other_config,
        :last_updated
      ]
      tests("The HostMetrics model should respond to") do
        attributes.each do |attribute|
          test("#{attribute}") { host.metrics.respond_to? attribute }
        end
      end
      tests("The attributes hash should have key") do
        attributes.each do |attribute|
          test("#{attribute}") { model_attribute_hash.key? attribute }
        end
      end
    end

    test('be a kind of Fog::Compute::XenServer::HostMetrics') do
      host.metrics.kind_of? Fog::Compute::XenServer::HostMetrics
    end

    test("have a last_updated Time property") { host.metrics.last_updated.kind_of? Time }

    test("return a valid memory_free ammount") do
      (host.metrics.memory_free =~ /^\d+$/) == 0
    end

    test("have memory_free > 0") { host.metrics.memory_free.to_i > 0 }

    test("return a valid memory_total ammount") do
      (host.metrics.memory_total =~ /^\d+$/) == 0
    end

    test("have memory_total > 0") { host.metrics.memory_total.to_i > 0 }

  end

end
