recommendable 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/recommendable/helpers/redis_key_mapper.rb +23 -6
  3. data/lib/recommendable/ratable.rb +16 -3
  4. data/lib/recommendable/version.rb +10 -5
  5. data/test/dummy/app/models/boat.rb +3 -0
  6. data/test/dummy/app/models/book.rb +1 -1
  7. data/test/dummy/app/models/car.rb +4 -0
  8. data/test/dummy/app/models/documentary.rb +3 -0
  9. data/test/dummy/app/models/movie.rb +1 -1
  10. data/test/dummy/app/models/rock.rb +1 -1
  11. data/test/dummy/app/models/user.rb +2 -2
  12. data/test/dummy/app/models/vehicle.rb +3 -0
  13. data/test/dummy/config/application.rb +1 -1
  14. data/test/dummy/config/environments/development.rb +5 -5
  15. data/test/dummy/config/environments/test.rb +5 -5
  16. data/test/dummy/db/development.sqlite3 +0 -0
  17. data/test/dummy/db/migrate/20131226071447_create_vehicles.rb +10 -0
  18. data/test/dummy/db/migrate/20131226165647_add_type_to_movie.rb +5 -0
  19. data/test/dummy/db/schema.rb +22 -14
  20. data/test/dummy/db/test.sqlite3 +0 -0
  21. data/test/dummy/log/test.log +3164 -0
  22. data/test/factories.rb +20 -0
  23. data/test/recommendable/helpers/calculations_test.rb +2 -1
  24. data/test/recommendable/helpers/redis_key_mapper_test.rb +65 -0
  25. data/test/recommendable/ratable_test.rb +87 -1
  26. data/test/recommendable/rater/bookmarker_test.rb +29 -2
  27. data/test/recommendable/rater/disliker_test.rb +29 -2
  28. data/test/recommendable/rater/hider_test.rb +27 -1
  29. data/test/recommendable/rater/liker_test.rb +29 -2
  30. data/test/recommendable/rater/recommender_test.rb +2 -1
  31. data/test/test_helper.rb +1 -2
  32. metadata +41 -46
  33. data/test/dummy/db/test.sqlite3-journal +0 -0
@@ -7,6 +7,12 @@ Factory.define(:movie) do |f|
7
7
  f.year { '200%d'.to_i }
8
8
  end
9
9
 
10
+ Factory.define(:documentary) do |f|
11
+ f.title '%{year}: A Space Documentary'
12
+ f.year { '200%d'.to_i }
13
+ f.type 'Documentary'
14
+ end
15
+
10
16
  Factory.define(:book) do |f|
11
17
  f.title 'Harry Potter Vol. %d'
12
18
  f.author 'J.K. Rowling'
@@ -15,3 +21,17 @@ end
15
21
  Factory.define(:rock) do |f|
16
22
  f.name 'Boring Specimen No. %d'
17
23
  end
24
+
25
+ Factory.define(:vehicle) do |f|
26
+ f.color 'blue'
27
+ end
28
+
29
+ Factory.define(:car) do |f|
30
+ f.type 'Car'
31
+ f.color 'red'
32
+ end
33
+
34
+ Factory.define(:boat) do |f|
35
+ f.type 'Boat'
36
+ f.color 'white'
37
+ end
@@ -5,7 +5,8 @@ class CalculationsTest < MiniTest::Unit::TestCase
5
5
  def setup
6
6
  @user = Factory(:user)
7
7
  5.times { |x| instance_variable_set(:"@user#{x+1}", Factory(:user)) }
8
- 10.times { |x| instance_variable_set(:"@movie#{x+1}", Factory(:movie)) }
8
+ 5.times { |x| instance_variable_set(:"@movie#{x+1}", Factory(:movie)) }
9
+ 5.upto(9) { |x| instance_variable_set(:"@movie#{x+1}", Factory(:documentary)) }
9
10
  10.times { |x| instance_variable_set(:"@book#{x+1}", Factory(:book)) }
10
11
 
