Add some more model tests for notes and note comments
authorTom Hughes <tom@compton.nu>
Thu, 16 Oct 2014 19:36:40 +0000 (20:36 +0100)
committerTom Hughes <tom@compton.nu>
Thu, 16 Oct 2014 19:36:40 +0000 (20:36 +0100)
test/models/note_comment_test.rb
test/models/note_test.rb [new file with mode: 0644]

index d1210f6193fed8717530706a2a14b86c365f7c79..75707d79b811837d08cbb582b890fa784fb4eb9c 100644 (file)
@@ -4,6 +4,23 @@ require 'test_helper'
 class NoteCommentTest < ActiveSupport::TestCase
   fixtures :users, :notes, :note_comments
 
+  def test_event_valid
+    ok = [ "opened", "closed", "reopened", "commented", "hidden" ]
+    bad = [ "expropriated", "fubared" ]
+
+    ok.each do |event|
+      note_comment = note_comments(:t1)
+      note_comment.event = event
+      assert note_comment.valid?, "#{event} is invalid, when it should be"
+    end
+
+    bad.each do |event|
+      note_comment = note_comments(:t1)
+      note_comment.event = event
+      assert !note_comment.valid?, "#{event} is valid when it shouldn't be"
+    end
+  end
+
   def test_body_valid
     ok = [ "Name", "vergrößern", "foo\x0abar",
            "ルシステムにも対応します", "輕觸搖晃的遊戲", ]
@@ -15,7 +32,7 @@ class NoteCommentTest < ActiveSupport::TestCase
       note_comment.body = body
       assert note_comment.valid?, "#{body} is invalid, when it should be"
     end
-    
+
     bad.each do |body|
       note_comment = note_comments(:t1)
       note_comment.body = body
diff --git a/test/models/note_test.rb b/test/models/note_test.rb
new file mode 100644 (file)
index 0000000..39efc7f
--- /dev/null
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+require 'test_helper'
+
+class NoteTest < ActiveSupport::TestCase
+  fixtures :users, :notes, :note_comments
+
+  def test_status_valid
+    ok = [ "open", "closed", "hidden" ]
+    bad = [ "expropriated", "fubared" ]
+
+    ok.each do |status|
+      note = notes(:open_note)
+      note.status = status
+      assert note.valid?, "#{status} is invalid, when it should be"
+    end
+
+    bad.each do |status|
+      note = notes(:open_note)
+      note.status = status
+      assert !note.valid?, "#{status} is valid when it shouldn't be"
+    end
+  end
+
+  def test_close
+    note = notes(:open_note)
+    assert_equal "open", note.status
+    assert_nil note.closed_at
+    note.close
+    assert_equal "closed", note.status
+    assert_not_nil note.closed_at
+  end
+
+  def test_close
+    note = notes(:closed_note_with_comment)
+    assert_equal "closed", note.status
+    assert_not_nil note.closed_at
+    note.reopen
+    assert_equal "open", note.status
+    assert_nil note.closed_at
+  end
+
+  def test_visible?
+    assert_equal true, notes(:open_note).visible?
+    assert_equal true, notes(:note_with_hidden_comment).visible?
+    assert_equal false, notes(:hidden_note_with_comment).visible?
+  end
+
+  def test_closed?
+    assert_equal true, notes(:closed_note_with_comment).closed?
+    assert_equal false, notes(:open_note).closed?
+  end
+
+  def test_author
+    assert_nil notes(:open_note).author
+    assert_equal users(:normal_user), notes(:note_with_comments_by_users).author
+  end
+
+  def test_author_ip
+    assert_equal IPAddr.new("192.168.1.1"), notes(:open_note).author_ip
+    assert_nil notes(:note_with_comments_by_users).author_ip
+  end
+end