software_communities_person_test.rb 2.7 KB
# encoding: utf-8

require File.dirname(__FILE__) + '/../../../../test/test_helper'
require File.dirname(__FILE__) + '/../helpers/plugin_test_helper'

class SoftwareCommunitiesPluginPersonTest < ActiveSupport::TestCase
  include PluginTestHelper

  def setup
    @plugin = SoftwareCommunitiesPlugin.new

    @user = fast_create(User)
    @person = create_person(
                "My Name",
                "user@email.com",
                "123456",
                "123456",
                "user@secondary_email.com",
                "Any State",
                "Some City"
              )
  end

  def teardown
    @plugin = nil
  end

  should 'be a noosfero plugin' do
    assert_kind_of Noosfero::Plugin, @plugin
  end


  should 'return true when the email has not gov.br,jus.br,leg.br or mp.br' do
    @user.secondary_email = "test_email@com.br"
    @user.email = "test_email@net.br"
    assert @user.save
  end

  should 'save person with a valid full name' do
    p = Person::new :name=>"S1mpl3 0f N4m3", :identifier=>"simple-name"
    p.user = fast_create(:user)

    assert_equal true, p.save
  end

  should 'save person with a valid full name with accents' do
    name = 'Jônatàs dâ Sîlvã Jösé'
    identifier = "jonatas-jose-da-silva"
    p = Person::new :name=>name, :identifier=>identifier
    p.user = fast_create(:user)

    assert_equal true, p.save
  end

  should 'not save person whose name has not capital letter' do
    p = Person::new :name=>"simple name"
    assert !p.save, _("Name Should begin with a capital letter and no special characters")
  end

  should 'not save person whose name has special characters' do
    p = Person::new :name=>"Simple N@me"

    assert !p.save , _("Name Should begin with a capital letter and no special characters")
  end

  should 'calculate the percentege of person incomplete fields' do
    @person.cell_phone = "76888919"
    @person.contact_phone = "987654321"

    assert_equal(67, @plugin.calc_percentage_registration(@person))

    @person.comercial_phone = "11223344"
    @person.country = "I dont know"
    @person.state = "I dont know"
    @person.city = "I dont know"
    @person.organization_website = "www.whatever.com"
    @person.image = Image::new :uploaded_data=>fixture_file_upload('/files/rails.png', 'image/png')
    @person.save

    assert_equal(100, @plugin.calc_percentage_registration(@person))
  end

  should 'get a list of softwares of a person' do
    software1 = create_software_info "noosfero"
    software2 = create_software_info "colab"
    community = create_community "simple_community"

    software1.community.add_member @person
    software1.save!
    community.add_member @person
    community.save!

    assert_equal 1, @person.softwares.count
  end
end