11
12
  [@movie1, @movie2, @movie3, @book4, @book5, @book6].each { |obj| @user.like(obj) }
@@ -37,4 +37,69 @@ class RedisKeyMapperTest < MiniTest::Unit::TestCase
37
37
  def test_output_of_score_set_for
38
38
  assert_equal Recommendable::Helpers::RedisKeyMapper.score_set_for(Movie), 'recommendable:movies:scores'
39
39
  end
40
+
41
+ def test_output_of_liked_set_for_subclass_of_ratable
42
+ assert_equal Recommendable::Helpers::RedisKeyMapper.liked_set_for(Documentary, 1), 'recommendable:users:1:liked_movies'
43
+ end
44
+
45
+ def test_output_of_disliked_set_for_subclass_of_ratable
46
+ assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_set_for(Documentary, 1), 'recommendable:users:1:disliked_movies'
47
+ end
48
+
49
+ def test_output_of_hidden_set_for_subclass_of_ratable
50
+ assert_equal Recommendable::Helpers::RedisKeyMapper.hidden_set_for(Documentary, 1), 'recommendable:users:1:hidden_movies'
51
+ end
52
+
53
+ def test_output_of_bookmarked_set_for_subclass_of_ratable
54
+ assert_equal Recommendable::Helpers::RedisKeyMapper.bookmarked_set_for(Documentary, 1), 'recommendable:users:1:bookmarked_movies'
55
+ end
56
+
57
+ def test_output_of_recommended_set_for_subclass_of_ratable
58
+ assert_equal Recommendable::Helpers::RedisKeyMapper.recommended_set_for(Documentary, 1), 'recommendable:users:1:recommended_movies'
59
+ end
60
+
61
+ def test_output_of_liked_by_set_for_subclass_of_ratable
62
+ assert_equal Recommendable::Helpers::RedisKeyMapper.liked_by_set_for(Documentary, 1), 'recommendable:movies:1:liked_by'
63
+ end
64
+
65
+ def test_output_of_disliked_by_set_for_subclass_of_ratable
66
+ assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_by_set_for(Documentary, 1), 'recommendable:movies:1:disliked_by'
67
+ end
68
+
69
+ def test_output_of_score_set_for_subclass_of_ratable
70
+ assert_equal Recommendable::Helpers::RedisKeyMapper.score_set_for(Documentary), 'recommendable:movies:scores'
71
+ end
72
+
73
+ def test_output_of_liked_set_for_ratable_subclass_of_nonratable
74
+ assert_equal Recommendable::Helpers::RedisKeyMapper.liked_set_for(Car, 1), 'recommendable:users:1:liked_cars'
75
+ end
76
+
77
+ def test_output_of_disliked_set_for_ratable_subclass_of_nonratable
78
+ assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_set_for(Car, 1), 'recommendable:users:1:disliked_cars'
79
+ end
80
+
81
+ def test_output_of_hidden_set_for_ratable_subclass_of_nonratable
82
+ assert_equal Recommendable::Helpers::RedisKeyMapper.hidden_set_for(Car, 1), 'recommendable:users:1:hidden_cars'
83
+ end
84
+
85
+ def test_output_of_bookmarked_set_for_ratable_subclass_of_nonratable
86
+ assert_equal Recommendable::Helpers::RedisKeyMapper.bookmarked_set_for(Car, 1), 'recommendable:users:1:bookmarked_cars'
87
+ end
88
+
89
+ def test_output_of_recommended_set_for_ratable_subclass_of_nonratable
90
+ assert_equal Recommendable::Helpers::RedisKeyMapper.recommended_set_for(Car, 1), 'recommendable:users:1:recommended_cars'
91
+ end
92
+
93
+ def test_output_of_liked_by_set_for_ratable_subclass_of_nonratable
94
+ assert_equal Recommendable::Helpers::RedisKeyMapper.liked_by_set_for(Car, 1), 'recommendable:cars:1:liked_by'
95
+ end
96
+
97
+ def test_output_of_disliked_by_set_for_ratable_subclass_of_nonratable
98
+ assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_by_set_for(Car, 1), 'recommendable:cars:1:disliked_by'
99
+ end
100
+
101
+ def test_output_of_score_set_for_ratable_subclass_of_nonratable
102
+ assert_equal Recommendable::Helpers::RedisKeyMapper.score_set_for(Car), 'recommendable:cars:scores'
103
+ end
104
+
40
105
  end
