require 'db/mongo/models/deploy_env/deploy_env_ec2' require_relative 'shared_deploy_env_specs' require_relative 'shared_cloud_deploy_env_specs' RSpec.describe Devops::Model::DeployEnvEc2, type: :model do let(:env) { build(:deploy_env_ec2) } describe 'it inherits from cloud deploy_env', stubbed_env_validators: true, stubbed_logger: true do it_behaves_like 'deploy env' it_behaves_like 'cloud deploy env' end describe '#initialize' do it 'keep only first subnet in given array' do env = described_class.new('subnets' => %w(foo bar)) expect(env.subnets).to match_array(%w(foo)) end end describe '.create' do it 'returns instance of DeployEnvEc2' do expect(described_class.create({})).to be_an_instance_of(described_class) end end describe '#subnets_filter' do before do allow_any_instance_of(described_class).to receive_message_chain('provider_instance.networks') { [{'name' => 'foo', 'vpcId' => 'bar'}] } end it 'returns nil if #subnets are empty' do expect(build(:deploy_env_ec2, subnets: []).subnets_filter).to be_nil end context "when provider has env's network" do it 'returns hash with vpcId of that network' do env = build(:deploy_env_ec2, subnets: ['foo']) expect(env.subnets_filter).to eq({'vpc-id' => 'bar'}) end end context "when provider hasn't env's network" do it 'returns nil' do env = build(:deploy_env_ec2, subnets: ['wrong']) expect(env.subnets_filter).to be nil end end end end