diff --git a/app/models/advisory.rb b/app/models/advisory.rb index 0c4261f71..b1cc0c6d1 100644 --- a/app/models/advisory.rb +++ b/app/models/advisory.rb @@ -26,7 +26,7 @@ class Advisory < ActiveRecord::Base self.platforms << build_list.save_to_platform unless platforms.include? build_list.save_to_platform self.projects << build_list.project unless projects.include? build_list.project build_list.advisory = self - save + save && build_list.save end # this method fetches and structurize packages attached to current advisory. diff --git a/spec/models/advisory_spec.rb b/spec/models/advisory_spec.rb index abbb38c8e..2f2e6f8ce 100644 --- a/spec/models/advisory_spec.rb +++ b/spec/models/advisory_spec.rb @@ -1,5 +1,47 @@ require 'spec_helper' -describe Advisory do - pending "add some examples to (or delete) #{__FILE__}" +shared_examples_for 'attach advisory to build_list' do + + it 'ensure that advisory has been attached to build_list' do + build_list.reload.advisory.should == advisory + end + + it 'ensure that save_to_platform of build_list has been attached to advisory' do + build_list.save_to_platform.advisories.should include(advisory) + end + + it 'ensure that projects of build_list has been attached to advisory' do + build_list.project.advisories.should include(advisory) + end + +end + +describe Advisory do + before { stub_symlink_methods } + context 'attach_build_list' do + let(:build_list) { FactoryGirl.create(:build_list) } + + context 'attach new advisory to build_list' do + let(:advisory) { FactoryGirl.build(:advisory) } + before do + advisory.attach_build_list(build_list) + end + + it_should_behave_like 'attach advisory to build_list' + + it 'ensure that advisory has been created' do + Advisory.should have(1).item + end + end + + context 'attach old advisory to build_list' do + let(:advisory) { FactoryGirl.create(:advisory) } + before do + advisory.attach_build_list(build_list) + end + + it_should_behave_like 'attach advisory to build_list' + end + + end end