From 5286275b37ab4a323379b6658a9c6d1e7cebfd46 Mon Sep 17 00:00:00 2001
From: Neil Smith <neil.git@njae.me.uk>
Date: Mon, 6 Jan 2014 08:48:30 +0000
Subject: [PATCH] Tests for FeedItem model installed and passed

---
 config/application.rb         |  1 +
 spec/models/feed_item_spec.rb | 52 ++++++++++++++++++++++++++++++++++-
 spec/spec_helper.rb           | 42 ++++++++++++++++++++++++++++
 3 files changed, 94 insertions(+), 1 deletion(-)
 create mode 100644 spec/spec_helper.rb

diff --git a/config/application.rb b/config/application.rb
index 71c84ef..d277bac 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -19,5 +19,6 @@ module Feedcatcher
     # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
     # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
     # config.i18n.default_locale = :de
+    config.i18n.enforce_available_locales = false
   end
 end
diff --git a/spec/models/feed_item_spec.rb b/spec/models/feed_item_spec.rb
index 68eddb0..f932e43 100644
--- a/spec/models/feed_item_spec.rb
+++ b/spec/models/feed_item_spec.rb
@@ -1,5 +1,55 @@
 require 'spec_helper'
 
 describe FeedItem do
-  pending "add some examples to (or delete) #{__FILE__}"
+  before(:each) do
+    @feed_item = FeedItem.new(
+      :feed_name => "feed",
+      :title => "foo",
+      :description => "bar"
+    )
+  end
+
+  it "is valid with valid attributes" do
+    expect(@feed_item).to be_valid
+  end
+
+  it "is not valid without a feed name" do
+    @feed_item.feed_name = nil
+    expect(@feed_item).not_to be_valid
+  end
+
+  it "is not valid without a title" do
+    @feed_item.title = nil
+    expect(@feed_item).not_to be_valid
+  end
+
+  it "is not valid without a description" do
+    @feed_item.description = nil
+    expect(@feed_item).not_to be_valid
+  end
+
+  it "is not valid with an improper feed name" do
+    @feed_item.feed_name = 'feed name'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'feed%20name'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'feed&name'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'feed%26name'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'feed<name'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'feed%3Cname'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'feed%name'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'index'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'show'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'update'
+    expect(@feed_item).not_to be_valid
+    @feed_item.feed_name = 'action'
+    expect(@feed_item).not_to be_valid
+  end
 end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
new file mode 100644
index 0000000..943bc19
--- /dev/null
+++ b/spec/spec_helper.rb
@@ -0,0 +1,42 @@
+# This file is copied to spec/ when you run 'rails generate rspec:install'
+ENV["RAILS_ENV"] ||= 'test'
+require File.expand_path("../../config/environment", __FILE__)
+require 'rspec/rails'
+require 'rspec/autorun'
+
+# Requires supporting ruby files with custom matchers and macros, etc,
+# in spec/support/ and its subdirectories.
+Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
+
+# Checks for pending migrations before tests are run.
+# If you are not using ActiveRecord, you can remove this line.
+ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
+
+RSpec.configure do |config|
+  # ## Mock Framework
+  #
+  # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
+  #
+  # config.mock_with :mocha
+  # config.mock_with :flexmock
+  # config.mock_with :rr
+
+  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
+  config.fixture_path = "#{::Rails.root}/spec/fixtures"
+
+  # If you're not using ActiveRecord, or you'd prefer not to run each of your
+  # examples within a transaction, remove the following line or assign false
+  # instead of true.
+  config.use_transactional_fixtures = true
+
+  # If true, the base class of anonymous controllers will be inferred
+  # automatically. This will be the default behavior in future versions of
+  # rspec-rails.
+  config.infer_base_class_for_anonymous_controllers = false
+
+  # Run specs in random order to surface order dependencies. If you find an
+  # order dependency and want to debug it, you can fix the order by providing
+  # the seed, which is printed after each run.
+  #     --seed 1234
+  config.order = "random"
+end
-- 
2.43.0