2015-11-03 11:46:54 +03:00
|
|
|
RSpec.shared_examples 'stack template' do
|
|
|
|
|
validated_model_name = described_class.name.demodulize.underscore
|
|
|
|
|
|
|
|
|
|
it 'is valid with factory attrs' do
|
|
|
|
|
expect(build(validated_model_name)).to be_valid
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe 'validation rules' do
|
|
|
|
|
include_examples 'field type validation', :id, :not_nil, :non_empty_string, :only_word_symbols, :field_validator
|
|
|
|
|
include_examples 'field type validation', :provider, :not_nil, :non_empty_string, :field_validator
|
|
|
|
|
include_examples 'field type validation', :template_body, :not_nil, :non_empty_string, :field_validator
|
|
|
|
|
include_examples 'field type validation', :owner, :not_nil, :non_empty_string, :field_validator
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '#to_hash_without_id' do
|
|
|
|
|
it 'returns hash with provider, template_body and owner' do
|
2016-01-28 18:15:06 +03:00
|
|
|
expect(stack_template.to_hash_without_id).to include('provider', 'template_body', 'owner')
|
2015-11-03 11:46:54 +03:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '.create' do
|
|
|
|
|
it "returns instance of #{described_class.name}" do
|
|
|
|
|
params = {
|
|
|
|
|
'id' => 'foo',
|
|
|
|
|
'template_body' => '{}',
|
|
|
|
|
'owner' => 'root',
|
|
|
|
|
'provider' => 'ec2'
|
|
|
|
|
}
|
|
|
|
|
expect(described_class.create(params)).to be_an_instance_of(described_class)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '#build_from_bson' do
|
|
|
|
|
let(:params) { {
|
|
|
|
|
'_id' => 'foo',
|
|
|
|
|
'template_body' => '{}',
|
|
|
|
|
'owner' => 'root',
|
|
|
|
|
'provider' => 'ec2'
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
subject { described_class.build_from_bson(params) }
|
|
|
|
|
|
|
|
|
|
it 'sets id from _id' do
|
|
|
|
|
expect(subject.id).to eq 'foo'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'sets other params from given hash' do
|
|
|
|
|
expect(subject.template_body).to eq '{}'
|
|
|
|
|
expect(subject.owner).to eq 'root'
|
|
|
|
|
expect(subject.provider).to eq 'ec2'
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|