@@ -6,15 +6,24 @@ class RatableTest < MiniTest::Unit::TestCase
6
6
  @movie = Factory(:movie)
7
7
  @book = Factory(:book)
8
8
  @rock = Factory(:rock)
9
+ @vehicle = Factory(:vehicle)
9
10
  end
10
11
 
11
12
  def test_recommendable_predicate_works
12
13
  assert Movie.recommendable?
13
14
  assert @movie.recommendable?
15
+ assert Documentary.recommendable?
16
+ assert Factory(:documentary).recommendable?
14
17
  assert Book.recommendable?
15
18
  assert @book.recommendable?
16
19
  refute Rock.recommendable?
17
20
  refute @rock.recommendable?
21
+ assert Car.recommendable?
22
+ assert Factory(:car).recommendable?
23
+ refute Vehicle.recommendable?
24
+ refute @vehicle.recommendable?
25
+ refute Boat.recommendable?
26
+ refute Factory(:boat).recommendable?
18
27
  end
19
28
 
20
29
  def test_rated_predicate_works
@@ -24,7 +33,7 @@ class RatableTest < MiniTest::Unit::TestCase
24
33
  assert @movie.rated?
25
34
  end
26
35
 
27
- def test_top_scope_returns_best_things
36
+ def test_top_scope_deprecated_syntax_returns_best_things
28
37
  @book2 = Factory(:book)
29
38
  @book3 = Factory(:book)
30
39
  @user = Factory(:user)
@@ -41,6 +50,56 @@ class RatableTest < MiniTest::Unit::TestCase
41
50
  assert_equal top[2], @book
42
51
  end
43
52
 
53
+ def test_top_scope_returns_best_things
54
+ @book2 = Factory(:book)
55
+ @book3 = Factory(:book)
56
+ @user = Factory(:user)
57
+ @friend = Factory(:user)
58
+
59
+ @user.like(@book2)
60
+ @friend.like(@book2)
61
+ @user.like(@book3)
62
+ @user.dislike(@book)
63
+
64
+ top = Book.top(:count => 3)
65
+ assert_equal top[0], @book2
66
+ assert_equal top[1], @book3
67
+ assert_equal top[2], @book
68
+ end
69
+
70
+ def test_top_scope_returns_best_things_for_ratable_base_class
71
+ @movie2 = Factory(:movie)
72
+ @doc = Factory(:documentary)
73
+ @user = Factory(:user)
74
+ @friend = Factory(:user)
75
+
76
+ @user.like(@doc)
77
+ @friend.like(@doc)
78
+ @user.like(@movie2)
79
+ @user.dislike(@movie)
80
+
81
+ top = Movie.top(:count => 3)
82
+ assert_equal top[0], @doc
83
+ assert_equal top[1], @movie2
84
+ assert_equal top[2], @movie
85
+ end
86
+
87
+ def test_top_scope_returns_best_things_with_start
88
+ @movie2 = Factory(:movie)
89
+ @doc = Factory(:documentary)
90
+ @user = Factory(:user)
91
+ @friend = Factory(:user)
92
+
93
+ @user.like(@doc)
94
+ @friend.like(@doc)
95
+ @user.like(@movie2)
96
+ @user.dislike(@movie)
97
+
98
+ top = Movie.top(:count =>2, :offset => 1)
99
+ assert_equal top[0], @movie2
100
+ assert_equal top[1], @movie
101
+ end
102
+
44
103
  def test_removed_from_recommendable_upon_destruction
45
104
  @user = Factory(:user)
46
105
  @friend = Factory(:user)
@@ -72,6 +131,33 @@ class RatableTest < MiniTest::Unit::TestCase
72
131
  assert_empty @buddy.bookmarked_books
