- # normal user is a friend of second user
- # it should be a one way friend associatation
- norm = users(:normal_user)
- sec = users(:public_user)
- create(:friend, :user_id => norm.id, :friend_user_id => sec.id)
- assert_equal 1, Friend.count
- assert_equal [sec], norm.friend_users
- assert_equal 1, norm.friend_users.size
- assert_equal 1, Friend.count
- assert norm.is_friends_with?(sec)
- assert !sec.is_friends_with?(norm)
- assert !users(:normal_user).is_friends_with?(users(:inactive_user))
- assert !users(:public_user).is_friends_with?(users(:normal_user))
- assert !users(:public_user).is_friends_with?(users(:inactive_user))
- assert !users(:inactive_user).is_friends_with?(users(:normal_user))
- assert !users(:inactive_user).is_friends_with?(users(:public_user))
- # Friend.delete(friend)
- # assert_equal 0, Friend.count
+ alice = create(:user, :active)
+ bob = create(:user, :active)
+ charlie = create(:user, :active)
+ create(:friendship, :befriender => alice, :befriendee => bob)
+
+ assert alice.friends_with?(bob)
+ assert_not alice.friends_with?(charlie)
+ assert_not bob.friends_with?(alice)
+ assert_not bob.friends_with?(charlie)
+ assert_not charlie.friends_with?(bob)
+ assert_not charlie.friends_with?(alice)
+ end
+
+ def test_users_nearby
+ alice = create(:user, :active, :home_lat => 51.0, :home_lon => 1.0, :data_public => false)
+ bob = create(:user, :active, :home_lat => 51.1, :home_lon => 1.0, :data_public => true)
+ charlie = create(:user, :active, :home_lat => 51.1, :home_lon => 1.1, :data_public => true)
+ david = create(:user, :active, :home_lat => 10.0, :home_lon => -123.0, :data_public => true)
+ _edward = create(:user, :suspended, :home_lat => 10.0, :home_lon => -123.0, :data_public => true)
+ south_pole_user = create(:user, :active, :home_lat => -90.0, :home_lon => 0.0, :data_public => true)
+ vagrant_user = create(:user, :active, :home_lat => nil, :home_lon => nil, :data_public => true)
+
+ # bob and charlie are both near alice
+ assert_equal [bob, charlie], alice.nearby
+ # charlie and alice are both near bob, but alice has their data private
+ assert_equal [charlie], bob.nearby
+ # david has no user nearby, since edward is not active
+ assert_empty david.nearby
+ # south_pole_user has no user nearby, and doesn't throw exception
+ assert_empty south_pole_user.nearby
+ # vagrant_user has no home location
+ assert_empty vagrant_user.nearby
+ end
+
+ def test_friends
+ norm = create(:user, :active)
+ sec = create(:user, :active)
+ create(:friendship, :befriender => norm, :befriendee => sec)
+
+ assert_equal [sec], norm.friends
+ assert_equal 1, norm.friends.size
+
+ assert_empty sec.friends
+ assert_equal 0, sec.friends.size