diff --git a/.rvmrc b/.rvmrc deleted file mode 100644 index 45f8864..0000000 --- a/.rvmrc +++ /dev/null @@ -1 +0,0 @@ -rvm use --create ruby-1.9.3-p194-perf@somanyfeeds diff --git a/Gemfile b/Gemfile index d7ce00a..90c35fa 100644 --- a/Gemfile +++ b/Gemfile @@ -1,26 +1,23 @@ -source :rubygems -ruby '1.9.3' +source 'https://rubygems.org' +ruby '2.0.0' -gem 'rake', '10.0.3' -gem 'activesupport', '3.2.11' -gem 'sinatra', '1.3.3' -gem 'haml', '3.1.7' -gem 'sass', '3.2.5' +gem 'rake', '10.1.0' +gem 'activesupport', '3.2.13' +gem 'sinatra', '1.4.3' +gem 'haml', '4.0.3' +gem 'sass', '3.2.9' gem 'compass', '0.12.2' -gem 'mongoid', '3.0.19' -gem 'bson_ext', '1.8.2' -gem 'jammit', '0.6.5' -gem 'nokogiri', '1.5.6' +gem 'mongoid', '3.1.4' +gem 'bson_ext', '1.9.0' +gem 'jammit', '0.6.6' +gem 'nokogiri', '1.6.0' gem 'racksh', '1.0.0' group :development, :test do - gem 'ZenTest', '4.8.3' - gem 'rspec', '2.9.0' - gem 'mongoid-rspec', '1.5.6' - gem 'database_cleaner', '0.9.1' + gem 'rspec', '2.13.0' + gem 'mongoid-rspec', '1.8.2' + gem 'database_cleaner', '1.0.1' gem 'forgery', '0.5.0' - gem 'capybara', '2.0.2' - gem 'selenium-client', '1.2.18' - gem 'debugger', '1.2.4' - gem 'awesome_print', :require => 'ap', '1.1.0' + gem 'debugger', '1.6.0' + gem 'awesome_print', '1.1.0', require: 'ap' end diff --git a/Gemfile.lock b/Gemfile.lock index fcf920d..d6a5c8e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,146 +1,99 @@ GEM - remote: http://rubygems.org/ + remote: https://rubygems.org/ specs: - POpen4 (0.1.4) - Platform (>= 0.4.0) - open4 - Platform (0.4.0) - ZenTest (4.8.3) - activemodel (3.2.11) - activesupport (= 3.2.11) + activemodel (3.2.13) + activesupport (= 3.2.13) builder (~> 3.0.0) - activesupport (3.2.11) - i18n (~> 0.6) + activesupport (3.2.13) + i18n (= 0.6.1) multi_json (~> 1.0) - autotest (4.4.6) - ZenTest (>= 4.4.1) awesome_print (1.1.0) - bson (1.8.2) - bson_ext (1.8.2) - bson (~> 1.8.2) + bson (1.9.0) + bson_ext (1.9.0) + bson (~> 1.9.0) builder (3.0.4) - capistrano (2.14.1) - highline - net-scp (>= 1.0.0) - net-sftp (>= 2.0.0) - net-ssh (>= 2.0.14) - net-ssh-gateway (>= 1.1.0) - capybara (2.0.2) - mime-types (>= 1.16) - nokogiri (>= 1.3.3) - rack (>= 1.0.0) - rack-test (>= 0.5.4) - selenium-webdriver (~> 2.0) - xpath (~> 1.0.0) - childprocess (0.3.7) - ffi (~> 1.0, >= 1.0.6) - chunky_png (1.2.7) + chunky_png (1.2.8) columnize (0.3.6) compass (0.12.2) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) - database_cleaner (0.9.1) - debugger (1.2.4) + cssmin (1.0.3) + database_cleaner (1.0.1) + debugger (1.6.0) columnize (>= 0.3.1) - debugger-linecache (~> 1.1.1) - debugger-ruby_core_source (~> 1.1.7) - debugger-linecache (1.1.2) - debugger-ruby_core_source (>= 1.1.1) - debugger-ruby_core_source (1.1.7) - diff-lcs (1.1.3) - ffi (1.3.1) + debugger-linecache (~> 1.2.0) + debugger-ruby_core_source (~> 1.2.1) + debugger-linecache (1.2.0) + debugger-ruby_core_source (1.2.3) + diff-lcs (1.2.4) forgery (0.5.0) - fssm (0.2.9) - haml (3.1.7) - highline (1.6.15) + fssm (0.2.10) + haml (4.0.3) + tilt i18n (0.6.1) - jammit (0.6.5) - yui-compressor (>= 0.9.3) - mime (0.1) - mime-types (1.19) - mongoid (3.0.19) - activemodel (~> 3.1) - moped (~> 1.2) + jammit (0.6.6) + cssmin (>= 1.0.3) + jsmin (>= 1.0.1) + jsmin (1.0.1) + mini_portile (0.5.0) + mongoid (3.1.4) + activemodel (~> 3.2) + moped (~> 1.4) origin (~> 1.0) tzinfo (~> 0.3.22) - mongoid-rspec (1.5.6) + mongoid-rspec (1.8.2) mongoid (>= 3.0.1) rake rspec (>= 2.9) - moped (1.3.2) - multi_json (1.5.0) - net-scp (1.0.4) - net-ssh (>= 1.99.1) - net-sftp (2.0.5) - net-ssh (>= 2.0.9) - net-ssh (2.6.3) - net-ssh-gateway (1.1.0) - net-ssh (>= 1.99.1) - nokogiri (1.5.6) - open4 (1.3.0) - origin (1.0.11) - rack (1.5.0) - rack-protection (1.3.2) + moped (1.5.0) + multi_json (1.7.7) + nokogiri (1.6.0) + mini_portile (~> 0.5.0) + origin (1.1.0) + rack (1.5.2) + rack-protection (1.5.0) rack rack-test (0.6.2) rack (>= 1.0) racksh (1.0.0) rack (>= 1.0) rack-test (>= 0.5) - rake (10.0.3) - rspec (2.9.0) - rspec-core (~> 2.9.0) - rspec-expectations (~> 2.9.0) - rspec-mocks (~> 2.9.0) - rspec-core (2.9.0) - rspec-expectations (2.9.1) - diff-lcs (~> 1.1.3) - rspec-mocks (2.9.0) - rubyzip (0.9.9) - sass (3.2.5) - selenium-client (1.2.18) - selenium-webdriver (2.29.0) - childprocess (>= 0.2.5) - multi_json (~> 1.0) - rubyzip - websocket (~> 1.0.4) - sinatra (1.3.3) - rack (~> 1.3, >= 1.3.6) - rack-protection (~> 1.2) - tilt (~> 1.3, >= 1.3.3) - tilt (1.3.3) - tzinfo (0.3.35) - websocket (1.0.6) - xpath (1.0.0) - nokogiri (~> 1.3) - yui-compressor (0.9.6) - POpen4 (>= 0.1.4) + rake (10.1.0) + rspec (2.13.0) + rspec-core (~> 2.13.0) + rspec-expectations (~> 2.13.0) + rspec-mocks (~> 2.13.0) + rspec-core (2.13.1) + rspec-expectations (2.13.0) + diff-lcs (>= 1.1.3, < 2.0) + rspec-mocks (2.13.1) + sass (3.2.9) + sinatra (1.4.3) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) + tilt (1.4.1) + tzinfo (0.3.37) PLATFORMS ruby DEPENDENCIES - ZenTest (= 4.8.3) - activesupport - autotest - awesome_print - bson_ext - capistrano - capybara (>= 1.0.0.beta1) - compass - database_cleaner - debugger - forgery (>= 0.3.6) - haml - jammit - mime - mongoid - mongoid-rspec (>= 1.3.2) - nokogiri - racksh - rake - rspec (~> 2.9.0) - sass - selenium-client - sinatra + activesupport (= 3.2.13) + awesome_print (= 1.1.0) + bson_ext (= 1.9.0) + compass (= 0.12.2) + database_cleaner (= 1.0.1) + debugger (= 1.6.0) + forgery (= 0.5.0) + haml (= 4.0.3) + jammit (= 0.6.6) + mongoid (= 3.1.4) + mongoid-rspec (= 1.8.2) + nokogiri (= 1.6.0) + racksh (= 1.0.0) + rake (= 10.1.0) + rspec (= 2.13.0) + sass (= 3.2.9) + sinatra (= 1.4.3) diff --git a/app/models/feed/parser.rb b/app/models/feed/parser.rb index ff6ba66..6dea653 100644 --- a/app/models/feed/parser.rb +++ b/app/models/feed/parser.rb @@ -27,7 +27,7 @@ def parse xml = open(url, 'r', read_timeout: 5.0) RSS::Parser.parse(xml) rescue Exception => e - return if test? + return if RACK_ENV == 'test' $stderr.puts "**************************************************" $stderr.puts "There was an error fetching the feed #{name}, for #{user.try(:to_label) || 'no user'}" diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 840f8af..83b4891 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,17 +1,18 @@ require 'spec_helper' describe User do - subject { create_user } + subject { @user } - before(:all) do + before do User.delete_all + @user = create_user (0..4).each do |num| - subject.feeds << Feed.new(name: "Some Feed #{num}", default: true) + @user.feeds << Feed.new(name: "Some Feed #{num}", default: true) end end - after(:all) { User.delete_all } + after { User.delete_all } describe 'Persistence' do it { should be_valid } @@ -19,10 +20,10 @@ end describe '#to_label' do - before(:all) do - subject.name = 'Foo' - subject.username = 'Bar' - subject.email = 'foo@bar.baz' + before do + @user.name = 'Foo' + @user.username = 'Bar' + @user.email = 'foo@bar.baz' end context 'with name' do @@ -30,48 +31,48 @@ end context 'without name' do - before { subject.name = nil } + before { @user.name = nil } its(:to_label) { should == 'Bar' } end context 'without name, without username' do - before { subject.name = nil; subject.username = nil } + before { @user.name = nil; @user.username = nil } its(:to_label) { should == 'foo@bar.baz' } end end describe '#default_sources and #all_sources' do it "should be a list of feed slugs" do - (subject.default_sources + subject.all_sources).each do |src| + (@user.default_sources + @user.all_sources).each do |src| src.should =~ /^Some-Feed-[0-4]$/ end end it "#default_sources should only include feeds with the default flag" do - subject.default_sources.size.should == 5 - subject.all_sources.size.should == 5 + @user.default_sources.size.should == 5 + @user.all_sources.size.should == 5 - feed = subject.feeds.last + feed = @user.feeds.last feed.default = false feed.save - subject.default_sources.size.should == 4 - subject.all_sources.size.should == 5 + @user.default_sources.size.should == 4 + @user.all_sources.size.should == 5 end end describe '#update!' do it "should call update on each feed" do - subject.feeds.each{|f| f.should_receive(:update!)} - subject.update! + @user.feeds.each{|f| f.should_receive(:update!)} + @user.update! end context "with a deleted feed" do before do - 3.times { new_article user: subject, source: 'Foo' } - subject.articles.size.should == 3 - subject.update! - subject.reload + 3.times { new_article user: @user, source: 'Foo' } + @user.articles.size.should == 3 + @user.update! + @user.reload end its(:articles) { should be_empty } @@ -79,25 +80,24 @@ end describe '#feed' do - subject { new_user } + before do + @user = new_user + @user.feeds = [new_feed] + @user.save! - before(:all) do - subject.feeds = [new_feed] - subject.save! - - @id = subject.feeds.last.id + @id = @user.feeds.last.id end - after(:all) do - subject.destroy + after do + @user.destroy end it 'should find a user feed with corresponding id' do - subject.feed(@id).should be_present + @user.feed(@id).should be_present end it 'should return nil if no feed found' do - subject.feed(Moped::BSON::ObjectId.new).should be_blank + @user.feed(Moped::BSON::ObjectId.new).should be_blank end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 56b9ffe..5b1ca1f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -15,8 +15,6 @@ # in spec/support/ and its subdirectories. Dir[ File.join(RACK_ROOT, 'spec/support/**/*.rb') ].each {|f| require f} -Capybara.default_driver = :selenium - RSpec.configure do |config| config.mock_with :rspec config.include ObjectCreationMethods diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb deleted file mode 100644 index 15bea11..0000000 --- a/spec/support/capybara.rb +++ /dev/null @@ -1,56 +0,0 @@ -require 'capybara' -require 'capybara/dsl' - -module SoManyFeeds::IntegrationExampleGroup - - module Application - - include Rack::Test::Methods - include Capybara::DSL - include RSpec::Matchers - - def last_response - page - end - - end - - module Aggregator - - include Application - extend ActiveSupport::Concern - - included do - before { Capybara.app = app } - end - - def app - SoManyFeeds::Aggregator - end - - RSpec.configure do |c| - c.include self, example_group: { file_path: /\bspec\/acceptance\/aggregator\// } - end - - end - - module Manager - - include Application - extend ActiveSupport::Concern - - included do - before { Capybara.app = app } - end - - def app - SoManyFeeds::Manager - end - - RSpec.configure do |c| - c.include self, example_group: { file_path: /\bspec\/acceptance\/manager\// } - end - - end - -end diff --git a/spec/support/selenium.rb b/spec/support/selenium.rb deleted file mode 100644 index 6be6308..0000000 --- a/spec/support/selenium.rb +++ /dev/null @@ -1,3 +0,0 @@ -require 'selenium/client' -require 'selenium/webdriver' -Selenium::WebDriver::Firefox::Binary.path = '/Applications/Firefox4.app/Contents/MacOS/firefox'