73
132
  end
74
133
 
134
+ def test_ratable_subclass_object_removed_from_recommendable_upon_destruction
135
+ @doc = Factory(:documentary)
136
+ @user = Factory(:user)
137
+ @friend = Factory(:user)
138
+ @buddy = Factory(:user)
139
+ @stranger = Factory(:user)
140
+ @user.like(@doc)
141
+ @friend.dislike(@doc)
142
+ @buddy.hide(@doc)
143
+ @stranger.bookmark(@doc)
144
+
145
+ liked_by_set = Recommendable::Helpers::RedisKeyMapper.liked_by_set_for(@doc.class, @doc.id)
146
+ disliked_by_set = Recommendable::Helpers::RedisKeyMapper.disliked_by_set_for(@doc.class, @doc.id)
147
+ [liked_by_set, disliked_by_set].each { |set| assert_equal Recommendable.redis.scard(set), 1 }
148
+
149
+ assert @user.likes?(@doc)
150
+ assert @friend.dislikes?(@doc)
151
+ assert @buddy.hides?(@doc)
152
+
153
+ @doc.destroy
154
+
155
+ [liked_by_set, disliked_by_set].each { |set| assert_equal Recommendable.redis.scard(set), 0 }
156
+
157
+ assert_empty @buddy.hidden_movies
158
+ assert_empty @stranger.bookmarked_books
159
+ end
160
+
75
161
  def teardown
76
162
  Recommendable.redis.flushdb
77
163
  end
@@ -5,6 +5,7 @@ class BookmarkerTest < MiniTest::Unit::TestCase
5
5
  def setup
6
6
  @user = Factory(:user)
7
7
  @movie = Factory(:movie)
8
+ @doc = Factory(:documentary)
8
9
  end
9
10
 
10
11
  def test_that_bookmark_adds_to_bookmarked_set
@@ -13,6 +14,12 @@ class BookmarkerTest < MiniTest::Unit::TestCase
13
14
  assert_includes @user.bookmarked_movie_ids, @movie.id
14
15
  end
15
16
 
17
+ def test_that_bookmark_adds_subclass_bookmarks_to_bookmarked_set
18
+ refute_includes @user.bookmarked_movie_ids, @doc.id
19
+ @user.bookmark(@doc)
20
+ assert_includes @user.bookmarked_movie_ids, @doc.id
21
+ end
22
+
16
23
  def test_that_cant_bookmark_already_bookmarked_object
17
24
  assert @user.bookmark(@movie)
18
25
  assert_nil @user.bookmark(@movie)
@@ -39,6 +46,13 @@ class BookmarkerTest < MiniTest::Unit::TestCase
39
46
  refute_includes @user.bookmarked_movie_ids, @movie.id
40
47
  end
41
48
 
49
+ def test_that_unbookmark_removes_subclass_item_from_bookmarked_set
50
+ @user.bookmark(@doc)
51
+ assert_includes @user.bookmarked_movie_ids, @doc.id
52
+ @user.unbookmark(@doc)
53
+ refute_includes @user.bookmarked_movie_ids, @doc.id
54
+ end
55
+
42
56
  def test_that_cant_unbookmark_item_unless_bookmarked
43
57
  assert_nil @user.unbookmark(@movie)
44
58
  end
@@ -47,6 +61,10 @@ class BookmarkerTest < MiniTest::Unit::TestCase
47
61
  refute_includes @user.bookmarks, @movie
48
62
  @user.bookmark(@movie)
49
63
  assert_includes @user.bookmarks, @movie
64
+
65
+ refute_includes @user.bookmarks, @doc
66
+ @user.bookmark(@doc)
67
+ assert_includes @user.bookmarks, @doc
50
68
  end
51
69
 
52
70
  def test_that_dynamic_bookmarked_finder_only_returns_relevant_records
@@ -65,8 +83,9 @@ class BookmarkerTest < MiniTest::Unit::TestCase
65
83
  @user.bookmark(@movie)
