Project

General

Profile

Download (2.01 KB) Statistics
| Branch: | Tag: | Revision:
require 'test_helper'

class ComputeAttributeMergeTest < ActiveSupport::TestCase
def setup
@merge = ComputeAttributeMerge.new
@profile_attributes = compute_attributes(:two)
@host = FactoryGirl.build(:host)
end

test "it doesn't change anything when profile attributes are nil" do
@host.compute_attributes = { 'cpus' => 1 }
@merge.run(@host, nil)

assert_equal({ 'cpus' => 1 }, @host.compute_attributes)
end

test "it sets the profile attributes when host attributes are nil" do
@profile_attributes.stubs(:vm_attrs).returns(
{
'cpus' => 1,
'memory' => 4294967296
})
@merge.run(@host, @profile_attributes)

assert_equal({ 'cpus' => 1, 'memory' => 4294967296 }, @host.compute_attributes)
end

test "it merges first level attributes" do
@profile_attributes.stubs(:vm_attrs).returns(
{
'cpus' => 1,
'memory' => 4294967296
})
@host.compute_attributes = {
'cpus' => 2
}

@merge.run(@host, @profile_attributes)

assert_equal({ 'cpus' => 2, 'memory' => 4294967296 }, @host.compute_attributes)
end

test "it merges volume_attributes" do
@profile_attributes.stubs(:vm_attrs).returns(
{
'cpus' => 1,
'memory' => 4294967296,
'volumes_attributes' => {
'0' => {
'attr0a' => 'a',
'attr0b' => 'b'
},
'1' => {
'attr0a' => 'a',
'attr0b' => 'b'
}
}
})
@host.compute_attributes = {
'cpus' => 2,
'volumes_attributes' => {
'1' => {
'attr0b' => 'b1',
'attr0c' => 'c1'
}
}
}
expected_attrs = {
'cpus' => 2,
'memory' => 4294967296,
'volumes_attributes' => {
'0' => {
'attr0a' => 'a',
'attr0b' => 'b'
},
'1' => {
'attr0a' => 'a',
'attr0b' => 'b1',
'attr0c' => 'c1'
}
}
}

@merge.run(@host, @profile_attributes)

assert_equal(expected_attrs, @host.compute_attributes)
end
end
(10-10/107)