Newer
Older
dmpopidor / test / unit / user_test.rb
require 'test_helper'

class UserTest < ActiveSupport::TestCase

  def setup
    @user = users(:with_many_projects)
  end

  test "User#projects behaves the same as Project.projects_for_user" do
    # FIXME: Is the ordering important? If so, don't mask the different orders here!
    user_projects = @user.projects.pluck(:id).sort
    projects_for_user = Project.projects_for_user(@user.id).collect {|p| p.id}.sort

    assert_not_empty(user_projects)
    assert_equal(user_projects, projects_for_user)
  end

  test "empty filter term returns all projects" do
    projects = @user.projects
    filtered = @user.projects.filter('')

    assert_not_empty(projects)
    assert_equal(projects, filtered)
  end

  test "nil filter term returns all projects" do
    projects = @user.projects
    filtered = @user.projects.filter(nil)

    assert_not_empty(projects)
    assert_equal(projects, filtered)
  end

  test "valid filter term only returns matching records" do
    projects = @user.projects
    filtered = @user.projects.filter('DCC')

    assert_equal(filtered.count, 1)
    assert_not_equal(filtered, projects)
    assert_equal(projects(:test_plan_3), filtered.first)
  end

end