people_test.rb 3.03 KB
require File.dirname(__FILE__) + '/test_helper'

class PeopleTest < ActiveSupport::TestCase

  def setup
    Person.delete_all
    login_api
  end

  should 'list all people' do
    person1 = fast_create(Person, :public_profile => true)
    person2 = fast_create(Person)
    get "/api/v1/people?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equivalent [person1.id, person2.id, person.id], json['people'].map {|c| c['id']}
  end

  should 'not list invisible people' do
    person1 = fast_create(Person)
    fast_create(Person, :visible => false)

    get "/api/v1/people?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equivalent [person1.id, person.id], json['people'].map {|c| c['id']}
  end

  should 'not list private people without permission' do
    person1 = fast_create(Person)
    fast_create(Person, :public_profile => false)

    get "/api/v1/people?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equivalent [person1.id, person.id], json['people'].map {|c| c['id']}
  end

  should 'list private person for friends' do
    p1 = fast_create(Person)
    p2 = fast_create(Person, :public_profile => false)
    person.add_friend(p2)
    p2.add_friend(person)

    get "/api/v1/people?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equivalent [p1.id, p2.id, person.id], json['people'].map {|c| c['id']}
  end

  should 'get person' do
    person = fast_create(Person)

    get "/api/v1/people/#{person.id}?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equal person.id, json['person']['id']
  end

  should 'not get invisible person' do
    person = fast_create(Person, :visible => false)

    get "/api/v1/people/#{person.id}?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert json['person'].blank?
  end

  should 'not get private people without permission' do
    person = fast_create(Person)
    fast_create(Person, :public_profile => false)

    get "/api/v1/people/#{person.id}?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equal person.id, json['person']['id']
  end

  should 'get private person for friends' do
    person = fast_create(Person, :public_profile => false)
    person.add_friend(person)

    get "/api/v1/people/#{person.id}?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equal person.id, json['person']['id']
  end

  should 'list person friends' do
    p = fast_create(Person)
    fast_create(Person)
    person.add_friend(p)

    get "/api/v1/people/#{person.id}/friends?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equivalent [p.id], json['people'].map {|c| c['id']}
  end

  should 'not list person friends invisible' do
    p1 = fast_create(Person)
    p2 = fast_create(Person, :visible => false)
    person.add_friend(p1)
    person.add_friend(p2)

    get "/api/v1/people/#{person.id}/friends?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equivalent [p1.id], json['people'].map {|c| c['id']}
  end

end