66
84
  @user.bookmark(movie2)
67
85
  @user.bookmark(book)
86
+ @user.bookmark(@doc)
68
87
 
69
- assert_equal @user.bookmarks_count, 3
88
+ assert_equal @user.bookmarks_count, 4
70
89
  end
71
90
 
72
91
  def test_that_dynamic_bookmarked_count_methods_only_count_relevant_bookmarks
@@ -75,9 +94,10 @@ class BookmarkerTest < MiniTest::Unit::TestCase
75
94
 
76
95
  @user.bookmark(@movie)
77
96
  @user.bookmark(movie2)
97
+ @user.bookmark(@doc)
78
98
  @user.bookmark(book)
79
99
 
80
- assert_equal @user.bookmarked_movies_count, 2
100
+ assert_equal @user.bookmarked_movies_count, 3
81
101
  assert_equal @user.bookmarked_books_count, 1
82
102
  end
83
103
 
@@ -90,11 +110,14 @@ class BookmarkerTest < MiniTest::Unit::TestCase
90
110
  @user.bookmark(@movie)
91
111
  @user.bookmark(book)
92
112
  @user.bookmark(movie2)
113
+ @user.bookmark(@doc)
93
114
  friend.bookmark(@movie)
94
115
  friend.bookmark(book)
95
116
  friend.bookmark(book2)
117
+ friend.bookmark(@doc)
96
118
 
97
119
  assert_includes @user.bookmarks_in_common_with(friend), @movie
120
+ assert_includes @user.bookmarks_in_common_with(friend), @doc
98
121
  assert_includes @user.bookmarks_in_common_with(friend), book
99
122
  refute_includes @user.bookmarks_in_common_with(friend), movie2
100
123
  refute_includes friend.bookmarks_in_common_with(@user), book2
@@ -106,14 +129,18 @@ class BookmarkerTest < MiniTest::Unit::TestCase
106
129
  book = Factory(:book)
107
130
 
108
131
  @user.bookmark(@movie)
132
+ @user.bookmark(@doc)
109
133
  @user.bookmark(book)
110
134
  friend.bookmark(@movie)
111
135
  friend.bookmark(book)
136
+ friend.bookmark(@doc)
112
137
 
113
138
  assert_includes @user.bookmarked_movies_in_common_with(friend), @movie
139
+ assert_includes @user.bookmarked_movies_in_common_with(friend), @doc
114
140
  assert_includes @user.bookmarked_books_in_common_with(friend), book
115
141
  refute_includes @user.bookmarked_movies_in_common_with(friend), book
116
142
  refute_includes @user.bookmarked_books_in_common_with(friend), @movie
143
+ refute_includes @user.bookmarked_books_in_common_with(friend), @doc
117
144
  end
118
145
 
119
146
  def teardown
@@ -5,6 +5,7 @@ class DislikerTest < MiniTest::Unit::TestCase
5
5
  def setup
6
6
  @user = Factory(:user)
7
7
  @movie = Factory(:movie)
8
+ @doc = Factory(:documentary)
8
9
  end
9
10
 
10
11
  def test_that_dislike_adds_to_disliked_set
@@ -13,6 +14,12 @@ class DislikerTest < MiniTest::Unit::TestCase
13
14
  assert_includes @user.disliked_movie_ids, @movie.id
14
15
  end
15
16
 
17
+ def test_that_dislike_adds_subclass_dislikes_to_disliked_set
18
+ refute_includes @user.disliked_movie_ids, @doc.id
19
+ @user.dislike(@doc)
20
+ assert_includes @user.disliked_movie_ids, @doc.id
21
+ end
22
+
16
23
  def test_that_cant_dislike_already_disliked_object
17
24
  assert @user.dislike(@movie)
18
25
  assert_nil @user.dislike(@movie)
@@ -39,6 +46,13 @@ class DislikerTest < MiniTest::Unit::TestCase
39
46
  refute_includes @user.disliked_movie_ids, @movie.id
40
47
  end
41
48
 
