Skip to content

Commit 6ce6515

Browse files
committed
Adding integration tests
* Removing Ruby 1.9.3 since it's now dead * Adding multiple gemfiles to test different Rails versions * DRYing the rspec_helper require (move it to .rspec) Closes #174.
1 parent d9a1a5d commit 6ce6515

34 files changed

+127
-59
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@ pkg
44
coverage
55
Gemfile.lock
66
.rvmrc
7+
capybara-*
8+
gemfiles/*.lock
9+
log

.rspec

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
--color
22
--format=documentation
3+
--require spec_helper

.travis.yml

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1+
before_install:
2+
- gem install bundler
3+
14
rvm:
2-
- 1.9.3
35
- 2.0.0
4-
- 2.1.1
6+
- 2.1.5
7+
- 2.2.0
8+
9+
gemfile:
10+
- gemfiles/rails-4-2-stable.gemfile
11+
- gemfiles/rails-4-1-stable.gemfile
12+
- gemfiles/rails-3-2-stable.gemfile

Guardfile

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
guard :rspec, all_after_pass: true, failed_mode: :none do
22
watch(%r{^spec/.+_spec\.rb$})
33
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4+
watch(%r{^spec/fake_app/.+\.rb$}) { 'spec/integration' }
5+
46
watch('spec/spec_helper.rb') { 'spec' }
57
end

gemfiles/.bundle/config

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
BUNDLE_JOBS: 4

gemfiles/rails-3-2-stable.gemfile

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
source 'https://rubygems.org'
2+
3+
gem 'railties', '~> 3.2.0'
4+
gem 'rspec-rails', '~> 3.2.1'
5+
6+
if RUBY_VERSION >= '2.2.0'
7+
gem 'test-unit', '~> 3.0'
8+
end
9+
10+
gemspec path: '../'

gemfiles/rails-4-1-stable.gemfile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
source 'https://rubygems.org'
2+
3+
gem 'railties', '~> 4.1.0'
4+
gem 'rspec-rails', '~> 3.2.1'
5+
6+
gemspec path: '../'

gemfiles/rails-4-2-stable.gemfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
source 'https://rubygems.org'
2+
3+
gem 'launchy'
4+
gem 'railties', '~> 4.2.0'
5+
gem 'rspec-rails', '~> 3.2.1'
6+
7+
gemspec path: '../'

lib/simple_navigation/item.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def selected_by_autohighlight?
149149
end
150150

151151
def autohighlight_by_subpath?
152-
SimpleNavigation.config.highlight_on_subpath && selected_by_subpath?
152+
config.highlight_on_subpath && selected_by_subpath?
153153
end
154154

155155
def selected_by_highlights_on?

simple-navigation.gemspec

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ Gem::Specification.new do |spec|
2929

3030
spec.add_runtime_dependency 'activesupport', '>= 2.3.2'
3131

32-
spec.add_development_dependency 'actionpack', '>= 2.3.2'
3332
spec.add_development_dependency 'bundler', '~> 1.5'
33+
spec.add_development_dependency 'capybara'
3434
spec.add_development_dependency 'coveralls', '~> 0.7'
3535
spec.add_development_dependency 'guard-rspec', '~> 4.2'
3636
spec.add_development_dependency 'memfs', '~> 0.4.1'
3737
spec.add_development_dependency 'rake'
3838
spec.add_development_dependency 'rdoc'
3939
spec.add_development_dependency 'rspec', '~> 3.0'
40+
spec.add_development_dependency 'tzinfo', '>= 0'
4041
end

spec/fake_app/config/navigation.rb

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
SimpleNavigation::Configuration.run do |navigation|
2+
navigation.items do |nav|
3+
nav.item :item_1, 'Item 1', '/item_1'
4+
nav.item :item_2, 'Item 2', '/item_2'
5+
end
6+
end

spec/fake_app/rails_app.rb

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
ENV['RAILS_ENV'] ||= 'test'
2+
3+
require 'action_controller/railtie'
4+
require 'simple_navigation'
5+
6+
module RailsApp
7+
class Application < Rails::Application
8+
config.active_support.deprecation = :log
9+
config.cache_classes = true
10+
config.eager_load = false
11+
config.root = __dir__
12+
config.secret_token = 'x'*100
13+
config.session_store :cookie_store, key: '_myapp_session'
14+
end
15+
16+
class TestsController < ActionController::Base
17+
def base
18+
render inline: <<-END
19+
<!DOCTYPE html>
20+
<html>
21+
<body>
22+
<%= render_navigation %>
23+
</body>
24+
</html>
25+
END
26+
end
27+
end
28+
end
29+
30+
Rails.backtrace_cleaner.remove_silencers!
31+
RailsApp::Application.initialize!
32+
33+
RailsApp::Application.routes.draw do
34+
get '/base_spec' => 'rails_app/tests#base'
35+
end

spec/initializers/coveralls.rb

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
require 'coveralls'
2+
3+
Coveralls.wear!

spec/initializers/rails.rb

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
begin
2+
require 'rails'
3+
rescue LoadError
4+
end

spec/initializers/rspec.rb

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
RSpec.configure do |config|
2+
config.expect_with(:rspec) do |c|
3+
c.syntax = :expect
4+
end
5+
6+
config.order = :random
7+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
RSpec.feature 'Rendering navigation' do
2+
background do
3+
SimpleNavigation.set_env(RailsApp::Application.root, 'test')
4+
end
5+
6+
scenario 'Rendering basic navigation', type: :feature do
7+
visit '/base_spec'
8+
9+
expect(page).to have_content('Item 1')
10+
expect(page).to have_content('Item 2')
11+
end
12+
end

spec/simple_navigation/adapters/padrino_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Adapters
53
describe Padrino do

spec/simple_navigation/adapters/rails_spec.rb

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Adapters
53
describe Rails do
@@ -15,7 +13,8 @@ module Adapters
1513
before { allow(action_controller).to receive(:include) }
1614

1715
it 'calls set_env' do
18-
expect(simple_navigation).to receive(:set_env).with('./', 'test')
16+
app_path = RailsApp::Application.root
17+
expect(simple_navigation).to receive(:set_env).with(app_path, 'test')
1918
simple_navigation.register
2019
end
2120

spec/simple_navigation/adapters/sinatra_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
describe SimpleNavigation::Adapters::Sinatra do
42
let(:adapter) { SimpleNavigation::Adapters::Sinatra.new(context) }
53
let(:context) { double(:context) }

spec/simple_navigation/config_file_finder_spec.rb

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
require 'spec_helper'
21
require 'fileutils'
32
require 'simple_navigation/config_file_finder'
43

spec/simple_navigation/configuration_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
describe Configuration do
53
subject(:config) { Configuration.instance }

spec/simple_navigation/helpers_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
describe Helpers do
53
subject(:controller) { test_controller_class.new }

spec/simple_navigation/item_adapter_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
describe ItemAdapter do
53
let(:item_adapter) { ItemAdapter.new(item) }

spec/simple_navigation/item_container_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
describe ItemContainer do
53
subject(:item_container) { ItemContainer.new }

spec/simple_navigation/item_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
describe Item do
53
let!(:item_container) { ItemContainer.new }

spec/simple_navigation/items_provider_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
describe ItemsProvider do
53
let(:items_provider) { ItemsProvider.new(provider) }

spec/simple_navigation/renderer/base_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Renderer
53
describe Base do

spec/simple_navigation/renderer/breadcrumbs_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Renderer
53
describe Breadcrumbs do

spec/simple_navigation/renderer/json_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Renderer
53
describe Json do

spec/simple_navigation/renderer/links_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Renderer
53
describe Links do

spec/simple_navigation/renderer/list_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Renderer
53
describe List do

spec/simple_navigation/renderer/text_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
module SimpleNavigation
42
module Renderer
53
describe Text do

spec/simple_navigation_spec.rb

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
require 'spec_helper'
2-
31
describe SimpleNavigation do
42
before { subject.config_file_path = 'path_to_config' }
53

spec/spec_helper.rb

+14-21
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,27 @@
11
require 'initializers/have_css_matcher'
22
require 'initializers/memfs'
3-
require 'action_controller'
4-
require 'coveralls'
5-
require 'action_view'
3+
require 'initializers/coveralls'
4+
require 'initializers/rails'
5+
require 'initializers/rspec'
6+
require 'capybara/rspec'
67

7-
Coveralls.wear!
8+
require 'bundler/setup'
9+
Bundler.require
810

9-
RSpec.configure do |config|
10-
config.expect_with(:rspec) { |c| c.syntax = :expect }
11-
config.order = :random
11+
if defined? Rails
12+
require 'fake_app/rails_app'
13+
require 'rspec/rails'
1214

13-
config.before do
14-
SimpleNavigation.config_files.clear
15-
setup_adapter_for :rails
16-
end
17-
end
15+
Capybara.app = RailsApp::Application
1816

19-
unless defined?(Rails)
20-
module ::Rails
21-
def self.root; './'; end
22-
def self.env; 'test'; end
23-
24-
class Railtie
25-
def self.initializer(*args); end
17+
RSpec.configure do |config|
18+
config.before do
19+
SimpleNavigation.config_files.clear
20+
setup_adapter_for :rails
2621
end
2722
end
2823
end
2924

30-
require 'simple_navigation'
31-
3225
def setup_adapter_for(framework, context = double(:context))
3326
if framework == :rails
3427
allow(context).to receive_messages(view_context: ActionView::Base.new)

0 commit comments

Comments
 (0)