Skip to content

Commit 7de033e

Browse files
committed
Added integration tests.
1 parent d0a6441 commit 7de033e

File tree

10 files changed

+123
-27
lines changed

10 files changed

+123
-27
lines changed

.travis.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,13 @@ cache: bundler
88
services:
99
- mongodb
1010

11+
addons:
12+
firefox: 54.0
13+
14+
before_install:
15+
- export DISPLAY=:99.0
16+
- sh -e /etc/init.d/xvfb start
17+
- wget https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-linux64.tar.gz
18+
- mkdir geckodriver
19+
- tar -xzf geckodriver-v0.18.0-linux64.tar.gz -C geckodriver
20+
- export PATH=$PATH:$PWD/geckodriver

Gemfile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,18 @@ ruby '2.3.1'
44

55
gem 'mongoid'
66
gem 'mongoid-scroll'
7-
gem 'slack-ruby-bot-server'
87
gem 'newrelic-slack-ruby-bot'
8+
gem 'slack-ruby-bot-server'
99

1010
group :test do
11-
gem 'rake'
12-
gem 'rspec'
11+
gem 'capybara'
12+
gem 'database_cleaner'
1313
gem 'fabrication'
1414
gem 'faker'
15+
gem 'rack-test'
16+
gem 'rake'
17+
gem 'rspec'
18+
gem 'selenium-webdriver'
1519
gem 'vcr'
1620
gem 'webmock'
17-
gem 'database_cleaner'
18-
gem 'rack-test'
1921
end

Gemfile.lock

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ GEM
1616
thread_safe (~> 0.3, >= 0.3.1)
1717
bson (4.2.2)
1818
builder (3.2.3)
19+
capybara (2.15.1)
20+
addressable
21+
mini_mime (>= 0.1.3)
22+
nokogiri (>= 1.3.3)
23+
rack (>= 1.0.0)
24+
rack-test (>= 0.5.4)
25+
xpath (~> 2.0)
1926
celluloid (0.17.3)
2027
celluloid-essentials
2128
celluloid-extras
@@ -37,6 +44,8 @@ GEM
3744
timers (>= 4.1.1)
3845
celluloid-supervision (0.20.6)
3946
timers (>= 4.1.1)
47+
childprocess (0.7.1)
48+
ffi (~> 1.0, >= 1.0.11)
4049
coercible (1.0.0)
4150
descendants_tracker (~> 0.0.1)
4251
concurrent-ruby (1.0.5)
@@ -56,6 +65,7 @@ GEM
5665
multipart-post (>= 1.2, < 3)
5766
faraday_middleware (0.12.2)
5867
faraday (>= 0.7.4, < 1.0)
68+
ffi (1.9.18)
5969
foreman (0.84.0)
6070
thor (~> 0.19.1)
6171
gli (2.16.1)
@@ -83,6 +93,8 @@ GEM
8393
grape
8494
kaminari-core (~> 1.0)
8595
kgio (2.11.0)
96+
mini_mime (0.1.3)
97+
mini_portile2 (2.2.0)
8698
minitest (5.10.3)
8799
mongo (2.4.3)
88100
bson (>= 4.2.1, < 5.0.0)
@@ -106,6 +118,8 @@ GEM
106118
slack-ruby-bot
107119
newrelic_rpm (4.3.0.335)
108120
nio4r (2.1.0)
121+
nokogiri (1.8.0)
122+
mini_portile2 (~> 2.2.0)
109123
public_suffix (2.0.5)
110124
rack (2.0.3)
111125
rack-accept (0.4.5)
@@ -137,7 +151,11 @@ GEM
137151
diff-lcs (>= 1.2.0, < 2.0)
138152
rspec-support (~> 3.6.0)
139153
rspec-support (3.6.0)
154+
rubyzip (1.2.1)
140155
safe_yaml (1.0.4)
156+
selenium-webdriver (3.4.4)
157+
childprocess (~> 0.5)
158+
rubyzip (~> 1.0)
141159
slack-ruby-bot (0.10.4)
142160
hashie
143161
slack-ruby-client (>= 0.6.0)
@@ -184,11 +202,14 @@ GEM
184202
websocket-driver (0.6.5)
185203
websocket-extensions (>= 0.1.0)
186204
websocket-extensions (0.1.2)
205+
xpath (2.1.0)
206+
nokogiri (~> 1.3)
187207

188208
PLATFORMS
189209
ruby
190210