49
+ def test_that_undislike_removes_subclass_item_from_disliked_set
50
+ @user.dislike(@doc)
51
+ assert_includes @user.disliked_movie_ids, @doc.id
52
+ @user.undislike(@doc)
53
+ refute_includes @user.disliked_movie_ids, @doc.id
54
+ end
55
+
42
56
  def test_that_cant_undislike_item_unless_disliked
43
57
  assert_nil @user.undislike(@movie)
44
58
  end
@@ -47,6 +61,10 @@ class DislikerTest < MiniTest::Unit::TestCase
47
61
  refute_includes @user.dislikes, @movie
48
62
  @user.dislike(@movie)
49
63
  assert_includes @user.dislikes, @movie
64
+
65
+ refute_includes @user.dislikes, @doc
66
+ @user.dislike(@doc)
67
+ assert_includes @user.dislikes, @doc
50
68
  end
51
69
 
52
70
  def test_that_dynamic_disliked_finder_only_returns_relevant_records
@@ -65,8 +83,9 @@ class DislikerTest < MiniTest::Unit::TestCase
65
83
  @user.dislike(@movie)
66
84
  @user.dislike(movie2)
67
85
  @user.dislike(book)
86
+ @user.dislike(@doc)
68
87
 
69
- assert_equal @user.dislikes_count, 3
88
+ assert_equal @user.dislikes_count, 4
70
89
  end
71
90
 
72
91
  def test_that_dynamic_disliked_count_methods_only_count_relevant_dislikes
@@ -75,9 +94,10 @@ class DislikerTest < MiniTest::Unit::TestCase
75
94
 
76
95
  @user.dislike(@movie)
77
96
  @user.dislike(movie2)
97
+ @user.dislike(@doc)
78
98
  @user.dislike(book)
79
99
 
80
- assert_equal @user.disliked_movies_count, 2
100
+ assert_equal @user.disliked_movies_count, 3
81
101
  assert_equal @user.disliked_books_count, 1
82
102
  end
83
103
 
@@ -90,11 +110,14 @@ class DislikerTest < MiniTest::Unit::TestCase
90
110
  @user.dislike(@movie)
91
111
  @user.dislike(book)
92
112
  @user.dislike(movie2)
113
+ @user.dislike(@doc)
93
114
  friend.dislike(@movie)
94
115
  friend.dislike(book)
95
116
  friend.dislike(book2)
117
+ friend.dislike(@doc)
96
118
 
97
119
  assert_includes @user.dislikes_in_common_with(friend), @movie
120
+ assert_includes @user.dislikes_in_common_with(friend), @doc
98
121
  assert_includes @user.dislikes_in_common_with(friend), book
99
122
  refute_includes @user.dislikes_in_common_with(friend), movie2
100
123
  refute_includes friend.dislikes_in_common_with(@user), book2
@@ -106,14 +129,18 @@ class DislikerTest < MiniTest::Unit::TestCase
106
129
  book = Factory(:book)
107
130
 
108
131
  @user.dislike(@movie)
132
+ @user.dislike(@doc)
109
133
  @user.dislike(book)
110
134
  friend.dislike(@movie)
135
+ friend.dislike(@doc)
111
136
  friend.dislike(book)
112
137
 
113
138
  assert_includes @user.disliked_movies_in_common_with(friend), @movie
139
+ assert_includes @user.disliked_movies_in_common_with(friend), @doc
114
140
  assert_includes @user.disliked_books_in_common_with(friend), book
115
141
  refute_includes @user.disliked_movies_in_common_with(friend), book
116
142
  refute_includes @user.disliked_books_in_common_with(friend), @movie
143
+ refute_includes @user.disliked_books_in_common_with(friend), @doc
117
144
  end
118
145
 
119
146
  def teardown
@@ -5,6 +5,7 @@ class HiderTest < MiniTest::Unit::TestCase
5
5
  def setup
6
6
  @user = Factory(:user)
7
7
  @movie = Factory(:movie)
8
+ @doc = Factory(:documentary)
8
9
  end
9
10
 
10
11
  def test_that_hide_adds_to_hidden_set
