Merged updates from trunk into stable branch
[feedcatcher.git] / test / unit / feed_item_test.rb
index 2078dc349a0c9c695ecf6bdb8037a57afab2ab60..869bf9adf88ded48e7a84aba3a48dd415f6e511c 100644 (file)
@@ -1,8 +1,59 @@
 require 'test_helper'
 
 class FeedItemTest < ActiveSupport::TestCase
-  # Replace this with your real tests.
-  test "the truth" do
-    assert true
+
+  fixtures :feed_items
+
+  test "invalid with empty attributes" do
+    feed_item = FeedItem.new
+    assert !feed_item.valid?
+    assert feed_item.errors.invalid?(:feed_name)
+    assert feed_item.errors.invalid?(:title)
+    assert feed_item.errors.invalid?(:description)
+  end
+
+  test "illegal feed names" do
+    bad_feed_names = ["name with spaces", "name%20with%20spaces", "action", "index", "show", "update"]
+
+    bad_feed_names.each do |feed_name|
+      feed_item = FeedItem.new(:feed_name => feed_name,
+        :title => "Sample title",
+        :description => "Sample description")
+      assert !feed_item.valid?
+      assert_equal "is an invalid feed name", feed_item.errors.on(:feed_name)
+    end
+  end
+
+  test "legal feed names" do
+    bad_feed_names = %w{ feed1 afeed a_feed a-feed a_long_feed_name }
+
+    bad_feed_names.each do |feed_name|
+      feed_item = FeedItem.new(:feed_name => feed_name,
+        :title => "Sample title",
+        :description => "Sample description")
+      assert feed_item.valid?
+    end
+  end
+
+  test "duplicate descriptions" do
+    feed_item = FeedItem.new(:feed_name => 'feed_one',
+      :title => 'feed one item four',
+      :description => 'feed one item one')
+    assert feed_item.valid?
+    assert feed_item.save
+  end
+
+  test "duplicate titles in one feed" do
+    feed_item = FeedItem.new(:feed_name => 'feed_one',
+      :title => 'feed one item one',
+      :description => 'new feed item one')
+    assert !feed_item.valid?
+  end
+
+  test "duplicate titles in different feeds" do
+    feed_item = FeedItem.new(:feed_name => 'feed_two',
+      :title => 'feed one item one',
+      :description => 'new feed one item one')
+    assert feed_item.valid?
   end
 end