profile_followers_test.rb 1.33 KB
require_relative "../test_helper"

class ProfileFollowersTest < ActiveSupport::TestCase

  should 'a person follow another' do
    p1 = create_user('person_test').person
    p2 = create_user('person_test_2').person

    assert_difference 'ProfileFollower.count' do
      p1.follow(p2)
    end

    assert_includes p2.followers(true), p1
    assert_not_includes p1.followers(true), p2
  end


  should 'a person unfollow another person' do
    p1 = create_user('person_test').person
    p2 = create_user('person_test_2').person

    p1.follow(p2)

    assert_difference 'ProfileFollower.count', -1 do
      p1.unfollow(p2)
    end

    assert_not_includes p2.followers(true), p1
  end

  should 'get the followed persons for a profile' do
    p1 = create_user('person_test').person
    p2 = create_user('person_test_2').person
    p3 = create_user('person_test_3').person

    p1.follow(p2)
    p1.follow(p3)

    assert_equivalent p1.following_profiles, [p2,p3]
    assert_equivalent Profile.following_profiles(p1), [p2,p3]
  end

  should 'not follow same person twice' do
    p1 = create_user('person_test').person
    p2 = create_user('person_test_2').person

    assert_difference 'ProfileFollower.count' do
      p1.follow(p2)
      p1.follow(p2)
    end

    assert_equivalent p1.following_profiles, [p2]
    assert_equivalent p2.followers, [p1]
  end
end