diff --git a/app/models/service_template.rb b/app/models/service_template.rb index 8367242f0e6..1d7375cb5ed 100644 --- a/app/models/service_template.rb +++ b/app/models/service_template.rb @@ -401,9 +401,11 @@ def provision_request(user, options = nil, request_options = {}) def picture=(value) if value - super unless value.kind_of?(Hash) - - super(create_picture(value)) + if value.kind_of?(Hash) + super(create_picture(value)) + else + super + end end end diff --git a/spec/models/service_template_spec.rb b/spec/models/service_template_spec.rb index d5cf2c9dce0..6e8dfd2446b 100644 --- a/spec/models/service_template_spec.rb +++ b/spec/models/service_template_spec.rb @@ -1002,6 +1002,27 @@ expect(service_template.resource_actions.last.dialog).to eq(service_dialog) expect(service_template.config_info).to eq(catalog_item_options[:config_info]) end + + context "with an existing picture" do + let(:picture) { Picture.create(catalog_item_options.delete(:picture)) } + + it "creates the picture without error" do + expect { + service_template = ServiceTemplate.create_catalog_item(catalog_item_options, user) + service_template.picture = picture + }.not_to raise_error + end + + it "has the picture assigned properly" do + service_template = ServiceTemplate.create_catalog_item(catalog_item_options, user) + service_template.picture = picture + service_template.save + + service_template.reload + + expect(service_template.picture.id).to eq picture.id + end + end end describe '#update_catalog_item' do