user_test.rb 3.68 KB
require File.dirname(__FILE__) + '/../../../../test/test_helper'
require File.dirname(__FILE__) + '/../helpers/plugin_test_helper'

class UserTest < ActiveSupport::TestCase
  include PluginTestHelper

  should 'not save user whose both email and secondary email are the same' do
    user = fast_create(User)
    user.email = "test@email.com"
    user.secondary_email = "test@email.com"

    assert !user.save
  end

  should 'not save user whose email and secondary email have been taken' do
    user1 = create_default_user
    user2 = fast_create(User)

    user2.email = "primary@email.com"
    user2.secondary_email = "secondary@email.com"
    assert !user2.save
  end

  should 'not save user whose email has already been used' do
    user1 = create_default_user
    user2 = fast_create(User)

    user2.email = "primary@email.com"
    user2.secondary_email = "noosfero@email.com"
    assert !user2.save
  end

  should 'not save user whose email has been taken another in users secondary email' do
    user1 = create_default_user
    user2 = fast_create(User)

    user2.login = "another-login"
    user2.email = "secondary@email.com"
    user2.secondary_email = "noosfero@email.com"
    assert !user2.save
  end

  should 'not save user whose secondary email has been taken used in another users email' do
    user1 = create_default_user
    user2 = fast_create(User)

    user2.login = "another-login"
    user2.email = "noosfero@email.com"
    user2.secondary_email = "primary@email.com"
    assert !user2.save
  end

  should 'not save user whose secondary email has already been used in another users secondary email' do
    user1 = create_default_user
    user2 = fast_create(User)

    user2.login = "another-login"
    user2.email = "noosfero@email.com"
    user2.secondary_email = "secondary@email.com"
    assert !user2.save
  end

  should 'not save user whose secondary email is in the wrong format' do
    user = fast_create(User)
    user.email = "test@email.com"
    user.secondary_email = "notarightformat.com"

    assert !user.save

    user.secondary_email = "not@arightformatcom"

    assert !user.save
  end

  should 'save more than one user without secondary email' do
    user = fast_create(User)
    user.email = "test@email.com"
    user.secondary_email = ""
    user.save

    user2 = fast_create(User)
    user2.email = "test2@email.com"
    user2.secondary_email = ""
    assert user2.save
  end

  should 'return an error if secondary email is governmental and primary is not' do
    invalid_msg = "The governamental email must be the primary one."
    user = fast_create(User)

    user.email = "test@email.com"
    user.secondary_email = "test@gov.br"

    assert !user.save
    assert user.errors.full_messages.include?(invalid_msg)
  end

  # should 'have institution if email is governmental' do
  #   user = fast_create(User)
  #
  #   user.email = "testtest@gov.br"
  #
  #   user.institutions = []
  #   assert !user.save, "this should not save"
  #
  #   gov_power = GovernmentalPower.create(:name=>"Some Gov Power")
  #   gov_sphere = GovernmentalSphere.create(:name=>"Some Gov Sphere")
  #   juridical_nature = JuridicalNature.create(:name => "Autarquia")
  #   institution = create_public_institution(
  #   "Ministerio Publico da Uniao",
  #   "MPU",
  #   "BR",
  #   "DF",
  #   "Gama",
  #   juridical_nature,
  #   gov_power,
  #   gov_sphere,
  #   "44.555.666/7777-88"
  #   )
  #   institution.save!
  #
  #   user.institutions << institution
  #   assert user.save, "this should save"
  # end

  private

  def create_default_user
    user = fast_create(User)
    user.login = "a-login"
    user.email = "primary@email.com"
    user.secondary_email = "secondary@email.com"
    user.save

    return user
  end

end