mpog_software_plugin_myprofile_controller_test.rb 3.87 KB
require File.dirname(__FILE__) + '/../../../../test/test_helper'
require File.dirname(__FILE__) + '/../../controllers/mpog_software_plugin_myprofile_controller'
require File.dirname(__FILE__) + '/software_helper'

class MpogSoftwarePluginMyprofileController; def rescue_action(e) raise e end;
end

class MpogSoftwarePluginMyprofileControllerTest < ActionController::TestCase
  include SoftwareHelper
  def setup
    @controller = MpogSoftwarePluginMyprofileController.new
    @request    = ActionController::TestRequest.new
    @response   = ActionController::TestResponse.new
    @person = create_user('person').person
    @offer = create_user('Angela Silva')
    @offer_1 = create_user('Ana de Souza')
    @offer_2 = create_user('Angelo Roberto')

    LicenseInfo.create(:version=>"CC-GPL-V2", :link=>"http://creativecommons.org/licenses/GPL/2.0/legalcode.pt")
    ProgrammingLanguage.create(:name =>"language")
    DatabaseDescription.create(:name => "database")
    OperatingSystemName.create(:name=>"Debian")

    login_as(@person.user.login)
    e = Environment.default
    e.enable_plugin('MpogSoftwarePlugin')
    e.save!
  end

  attr_accessor :person, :offer

  should 'Add offer to admin in new software' do
    @hash_list = software_fields
    @software = create_software @hash_list
    @software.community.add_admin(@offer.person) 
    assert_equal @offer.id, Community.last.admins.last.id
  end

  should 'search new offers while creating a new software' do
    offer_token = "An"
    post :search_offerers, :profile => person.identifier,:q => offer_token
    response = JSON.parse(@response.body)
    assert_equal "Angelo Roberto",response[0]["name"]
    assert_equal "Ana de Souza",response[1]["name"]
    assert_equal "Angela Silva",response[2]["name"]
  end

  should 'make search for Ang for offerer in software creation' do
    offer_token = "Ang"
    post :search_offerers, :profile => person.identifier,:q => offer_token
    response = JSON.parse(@response.body)
    assert_equal "Angelo Roberto",response[0]["name"]
    assert_equal "Angela Silva",response[1]["name"]
  end

  should 'not find any offerer for software creation' do
    offer_token = "Jos"
    post :search_offerers, :profile => person.identifier,:q => offer_token
    response = JSON.parse(@response.body)
    assert response.count == 0
  end

  should 'create a new software with all fields filled in' do 
    fields = software_fields
    software = create_software(fields)
    assert software.save
  end

private

  def software_fields

    fields = Hash.new
    fields_library = Hash.new
    fields_language = Hash.new
    fields_database = Hash.new
    fields_license = Hash.new
    fields_operating_system = Hash.new
    #Fields for library
    fields_library['version'] = 'test'
    fields_library['name'] = 'test'
    fields_library['license'] = 'test'
    #Fields for software language
    fields_language['version'] = 'test'
    fields_language['programming_language_id'] = ProgrammingLanguage.last.id
    fields_language['operating_system'] = 'test'
    #Fields for database
    fields_database['version'] = 'test'
    fields_database['database_description_id'] = DatabaseDescription.last.id
    fields_database['operating_system'] = 'test'
    #Fields for license info
    fields_license['version'] = 'teste'
    fields_license['link'] = 'teste'
    #Fields for operating system 
    fields_operating_system['version'] = 'version'
    fields_operating_system['operating_system_name_id'] = OperatingSystemName.last.id

    fields['acronym'] = 'test'
    fields['objectives'] = 'test'
    fields['features'] = 'test'
    fields['operating_platform'] = 'operating_plataform_test'
    fields['demonstration_url'] = 'test'

    hash_list = []
    hash_list << fields
    hash_list << fields_library
    hash_list << fields_language
    hash_list << fields_database
    hash_list << fields_operating_system
    hash_list << fields_license
    hash_list
  end
end