191211
DEPENDENCIES
212+
capybara
192213
database_cleaner
193214
fabrication
194215
faker
@@ -198,6 +219,7 @@ DEPENDENCIES
198219
rack-test
199220
rake
200221
rspec
222+
selenium-webdriver
201223
slack-ruby-bot-server
202224
vcr
203225
webmock
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
require 'spec_helper'
2+
3+
describe 'Add to Slack', js: true, type: :feature do
4+
before do
5+
ENV['SLACK_CLIENT_ID'] = 'client_id'
6+
ENV['SLACK_CLIENT_SECRET'] = 'client_secret'
7+
end
8+
after do
9+
ENV.delete 'SLACK_CLIENT_ID'
10+
ENV.delete 'SLACK_CLIENT_SECRET'
11+
end
12+
it 'registers a team' do
13+
allow_any_instance_of(Team).to receive(:ping!).and_return(ok: true)
14+
expect(SlackRubyBotServer::Service.instance).to receive(:start!)
15+
oauth_access = { 'bot' => { 'bot_access_token' => 'token' }, 'team_id' => 'team_id', 'team_name' => 'team_name' }
16+
allow_any_instance_of(Slack::Web::Client).to receive(:oauth_access).with(hash_including(code: 'code')).and_return(oauth_access)
17+
expect do
18+
visit '/?code=code'
19+
expect(page.find('#messages')).to have_content 'Team successfully registered!'
20+
end.to change(Team, :count).by(1)
21+
end
22+
end

spec/integration/index_spec.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require 'spec_helper'
2+
3+
describe 'index.html', js: true, type: :feature do
4+
before do
5+
ENV['SLACK_CLIENT_ID'] = 'slack-client-id'
6+
visit '/'
7+
end
8+
after do
9+
ENV.delete 'SLACK_CLIENT_ID'
10+
end
11+
it 'includes a link to add to slack with the client id' do
12+
expect(title).to eq('Slack Ruby Bot Server')
13+
expect(first('p[id=register] a')['href']).to eq 'https://slack.com/oauth/authorize?scope=bot&client_id=slack-client-id'
14+
end
15+
end

spec/spec_helper.rb

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,8 @@
44

55
Bundler.require
66

7-
require 'slack-ruby-bot-server/rspec'
8-
9-
Mongoid.load!(File.expand_path('../config/mongoid.yml', __dir__), ENV['RACK_ENV'])
10-
11-
require 'database_cleaner'
12-
13-
RSpec.configure do |config|
14-
config.before :suite do
15-
Mongo::Logger.logger.level = Logger::INFO
16-
17-
Mongoid::Tasks::Database.create_indexes
18-
end
19-
20-
config.after :suite do
21-
Mongoid.purge!
22-
end
23-
24-
config.around :each do |example|
25-
DatabaseCleaner.cleaning do
26-
example.run
27-
end
28-
end
7+
Dir[File.join(File.dirname(__FILE__), 'support', '**/*.rb')].each do |file|
8+
require file
299
end
10+
11+
require 'slack-ruby-bot-server/rspec'

spec/support/capybara.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
require 'capybara/rspec'
2+
3+
Capybara.configure do |config|
4+
config.app = SlackRubyBotServer::Api::Middleware.instance
5+
config.server_port = 9293
6+
end

spec/support/database_cleaner.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
require 'database_cleaner'
2+
3+
RSpec.configure do |config|
4+
config.before :suite do
5+
DatabaseCleaner.strategy = :truncation
6+
DatabaseCleaner.clean_with :truncation
7+
end
8+
9+
config.after :suite do
10+
Mongoid.purge!
11+
end
12+
13+
config.around :each do |example|
14+
DatabaseCleaner.cleaning do
15+
example.run
16+
end
17+
end
18+
end

spec/support/mongoid.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Mongoid.load!(File.expand_path('../../config/mongoid.yml', __dir__), ENV['RACK_ENV'])
2+
3+
RSpec.configure do |config|
4+
config.before :suite do
5+
Mongoid.logger.level = Logger::INFO
6+
Mongo::Logger.logger.level = Logger::INFO
7+
8+
Mongoid::Tasks::Database.create_indexes
9+
end
10+
end

spec/support/vcr.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
require 'vcr'
2+
3+
VCR.configure do |config|
4+
config.cassette_library_dir = 'spec/fixtures/slack'
5+
config.hook_into :webmock
6+
# config.default_cassette_options = { record: :new_episodes }
7+
config.configure_rspec_metadata!
8+
config.ignore_localhost = true
9+
end

0 commit comments

Comments
 (0)