test/unread_test.rb in unread-0.1.2 vs test/unread_test.rb in unread-0.2.0
- old
+ new
@@ -7,161 +7,159 @@
wait
@email1 = Email.create!
wait
@email2 = Email.create!
end
-
+
def teardown
Reader.delete_all
Email.delete_all
ReadMark.delete_all
end
-
+
def test_schema_has_loaded_correctly
assert_equal [@email1, @email2], Email.all
end
-
+
def test_readable_classes
assert_equal [ Email ], ReadMark.readable_classes
end
-
+
def test_reader_class
assert_equal Reader, ReadMark.reader_class
end
def test_scope
assert_equal [@email1, @email2], Email.unread_by(@reader)
assert_equal [@email1, @email2], Email.unread_by(@other_reader)
-
+
assert_equal 2, Email.unread_by(@reader).count
assert_equal 2, Email.unread_by(@other_reader).count
end
-
+
def test_with_read_marks_for
@email1.mark_as_read! :for => @reader
-
+
emails = Email.with_read_marks_for(@reader).all
assert emails[0].read_mark_id.present?
assert emails[1].read_mark_id.nil?
-
+
assert_equal false, emails[0].unread?(@reader)
assert_equal true, emails[1].unread?(@reader)
end
-
+
def test_scope_param_check
[ 42, nil, 'foo', :foo, {} ].each do |not_a_reader|
assert_raise(ArgumentError) { Email.unread_by(not_a_reader)}
assert_raise(ArgumentError) { Email.with_read_marks_for(not_a_reader)}
end
-
+
unsaved_reader = Reader.new
assert_raise(ArgumentError) { Email.unread_by(unsaved_reader)}
assert_raise(ArgumentError) { Email.with_read_marks_for(unsaved_reader)}
end
-
+
def test_scope_after_reset
@email1.mark_as_read! :for => @reader
-
+
assert_equal [@email2], Email.unread_by(@reader)
assert_equal 1, Email.unread_by(@reader).count
end
def test_unread_after_create
assert_equal true, @email1.unread?(@reader)
assert_equal true, @email1.unread?(@other_reader)
-
+
assert_raise(ArgumentError) {
@email1.unread?(42)
}
end
-
+
def test_unread_after_update
@email1.mark_as_read! :for => @reader
wait
@email1.update_attributes! :subject => 'changed'
assert_equal true, @email1.unread?(@reader)
end
-
+
def test_mark_as_read
@email1.mark_as_read! :for => @reader
-
+
assert_equal false, @email1.unread?(@reader)
assert_equal [@email2], Email.unread_by(@reader)
-
+
assert_equal true, @email1.unread?(@other_reader)
assert_equal [@email1, @email2], Email.unread_by(@other_reader)
-
+
assert_equal 1, @reader.read_marks.single.count
assert_equal @email1, @reader.read_marks.single.first.readable
end
-
+
def test_mark_as_read_multiple
assert_equal true, @email1.unread?(@reader)
assert_equal true, @email2.unread?(@reader)
-
+
Email.mark_as_read! [ @email1, @email2 ], :for => @reader
-
+
assert_equal false, @email1.unread?(@reader)
assert_equal false, @email2.unread?(@reader)
end
-
+
def test_mark_as_read_with_marked_all
wait
-
+
Email.mark_as_read! :all, :for => @reader
@email1.mark_as_read! :for => @reader
-
+
assert_equal [], @reader.read_marks.single
end
-
+
def test_mark_as_read_twice
@email1.mark_as_read! :for => @reader
@email1.mark_as_read! :for => @reader
-
+
assert_equal 1, @reader.read_marks.single.count
end
-
+
def test_mark_all_as_read
Email.mark_as_read! :all, :for => @reader
assert_equal Time.now.to_s, @reader.read_mark_global(Email).try(:timestamp).to_s
-
+
assert_equal [], @reader.read_marks.single
assert_equal 0, ReadMark.single.count
assert_equal 2, ReadMark.global.count
end
-
+
def test_cleanup_read_marks
assert_equal 0, @reader.read_marks.single.count
-
+
@email1.mark_as_read! :for => @reader
-
+
assert_equal [@email2], Email.unread_by(@reader)
assert_equal 1, @reader.read_marks.single.count
-
- Email.cleanup_read_marks!
-
+
+ Email.cleanup_read_marks!
+
@reader.reload
assert_equal 0, @reader.read_marks.single.count
end
-
+
def test_cleanup_read_marks_not_delete_from_other_readables
other_read_mark = @reader.read_marks.create! :readable_type => 'Foo', :readable_id => 42, :timestamp => 5.years.ago
Email.cleanup_read_marks!
assert_equal true, ReadMark.exists?(other_read_mark.id)
end
-
+
def test_reset_read_marks_for_all
- Email.reset_read_marks!
-
+ Email.reset_read_marks_for_all
+
assert_equal 0, ReadMark.single.count
assert_equal 2, ReadMark.global.count
end
-
+
private
def wait
- # Skip one second
- now = Time.now + 1.second
- Time.stubs(:now).returns(now)
+ Timecop.travel(1.minute)
end
-end
\ No newline at end of file
+end