Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions .circle/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Ruby CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/ruby:2.4.1-node-browsers

# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
- image: circleci/postgres:9.4

working_directory: ~/repo

steps:
- checkout

# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-

- run:
name: install dependencies
command: |
bundle install --jobs=4 --retry=3 --path vendor/bundle

- save_cache:
paths:
- ./vendor/bundle
key: v1-dependencies-{{ checksum "Gemfile.lock" }}

# Database setup
- run: bundle exec rake db:create
- run: bundle exec rake db:schema:load

# run tests!
- run:
name: run tests
command: |
mkdir /tmp/test-results
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"

bundle exec rspec --format progress \
--format RspecJunitFormatter \
--out /tmp/test-results/rspec.xml \
--format progress \
$TEST_FILES

# collect reports
- store_test_results:
path: /tmp/test-results
- store_artifacts:
path: /tmp/test-results
destination: test-results
7 changes: 5 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ gem 'rubocop-rspec'

group :development, :test do
gem 'byebug', platform: :mri
gem 'database_cleaner'
gem 'factory_bot'
gem 'factory_bot_rails'
gem 'rspec-rails'
gem 'vcr'
gem 'webmock'
Expand All @@ -47,3 +46,7 @@ group :development do
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'web-console'
end

group :test do
gem 'database_cleaner'
end
5 changes: 4 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ GEM
execjs (2.7.0)
factory_bot (4.10.0)
activesupport (>= 3.0.0)
factory_bot_rails (4.10.0)
factory_bot (~> 4.10.0)
railties (>= 3.0.0)
faraday (0.15.2)
multipart-post (>= 1.2, < 3)
ffi (1.9.11)
Expand Down Expand Up @@ -330,7 +333,7 @@ DEPENDENCIES
database_cleaner
devise
dotenv-rails
factory_bot
factory_bot_rails
font-awesome-rails
git_diff_parser
jbuilder (~> 2.5)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# README
# README

This README would normally document whatever steps are necessary to get the
application up and running.
Expand Down
3 changes: 1 addition & 2 deletions app/controllers/receive_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ def receive
BrakemanWorker.perform_async(payload)
RailsBestPracticesWorker.perform_async(payload)
ReekWorker.perform_async(payload)
job = 'opened'
end

render plain: "Job #{job} kicked off"
render plain: "Job kicked off"
end
end
37 changes: 26 additions & 11 deletions spec/controllers/receive_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,34 @@

RSpec.describe ReceiveController, type: :controller do
describe 'GET #receive' do
before do
allow(RubocopWorker).to receive(:perform_async)
allow(BrakemanWorker).to receive(:perform_async)
end
context 'with a synchronize payload' do
let(:payload) { File.read('spec/fixtures/synchronize-pr.json') }
before do
allow(RubocopWorker).to receive(:perform_async)
allow(BrakemanWorker).to receive(:perform_async)
end

it 'returns http success' do
get :receive, params: { payload: '{ "action": "opened" }' }
expect(response).to have_http_status(:success)
end
it 'returns http success' do
create(:project, :bob_morton)

get :receive, params: { payload:payload }
expect(response).to have_http_status(:success)
end

it 'returns text to say the job has been kicked off' do
create(:project, :bob_morton)

get :receive, params: { payload: payload }
expect(response.body).to eq 'Job kicked off'
end

it 'creates a branch' do
project = create(:project, :bob_morton)

it 'returns text to say the job has been kicked off' do
get :receive, params: { payload: '{ "action": "opened" }' }
expect(response.body).to eq 'Job opened kicked off'
expect{
get :receive, params: { payload: payload }
}.to change{ project.reload.branches.count }.from(0).to(1)
end
end
end
end
8 changes: 8 additions & 0 deletions spec/factories/project.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
FactoryBot.define do
factory :project do
trait :bob_morton do
github_project_user 'bitscraps'
github_project_name 'bob-morton'
end
end
end
Loading