Commit d10134b6eb45f37eae9e5faff1817a3400e7ba5b

Authored by Arthur Esposte
Committed by Luciano Prestes
1 parent 5985af06

Closes #358 create tests to create_software task class

src/noosfero-spb/software_communities/lib/create_software.rb
... ... @@ -2,11 +2,11 @@ class CreateSoftware < Task
2 2 include Rails.application.routes.url_helpers
3 3  
4 4 validates_presence_of :requestor_id, :target_id
5   - validates_presence_of :name
  5 + validates_presence_of :name, :finality
6 6  
7 7 attr_accessible :name, :finality, :repository_link, :requestor, :environment,
8 8 :reject_explanation, :license_info, :identifier, :another_license_version,
9   - :another_license_link
  9 + :another_license_link, :target
10 10  
11 11 alias :environment :target
12 12 alias :environment= :target=
... ... @@ -19,9 +19,7 @@ class CreateSoftware < Task
19 19  
20 20 def perform
21 21 software_template = SoftwareHelper.software_template
22   - if (!software_template.blank? && software_template.is_template)
23   - template_id = software_template.id
24   - end
  22 + template_id = software_template.blank? ? nil : software_template.id
25 23  
26 24 identifier = self.identifier
27 25 identifier ||= self.name.to_slug
... ...
src/noosfero-spb/software_communities/test/unit/create_software_test.rb 0 → 100644
... ... @@ -0,0 +1,72 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +
  3 +class CreateSoftwareTest < ActiveSupport::TestCase
  4 +
  5 + def setup
  6 + @requestor = create_user('testuser').person
  7 + end
  8 +
  9 + should 'be a task' do
  10 + ok { CreateSoftware.new.kind_of?(Task) }
  11 + end
  12 +
  13 + should 'require a requestor' do
  14 + task = CreateSoftware.new(:name => 'Software Test', :target => Environment.default)
  15 + task.valid?
  16 +
  17 + assert task.errors[:requestor_id.to_s].present?
  18 + assert task.errors[:finality.to_s].present?
  19 + task.requestor = @requestor
  20 + task.finality = "Any"
  21 + task.valid?
  22 + refute task.errors[:requestor_id.to_s].present?
  23 + refute task.errors[:finality.to_s].present?
  24 + end
  25 +
  26 + should 'actually create new software community when confirmed' do
  27 + task = CreateSoftware.create!(:name => 'Software Test', :target => Environment.default, :requestor => @requestor, :finality => "Any")
  28 +
  29 + assert_difference 'SoftwareInfo.count' do
  30 + assert_difference 'Community.count' do
  31 + task.finish
  32 + end
  33 + end
  34 +
  35 + assert_equal @requestor, Community['software-test'].admins.first
  36 + end
  37 +
  38 + should 'create new software community with all informed data when confirmed' do
  39 + task = CreateSoftware.create!(:name => 'Software Test', :target => Environment.default, :requestor => @requestor, :finality => "Any", :repository_link => "#", )
  40 +
  41 + task.finish
  42 + software = Community["software-test"].software_info
  43 +
  44 + assert_equal "Any", software.finality
  45 + assert_equal "#", software.repository_link
  46 + assert_equal "Software Test", software.community.name
  47 + end
  48 +
  49 + should 'override message methods from Task' do
  50 + task = CreateSoftware.create!(:name => 'Software Test', :target => Environment.default, :requestor => @requestor, :finality => "Any")
  51 +
  52 + task.finish
  53 +
  54 + %w[ target_notification_description target_notification_message task_created_message task_finished_message task_cancelled_message ].each do |method|
  55 + assert_nothing_raised NotImplementedError do
  56 + task.send(method)
  57 + end
  58 + end
  59 + end
  60 +
  61 + should 'report as approved when approved' do
  62 + request = CreateSoftware.new
  63 + request.stubs(:status).returns(Task::Status::FINISHED)
  64 + assert request.approved?
  65 + end
  66 +
  67 + should 'report as rejected when rejected' do
  68 + request = CreateSoftware.new
  69 + request.stubs(:status).returns(Task::Status::CANCELLED)
  70 + assert request.rejected?
  71 + end
  72 +end
... ...