recommendable 2.1.2 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
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