From ae7243a21eb2ac0a255bb290115c24144ab77ab2 Mon Sep 17 00:00:00 2001 From: Arthur Del Esposte Date: Tue, 20 Oct 2015 17:45:04 +0000 Subject: [PATCH] Closes #358 create tests to create_software task class --- src/noosfero-spb/software_communities/lib/create_software.rb | 8 +++----- src/noosfero-spb/software_communities/test/unit/create_software_test.rb | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 src/noosfero-spb/software_communities/test/unit/create_software_test.rb diff --git a/src/noosfero-spb/software_communities/lib/create_software.rb b/src/noosfero-spb/software_communities/lib/create_software.rb index d3d313c..d43a21b 100644 --- a/src/noosfero-spb/software_communities/lib/create_software.rb +++ b/src/noosfero-spb/software_communities/lib/create_software.rb @@ -2,10 +2,10 @@ class CreateSoftware < Task include Rails.application.routes.url_helpers validates_presence_of :requestor_id, :target_id - validates_presence_of :name + validates_presence_of :name, :finality attr_accessible :name, :finality, :repository_link, :requestor, :environment, - :reject_explanation, :license_info, :identifier + :reject_explanation, :license_info, :identifier, :target alias :environment :target alias :environment= :target= @@ -17,9 +17,7 @@ class CreateSoftware < Task def perform software_template = SoftwareHelper.software_template - if (!software_template.blank? && software_template.is_template) - template_id = software_template.id - end + template_id = software_template.blank? ? nil : software_template.id identifier = self.identifier identifier ||= self.name.to_slug diff --git a/src/noosfero-spb/software_communities/test/unit/create_software_test.rb b/src/noosfero-spb/software_communities/test/unit/create_software_test.rb new file mode 100644 index 0000000..75e8af6 --- /dev/null +++ b/src/noosfero-spb/software_communities/test/unit/create_software_test.rb @@ -0,0 +1,72 @@ +require File.dirname(__FILE__) + '/../../../../test/test_helper' + +class CreateSoftwareTest < ActiveSupport::TestCase + + def setup + @requestor = create_user('testuser').person + end + + should 'be a task' do + ok { CreateSoftware.new.kind_of?(Task) } + end + + should 'require a requestor' do + task = CreateSoftware.new(:name => 'Software Test', :target => Environment.default) + task.valid? + + assert task.errors[:requestor_id.to_s].present? + assert task.errors[:finality.to_s].present? + task.requestor = @requestor + task.finality = "Any" + task.valid? + refute task.errors[:requestor_id.to_s].present? + refute task.errors[:finality.to_s].present? + end + + should 'actually create new software community when confirmed' do + task = CreateSoftware.create!(:name => 'Software Test', :target => Environment.default, :requestor => @requestor, :finality => "Any") + + assert_difference 'SoftwareInfo.count' do + assert_difference 'Community.count' do + task.finish + end + end + + assert_equal @requestor, Community['software-test'].admins.first + end + + should 'create new software community with all informed data when confirmed' do + task = CreateSoftware.create!(:name => 'Software Test', :target => Environment.default, :requestor => @requestor, :finality => "Any", :repository_link => "#", ) + + task.finish + software = Community["software-test"].software_info + + assert_equal "Any", software.finality + assert_equal "#", software.repository_link + assert_equal "Software Test", software.community.name + end + + should 'override message methods from Task' do + task = CreateSoftware.create!(:name => 'Software Test', :target => Environment.default, :requestor => @requestor, :finality => "Any") + + task.finish + + %w[ target_notification_description target_notification_message task_created_message task_finished_message task_cancelled_message ].each do |method| + assert_nothing_raised NotImplementedError do + task.send(method) + end + end + end + + should 'report as approved when approved' do + request = CreateSoftware.new + request.stubs(:status).returns(Task::Status::FINISHED) + assert request.approved? + end + + should 'report as rejected when rejected' do + request = CreateSoftware.new + request.stubs(:status).returns(Task::Status::CANCELLED) + assert request.rejected? + end +end -- libgit2 0.21.2