@@ -13,6 +14,12 @@ class HiderTest < MiniTest::Unit::TestCase
13
14
  assert_includes @user.hidden_movie_ids, @movie.id
14
15
  end
15
16
 
17
+ def test_that_like_adds_subclass_hides_to_hidden_set
18
+ refute_includes @user.hidden_movie_ids, @doc.id
19
+ @user.hide(@doc)
20
+ assert_includes @user.hidden_movie_ids, @doc.id
21
+ end
22
+
16
23
  def test_that_cant_hide_already_hidden_object
17
24
  assert @user.hide(@movie)
18
25
  assert_nil @user.hide(@movie)
@@ -39,6 +46,13 @@ class HiderTest < MiniTest::Unit::TestCase
39
46
  refute_includes @user.hidden_movie_ids, @movie.id
40
47
  end
41
48
 
49
+ def test_that_unhide_removes_subclass_item_from_hidden_set
50
+ @user.hide(@doc)
51
+ assert_includes @user.hidden_movie_ids, @doc.id
52
+ @user.unhide(@doc)
53
+ refute_includes @user.hidden_movie_ids, @doc.id
54
+ end
55
+
42
56
  def test_that_cant_unhide_item_unless_hidden
43
57
  assert_nil @user.unhide(@movie)
44
58
  end
@@ -47,6 +61,10 @@ class HiderTest < MiniTest::Unit::TestCase
47
61
  refute_includes @user.hiding, @movie
48
62
  @user.hide(@movie)
49
63
  assert_includes @user.hiding, @movie
64
+
65
+ refute_includes @user.hiding, @doc
66
+ @user.hide(@doc)
67
+ assert_includes @user.hiding, @doc
50
68
  end
51
69
 
52
70
  def test_that_dynamic_hidden_finder_only_returns_relevant_records
@@ -65,8 +83,9 @@ class HiderTest < MiniTest::Unit::TestCase
65
83
  @user.hide(@movie)
66
84
  @user.hide(movie2)
67
85
  @user.hide(book)
86
+ @user.hide(@doc)
68
87
 
69
- assert_equal @user.hidden_count, 3
88
+ assert_equal @user.hidden_count, 4
70
89
  end
71
90
 
72
91
  def test_that_dynamic_hidden_count_methods_only_count_relevant_hides
@@ -90,11 +109,14 @@ class HiderTest < MiniTest::Unit::TestCase
90
109
  @user.hide(@movie)
91
110
  @user.hide(book)
92
111
  @user.hide(movie2)
112
+ @user.hide(@doc)
93
113
  friend.hide(@movie)
94
114
  friend.hide(book)
95
115
  friend.hide(book2)
116
+ friend.hide(@doc)
96
117
 
97
118
  assert_includes @user.hiding_in_common_with(friend), @movie
119
+ assert_includes @user.hiding_in_common_with(friend), @doc
98
120
  assert_includes @user.hiding_in_common_with(friend), book
99
121
  refute_includes @user.hiding_in_common_with(friend), movie2
100
122
  refute_includes friend.hiding_in_common_with(@user), book2
@@ -106,14 +128,18 @@ class HiderTest < MiniTest::Unit::TestCase
106
128
  book = Factory(:book)
107
129
 
108
130
  @user.hide(@movie)
131
+ @user.hide(@doc)
109
132
  @user.hide(book)
110
133
  friend.hide(@movie)
134
+ friend.hide(@doc)
111
135
  friend.hide(book)
112
136
 
113
137
  assert_includes @user.hidden_movies_in_common_with(friend), @movie
138
+ assert_includes @user.hidden_movies_in_common_with(friend), @doc
114
139
  assert_includes @user.hidden_books_in_common_with(friend), book
115
140
  refute_includes @user.hidden_movies_in_common_with(friend), book
116
141
  refute_includes @user.hidden_books_in_common_with(friend), @movie
142
+ refute_includes @user.hidden_books_in_common_with(friend), @doc
117
143
  end
118
144
 
119
145
  def teardown