diff --git a/Gemfile b/Gemfile
index 821040891..b08e5f932 100644
--- a/Gemfile
+++ b/Gemfile
@@ -5,7 +5,7 @@ ruby '2.4.1'
gem 'rails', '5.1.1'
gem 'webpacker', '~> 2.0'
gem 'figaro'
-gem 'pg'
+gem 'pg', '~> 0.18'
gem 'devise', '~> 4.3.0'
gem 'devise_invitable'
gem 'simple_token_authentication', '~> 1.15.1' # Token authentication for Devise
@@ -53,7 +53,7 @@ gem 'commit_param_routing' # Enables different submit actions in the same form t
gem 'kaminari'
gem 'i18n-js', '~> 3.0' # Localization in javascript files
gem 'roo', '~> 2.7.1' # Spreadsheet parser
-gem 'wicked_pdf', '~> 1.0.6'
+gem 'wicked_pdf', '~> 1.1.0'
gem 'silencer' # Silence certain Rails logs
gem 'wkhtmltopdf-heroku'
gem 'remotipart', '~> 1.2' # Async file uploads
@@ -98,7 +98,7 @@ group :development, :test do
gem 'pry'
gem 'pry-byebug'
gem 'pry-rails'
- gem 'factory_girl_rails'
+ gem 'factory_bot_rails'
gem 'rails-controller-testing'
gem 'rspec-rails'
gem 'better_errors'
diff --git a/Gemfile.lock b/Gemfile.lock
index bc8f9081b..03631a9f2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,9 +1,9 @@
GIT
remote: https://github.com/biosistemika/canaid
- revision: 96366be967aa9770ea23f606ded803233913557e
+ revision: f2000c19b75e66ea929a44cb0575262b7f5fc13e
branch: master
specs:
- canaid (1.0.0)
+ canaid (1.0.1)
devise (>= 3.4.1)
rails (>= 4)
@@ -82,7 +82,7 @@ GEM
activemodel (= 5.1.1)
activesupport (= 5.1.1)
arel (~> 8.0)
- activerecord-import (0.20.2)
+ activerecord-import (0.22.0)
activerecord (>= 3.2)
activesupport (5.1.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -98,18 +98,18 @@ GEM
ast (2.3.0)
auto_strip_attributes (2.2.0)
activerecord (>= 3.0)
- autoprefixer-rails (7.1.6)
+ autoprefixer-rails (7.2.5)
execjs
autosize-rails (1.18.17)
rails (>= 3.1)
awesome_print (1.8.0)
- aws-sdk (2.10.69)
- aws-sdk-resources (= 2.10.69)
- aws-sdk-core (2.10.69)
+ aws-sdk (2.10.123)
+ aws-sdk-resources (= 2.10.123)
+ aws-sdk-core (2.10.123)
aws-sigv4 (~> 1.0)
jmespath (~> 1.0)
- aws-sdk-resources (2.10.69)
- aws-sdk-core (= 2.10.69)
+ aws-sdk-resources (2.10.123)
+ aws-sdk-core (= 2.10.123)
aws-sdk-v1 (1.67.0)
json (~> 1.4)
nokogiri (~> 1)
@@ -118,34 +118,34 @@ GEM
babel-transpiler (0.7.0)
babel-source (>= 4.0, < 6)
execjs (~> 2.0)
- backports (3.10.3)
+ backports (3.11.0)
base62 (1.0.0)
bcrypt (3.1.11)
better_errors (2.4.0)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
- binding_of_caller (0.7.3)
+ binding_of_caller (0.8.0)
debug_inspector (>= 0.0.1)
bootstrap-sass (3.3.7)
autoprefixer-rails (>= 5.2.1)
sass (>= 3.3.4)
- bootstrap-select-rails (1.12.1)
+ bootstrap-select-rails (1.6.3)
bootstrap3-datetimepicker-rails (4.15.35)
momentjs-rails (>= 2.8.1)
bootstrap_form (2.7.0)
builder (3.2.3)
- bullet (5.6.1)
+ bullet (5.7.2)
activesupport (>= 3.0.0)
- uniform_notifier (~> 1.10.0)
+ uniform_notifier (~> 1.11.0)
byebug (9.1.0)
- capybara (2.16.1)
+ capybara (2.17.0)
addressable
mini_mime (>= 0.1.3)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
- xpath (~> 2.0)
+ xpath (>= 2.0, < 4.0)
capybara-email (2.5.0)
capybara (~> 2.4)
mail
@@ -163,40 +163,37 @@ GEM
coffee-script-source (1.12.2)
commit_param_routing (0.0.1)
concurrent-ruby (1.0.5)
- crass (1.0.2)
- creek (1.1.2)
- nokogiri (~> 1.6.0)
- rubyzip (>= 1.0.0)
- cucumber (3.0.1)
+ crass (1.0.3)
+ cucumber (3.1.0)
builder (>= 2.1.2)
- cucumber-core (~> 3.0.0)
- cucumber-expressions (~> 4.0.3)
+ cucumber-core (~> 3.1.0)
+ cucumber-expressions (~> 5.0.4)
cucumber-wire (~> 0.0.1)
diff-lcs (~> 1.3)
- gherkin (~> 4.0)
+ gherkin (~> 5.0)
multi_json (>= 1.7.5, < 2.0)
multi_test (>= 0.1.2)
- cucumber-core (3.0.0)
+ cucumber-core (3.1.0)
backports (>= 3.8.0)
- cucumber-tag_expressions (>= 1.0.1)
- gherkin (>= 4.1.3)
- cucumber-expressions (4.0.4)
+ cucumber-tag_expressions (~> 1.1.0)
+ gherkin (>= 5.0.0)
+ cucumber-expressions (5.0.13)
cucumber-rails (1.5.0)
capybara (>= 1.1.2, < 3)
cucumber (>= 1.3.8, < 4)
mime-types (>= 1.17, < 4)
nokogiri (~> 1.5)
railties (>= 4, < 5.2)
- cucumber-tag_expressions (1.0.1)
+ cucumber-tag_expressions (1.1.1)
cucumber-wire (0.0.1)
- database_cleaner (1.6.1)
+ database_cleaner (1.6.2)
debug_inspector (0.0.3)
- deface (1.2.0)
+ deface (1.3.0)
nokogiri (~> 1.6)
polyglot
rails (>= 4.1)
rainbow (>= 2.1.0)
- delayed_job (4.1.3)
+ delayed_job (4.1.4)
activesupport (>= 3.0, < 5.2)
delayed_job_active_record (4.1.2)
activerecord (>= 3.0, < 5.2)
@@ -214,25 +211,26 @@ GEM
docile (1.1.5)
erubi (1.7.0)
execjs (2.7.0)
- factory_girl (4.8.1)
+ factory_bot (4.8.2)
activesupport (>= 3.0.0)
- factory_girl_rails (4.8.0)
- factory_girl (~> 4.8.0)
+ factory_bot_rails (4.8.2)
+ factory_bot (~> 4.8.2)
railties (>= 3.0.0)
- faker (1.8.4)
- i18n (~> 0.5)
+ faker (1.8.7)
+ i18n (>= 0.7)
ffi (1.9.18)
figaro (1.1.1)
thor (~> 0.14)
- font-awesome-rails (4.7.0.2)
+ font-awesome-rails (4.7.0.3)
railties (>= 3.2, < 5.2)
- gherkin (4.1.3)
- globalid (0.4.0)
+ gherkin (5.0.0)
+ globalid (0.4.1)
activesupport (>= 4.2.0)
hammerjs-rails (2.0.8)
- i18n (0.9.0)
+ hashie (3.5.7)
+ i18n (0.9.3)
concurrent-ruby (~> 1.0)
- i18n-js (3.0.1)
+ i18n-js (3.0.3)
i18n (~> 0.6, >= 0.6.6)
introjs-rails (1.0.0)
sass-rails (>= 3.2)
@@ -257,6 +255,7 @@ GEM
addressable (>= 2.4)
json_matchers (0.7.2)
json-schema (~> 2.7)
+ jwt (2.1.0)
kaminari (1.1.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.1.1)
@@ -287,23 +286,26 @@ GEM
mime-types (1.25.1)
mimemagic (0.3.2)
mini_mime (1.0.0)
- mini_portile2 (2.1.0)
- minitest (5.10.3)
+ mini_portile2 (2.3.0)
+ minitest (5.11.1)
momentjs-rails (2.17.1)
railties (>= 3.1)
- multi_json (1.12.2)
+ multi_json (1.13.1)
multi_test (0.1.2)
nested_form_fields (0.8.2)
coffee-rails (>= 3.2.1)
jquery-rails
rails (>= 3.2.0)
- newrelic_rpm (4.5.0.337)
- nio4r (2.1.0)
- nokogiri (1.6.8.1)
- mini_portile2 (~> 2.1.0)
+ newrelic_rpm (4.7.1.340)
+ nio4r (2.2.0)
+ nokogiri (1.8.1)
+ mini_portile2 (~> 2.3.0)
nokogumbo (1.4.13)
nokogiri
- oj (2.18.5)
+ oj (3.3.10)
+ omniauth (1.8.1)
+ hashie (>= 3.4.6, < 3.6.0)
+ rack (>= 1.6.2, < 3)
orm_adapter (0.5.0)
paperclip (5.1.0)
activemodel (>= 4.2.0)
@@ -311,27 +313,27 @@ GEM
cocaine (~> 0.5.5)
mime-types
mimemagic (~> 0.3.0)
- parallel (1.12.0)
- parser (2.4.0.0)
- ast (~> 2.2)
+ parallel (1.12.1)
+ parser (2.4.0.2)
+ ast (~> 2.3)
pg (0.21.0)
phantomjs (2.1.1.0)
- poltergeist (1.16.0)
+ poltergeist (1.17.0)
capybara (~> 2.1)
cliver (~> 0.3.1)
websocket-driver (>= 0.2.0)
polyglot (0.3.5)
powerpack (0.1.1)
- pry (0.11.2)
+ pry (0.11.3)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
- pry-byebug (3.5.0)
+ pry-byebug (3.5.1)
byebug (~> 9.1)
pry (~> 0.10)
pry-rails (0.3.6)
pry (>= 0.10.4)
public_suffix (3.0.1)
- puma (3.10.0)
+ puma (3.11.2)
rack (2.0.3)
rack-test (0.6.3)
rack (>= 1.0)
@@ -371,12 +373,12 @@ GEM
thor (>= 0.18.1, < 2.0)
rainbow (2.2.2)
rake
- rake (12.1.0)
+ rake (12.3.0)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
rdoc (4.3.0)
- recaptcha (4.6.2)
+ recaptcha (4.6.3)
json
remotipart (1.3.1)
responders (2.4.0)
@@ -389,7 +391,7 @@ GEM
roo (2.7.1)
nokogiri (~> 1)
rubyzip (~> 1.1, < 2.0.0)
- rspec-core (3.7.0)
+ rspec-core (3.7.1)
rspec-support (~> 3.7.0)
rspec-expectations (3.7.0)
diff-lcs (>= 1.2.0, < 2.0)
@@ -397,7 +399,7 @@ GEM
rspec-mocks (3.7.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.7.0)
- rspec-rails (3.7.1)
+ rspec-rails (3.7.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
@@ -421,19 +423,23 @@ GEM
crass (~> 1.0.2)
nokogiri (>= 1.4.4)
nokogumbo (~> 1.4.1)
- sass (3.4.25)
- sass-rails (5.0.6)
+ sass (3.5.5)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sass-rails (5.0.7)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
- scenic (1.4.0)
+ scenic (1.4.1)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
- scss_lint (0.55.0)
+ scss_lint (0.56.0)
rake (>= 0.9, < 13)
- sass (~> 3.4.20)
+ sass (~> 3.5.3)
sdoc (0.4.2)
json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0)
@@ -459,12 +465,12 @@ GEM
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
- starscope (1.5.5)
+ starscope (1.5.6)
babel-transpiler (~> 0.7)
- oj (~> 2.9)
- parser (~> 2.3)
+ oj (~> 3.3)
+ parser (~> 2.4)
rkelly-remix (~> 0.0.7)
- ruby-progressbar (~> 1.8)
+ ruby-progressbar (~> 1.9)
sourcemap (~> 0.1)
stream (0.5)
thor (0.20.0)
@@ -472,16 +478,15 @@ GEM
tilt (2.0.8)
tinymce-rails (4.6.7)
railties (>= 3.1.1)
- turbolinks (5.0.1)
- turbolinks-source (~> 5)
- turbolinks-source (5.0.3)
- tzinfo (1.2.3)
+ turbolinks (2.5.4)
+ coffee-rails
+ tzinfo (1.2.4)
thread_safe (~> 0.1)
- uglifier (3.2.0)
+ uglifier (4.1.4)
execjs (>= 0.3.0, < 3)
underscore-rails (1.8.3)
unicode-display_width (1.3.0)
- uniform_notifier (1.10.0)
+ uniform_notifier (1.11.0)
warden (1.2.7)
rack (>= 1.0)
webpacker (2.0)
@@ -490,11 +495,12 @@ GEM
railties (>= 4.2)
websocket-driver (0.6.5)
websocket-extensions (>= 0.1.0)
- websocket-extensions (0.1.2)
+ websocket-extensions (0.1.3)
+ whacamole (1.2.0)
wicked_pdf (1.1.0)
wkhtmltopdf-heroku (2.12.4.0)
- xpath (2.1.0)
- nokogiri (~> 1.3)
+ xpath (3.0.0)
+ nokogiri (~> 1.8)
yomu (0.2.4)
json (~> 1.8)
mime-types (~> 1.23)
@@ -525,7 +531,6 @@ DEPENDENCIES
capybara
capybara-email
commit_param_routing
- creek
cucumber-rails (~> 1.5)
database_cleaner
deface (~> 1.0)
@@ -535,7 +540,7 @@ DEPENDENCIES
devise-async!
devise_invitable
devise_security_extension!
- factory_girl_rails
+ factory_bot_rails
faker
figaro
font-awesome-rails (~> 4.7.0.2)
@@ -546,18 +551,20 @@ DEPENDENCIES
jquery-rails
jquery-scrollto-rails!
jquery-turbolinks
- jquery-ui-rails (~> 5.0)
+ jquery-ui-rails
js_cookie_rails
json_matchers
+ jwt
kaminari
listen (~> 3.0)
logging (~> 2.0.0)
momentjs-rails (~> 2.17.1)
nested_form_fields
newrelic_rpm
- nokogiri
+ nokogiri (~> 1.8.1)
+ omniauth
paperclip (~> 5.1)
- pg
+ pg (~> 0.18)
phantomjs
poltergeist
pry
@@ -589,12 +596,13 @@ DEPENDENCIES
spinjs-rails
starscope
tinymce-rails (~> 4.6.4)
- turbolinks
+ turbolinks (~> 2.0)
tzinfo-data
uglifier (>= 1.3.0)
underscore-rails
webpacker (~> 2.0)
- wicked_pdf
+ whacamole
+ wicked_pdf (~> 1.1.0)
wkhtmltopdf-heroku
yomu
diff --git a/app/javascript/src/componentLoader/availableAddons.js b/app/javascript/src/componentLoader/availableAddons.js
deleted file mode 100644
index 0d10713b9..000000000
--- a/app/javascript/src/componentLoader/availableAddons.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// intentionally exports empty object
-export default {};
diff --git a/db/migrate/20170803153030_add_user_identity_table.rb b/db/migrate/20170803153030_add_user_identity_table.rb
index 29d439d0d..fe445f508 100644
--- a/db/migrate/20170803153030_add_user_identity_table.rb
+++ b/db/migrate/20170803153030_add_user_identity_table.rb
@@ -1,4 +1,4 @@
-class AddUserIdentityTable < ActiveRecord::Migration
+class AddUserIdentityTable < ActiveRecord::Migration[4.2]
def change
create_table :user_identities do |t|
t.belongs_to :user, index: true
diff --git a/db/schema.rb b/db/schema.rb
index d8c47a9cb..977909a28 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -654,6 +654,17 @@ ActiveRecord::Schema.define(version: 20171026090804) do
t.integer "user_id", null: false
end
+ create_table "user_identities", id: :serial, force: :cascade do |t|
+ t.integer "user_id"
+ t.string "provider", null: false
+ t.string "uid", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.index ["provider", "uid"], name: "index_user_identities_on_provider_and_uid", unique: true
+ t.index ["user_id", "provider"], name: "index_user_identities_on_user_id_and_provider", unique: true
+ t.index ["user_id"], name: "index_user_identities_on_user_id"
+ end
+
create_table "user_my_modules", id: :serial, force: :cascade do |t|
t.integer "user_id", null: false
t.integer "my_module_id", null: false
diff --git a/features/sessions/sign_up.feature b/features/sessions/sign_up.feature
index 2824ed508..e2456d3fa 100644
--- a/features/sessions/sign_up.feature
+++ b/features/sessions/sign_up.feature
@@ -26,6 +26,7 @@ Feature: Sign up
| Full name | Email | Password | Password confirmation | Team name |
| Magnus | magnus@gmail.com | asdf1234 | asdf1234 | SpliceGirls |
And I click "Sign up" button
+ And Show me the page
Then I should see "SpliceGirls"
And I should be on homepage
diff --git a/features/step_definitions/shared_steps.rb b/features/step_definitions/shared_steps.rb
index d87194eeb..ce1cabb73 100644
--- a/features/step_definitions/shared_steps.rb
+++ b/features/step_definitions/shared_steps.rb
@@ -36,7 +36,7 @@ Then(/^I should be on homepage$/) do
end
Given(/^the "([^"]*)" team exists$/) do |team_name|
- FactoryGirl.create(:team, name: team_name)
+ FactoryBot.create(:team, name: team_name)
end
Given(/^I'm on the home page of "([^"]*)" team$/) do |team_name|
@@ -48,9 +48,9 @@ end
Given(/^"([^"]*)" is in "([^"]*)" team as a "([^"]*)"$/) do |user_email, team_name, role|
team = Team.find_by_name(team_name)
user = User.find_by_email(user_email)
- FactoryGirl.create(:user_team, user: user,
- team: team,
- role: UserTeam.roles.fetch(role))
+ FactoryBot.create(:user_team, user: user,
+ team: team, role:
+ UserTeam.roles.fetch(role))
end
Then(/^I attach a "([^"]*)" file to "([^"]*)" field$/) do |file, field_id|
diff --git a/features/step_definitions/users_steps.rb b/features/step_definitions/users_steps.rb
index 14fa4f543..1a575e9b9 100644
--- a/features/step_definitions/users_steps.rb
+++ b/features/step_definitions/users_steps.rb
@@ -1,6 +1,6 @@
Given(/^the following users are registered$/) do |table|
table.hashes.each do |hash|
- FactoryGirl.create(:user, hash)
+ FactoryBot.create(:user, hash)
User.find_by_email(hash.fetch('email')).confirm
end
end
diff --git a/spec/controllers/api/api_controller_spec.rb b/spec/controllers/api/api_controller_spec.rb
index 637fa7310..82e6d28fb 100644
--- a/spec/controllers/api/api_controller_spec.rb
+++ b/spec/controllers/api/api_controller_spec.rb
@@ -27,9 +27,9 @@ describe Api::ApiController, type: :controller do
context 'When valid request' do
before do
- post :authenticate, email: user.email,
- password: user.password,
- grant_type: 'password'
+ post :authenticate, params: { email: user.email,
+ password: user.password,
+ grant_type: 'password' }
end
it 'Returns HTTP success' do
@@ -47,17 +47,17 @@ describe Api::ApiController, type: :controller do
context 'When invalid password in request' do
it 'Returns HTTP error' do
- post :authenticate, email: user.email,
- password: 'wrong_password',
- grant_type: 'password'
+ post :authenticate, params: { email: user.email,
+ password: 'wrong_password',
+ grant_type: 'password' }
expect(response).to have_http_status(400)
end
end
context 'When no grant_type in request' do
it 'Returns HTTP error' do
- post :authenticate, email: user.email,
- password: user.password
+ post :authenticate, params: { email: user.email,
+ password: user.password }
expect(response).to have_http_status(400)
end
end
diff --git a/spec/controllers/api/v20170715/core_api_controller_spec.rb b/spec/controllers/api/v20170715/core_api_controller_spec.rb
index bb4aaa6e5..ee513ff53 100644
--- a/spec/controllers/api/v20170715/core_api_controller_spec.rb
+++ b/spec/controllers/api/v20170715/core_api_controller_spec.rb
@@ -1,11 +1,12 @@
require 'rails_helper'
describe Api::V20170715::CoreApiController, type: :controller do
- let(:user) { create(:user) }
- let(:task) { create(:my_module) }
- let(:sample1) { create(:sample) }
- let(:sample2) { create(:sample) }
- let(:sample3) { create(:sample) }
+ let!(:user) { create :user }
+ let!(:team) { create :team, created_by: user }
+ let(:task) { create :my_module }
+ let(:sample1) { create :sample }
+ let(:sample2) { create :sample }
+ let(:sample3) { create :sample }
before do
task.samples << [sample1, sample2, sample3]
UserProject.create!(user: user, project: task.experiment.project, role: 0)
@@ -16,7 +17,7 @@ describe Api::V20170715::CoreApiController, type: :controller do
before do
request.headers['HTTP_ACCEPT'] = 'application/json'
request.headers['Authorization'] = 'Bearer ' + generate_token(user.id)
- get :task_samples, task_id: task.id
+ get :task_samples, params: { task_id: task.id }
end
it 'Returns HTTP success' do
@@ -39,7 +40,7 @@ describe Api::V20170715::CoreApiController, type: :controller do
before do
request.headers['HTTP_ACCEPT'] = 'application/json'
request.headers['Authorization'] = 'Bearer WroNgToken'
- get :task_samples, task_id: task.id
+ get :task_samples, params: { task_id: task.id }
end
it 'Returns HTTP unauthorized' do
@@ -54,7 +55,7 @@ describe Api::V20170715::CoreApiController, type: :controller do
end
it 'Returns HTTP not found' do
- get :task_samples, task_id: 1000
+ get :task_samples, params: { task_id: 1000 }
expect(response).to have_http_status(404)
expect(json).to match({})
end
@@ -63,7 +64,7 @@ describe Api::V20170715::CoreApiController, type: :controller do
UserProject.where(user: user, project: task.experiment.project)
.first
.destroy!
- get :task_samples, task_id: task.id
+ get :task_samples, params: { task_id: task.id }
expect(response).to have_http_status(403)
expect(json).to match({})
end
@@ -72,6 +73,7 @@ describe Api::V20170715::CoreApiController, type: :controller do
end
describe 'GET #tasks_tree' do
+ let!(:user_team) { create :user_team, team: team, user: user }
context 'When valid request' do
before do
request.headers['HTTP_ACCEPT'] = 'application/json'
@@ -90,21 +92,25 @@ describe Api::V20170715::CoreApiController, type: :controller do
hash_body = nil
expect { hash_body = json }.not_to raise_exception
expect(hash_body).to match(
- ['team_id' => team.id.to_s, 'name' => team.name,
+ ['name' => team.name,
'description' => team.description,
+ 'team_id' => team.id.to_s,
'projects' => [{
- 'project_id' => project.id.to_s, 'name' => project.name,
+ 'name' => project.name,
'visibility' => project.visibility,
'archived' => project.archived,
+ 'project_id' => project.id.to_s,
'experiments' => [{
- 'experiment_id' => experiment.id.to_s,
'name' => experiment.name,
'description' => experiment.description,
'archived' => experiment.archived,
+ 'experiment_id' => experiment.id.to_s,
'tasks' => [{
- 'task_id' => task.id.to_s, 'name' => task.name,
+ 'name' => task.name,
'description' => task.description,
- 'archived' => task.archived
+ 'archived' => task.archived,
+ 'task_id' => task.id.to_s,
+ 'editable' => true
}]
}]
}]]
diff --git a/spec/controllers/client_api/teams/teams_controller_spec.rb b/spec/controllers/client_api/teams/teams_controller_spec.rb
index 8785e207d..cb81fb761 100644
--- a/spec/controllers/client_api/teams/teams_controller_spec.rb
+++ b/spec/controllers/client_api/teams/teams_controller_spec.rb
@@ -5,12 +5,10 @@ describe ClientApi::Teams::TeamsController, type: :controller do
before do
@user_one = User.first
- @user_two = FactoryGirl.create :user, email: 'sec_user@asdf.com'
- @team_one = FactoryGirl.create :team, created_by: @user_one
- @team_two = FactoryGirl.create :team,
- name: 'Team two',
- created_by: @user_two
- FactoryGirl.create :user_team, team: @team_one, user: @user_one, role: 2
+ @user_two = create :user, email: 'sec_user@asdf.com'
+ @team_one = create :team, created_by: @user_one
+ @team_two = create :team, name: 'Team two', created_by: @user_two
+ create :user_team, team: @team_one, user: @user_one, role: 2
end
describe 'GET #index' do
@@ -28,7 +26,7 @@ describe ClientApi::Teams::TeamsController, type: :controller do
end
it 'should return HTTP success response' do
- post :create, params: { team: @team_one }, as: :json
+ post :create, params: { team: { name: 'My New Team' } }, as: :json
expect(response).to have_http_status(:ok)
end
@@ -62,7 +60,7 @@ describe ClientApi::Teams::TeamsController, type: :controller do
describe 'POST #change_team' do
it 'should return HTTP success response' do
- FactoryGirl.create :user_team, team: @team_two, user: @user_one, role: 2
+ create :user_team, team: @team_two, user: @user_one, role: 2
@user_one.update_attribute(:current_team_id, @team_one.id)
post :change_team, params: { team_id: @team_two.id }, as: :json
expect(response).to have_http_status(:ok)
@@ -83,7 +81,7 @@ describe ClientApi::Teams::TeamsController, type: :controller do
describe 'GET #details' do
it 'should return HTTP success response' do
- FactoryGirl.create :user_team, team: @team_two, user: @user_one, role: 2
+ create :user_team, team: @team_two, user: @user_one, role: 2
@user_one.update_attribute(:current_team_id, @team_one.id)
get :details, params: { team_id: @team_two.id }, as: :json
expect(response).to have_http_status(:ok)
diff --git a/spec/factories/activity.rb b/spec/factories/activity.rb
index 8ae4343d6..482f4069b 100644
--- a/spec/factories/activity.rb
+++ b/spec/factories/activity.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :activity do
type_of :create_project
message Faker::Lorem.sentence(10)
diff --git a/spec/factories/asset_text_datums.rb b/spec/factories/asset_text_datums.rb
index b272b26ee..762d3782e 100644
--- a/spec/factories/asset_text_datums.rb
+++ b/spec/factories/asset_text_datums.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :asset_text_datum do
data "Sample name\tSample type\n" + "sample6\tsample\n" + "\n"
end
diff --git a/spec/factories/assets.rb b/spec/factories/assets.rb
index 456ea1f29..a4a27f9c4 100644
--- a/spec/factories/assets.rb
+++ b/spec/factories/assets.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :asset do
association :created_by, factory: :project_user
association :team, factory: :team
diff --git a/spec/factories/custom_fields.rb b/spec/factories/custom_fields.rb
index 6d1ced03e..407a2e92f 100644
--- a/spec/factories/custom_fields.rb
+++ b/spec/factories/custom_fields.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :custom_field do
name 'My custom field'
end
diff --git a/spec/factories/experiments.rb b/spec/factories/experiments.rb
index d15997fad..d2ab428e3 100644
--- a/spec/factories/experiments.rb
+++ b/spec/factories/experiments.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :experiment do
name 'My Experiment'
description 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.'
diff --git a/spec/factories/my_module_groups.rb b/spec/factories/my_module_groups.rb
index bb38bab2c..60d899b7d 100644
--- a/spec/factories/my_module_groups.rb
+++ b/spec/factories/my_module_groups.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :my_module_group do
experiment { Experiment.first || create(:experiment_two) }
end
diff --git a/spec/factories/my_module_repository_rows.rb b/spec/factories/my_module_repository_rows.rb
index af444818c..99ff9f237 100644
--- a/spec/factories/my_module_repository_rows.rb
+++ b/spec/factories/my_module_repository_rows.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :mm_repository_row, class: MyModuleRepositoryRow do
association :repository_row, factory: :repository_row
association :my_module, factory: :my_module
diff --git a/spec/factories/my_modules.rb b/spec/factories/my_modules.rb
index ff2a92d50..ebd2d3b24 100644
--- a/spec/factories/my_modules.rb
+++ b/spec/factories/my_modules.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :my_module do
name 'My first module'
x 0
diff --git a/spec/factories/notifications.rb b/spec/factories/notifications.rb
index f92723cf6..fc702321d 100644
--- a/spec/factories/notifications.rb
+++ b/spec/factories/notifications.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :notification do
title 'Admin was added as Owner to project ' \
'Demo project - qPCR by User.'
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index 1db48538a..525f10a33 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :project do
created_by { User.first || association(:project_user) }
team { Team.first || association(:project_team) }
diff --git a/spec/factories/reports.rb b/spec/factories/reports.rb
index e36b8d5b6..fc913d816 100644
--- a/spec/factories/reports.rb
+++ b/spec/factories/reports.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :report do
user { User.first || association(:user) }
project { Project.first || association(:project) }
diff --git a/spec/factories/repository.rb b/spec/factories/repository.rb
index caffd62cd..8f51e9d42 100644
--- a/spec/factories/repository.rb
+++ b/spec/factories/repository.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :repository do
name 'My Repository'
created_by { User.first || create(:user) }
diff --git a/spec/factories/repository_cell.rb b/spec/factories/repository_cell.rb
index 1c8f39886..b6f395a36 100644
--- a/spec/factories/repository_cell.rb
+++ b/spec/factories/repository_cell.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :repository_cell do
repository_row { RepositoryRow.first || create(:repository_row) }
repository_column do
diff --git a/spec/factories/repository_columns.rb b/spec/factories/repository_columns.rb
index 9417db115..7ee369b11 100644
--- a/spec/factories/repository_columns.rb
+++ b/spec/factories/repository_columns.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :repository_column do
name 'My Column'
created_by { User.first || create(:user) }
diff --git a/spec/factories/repository_rows.rb b/spec/factories/repository_rows.rb
index 524db45f5..c4d83a5f4 100644
--- a/spec/factories/repository_rows.rb
+++ b/spec/factories/repository_rows.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :repository_row do
name 'Custom row'
created_by { User.first || association(:user) }
diff --git a/spec/factories/sample_groups.rb b/spec/factories/sample_groups.rb
index 5943a1557..8b4cf415e 100644
--- a/spec/factories/sample_groups.rb
+++ b/spec/factories/sample_groups.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :sample_group do
name 'Sample'
color '#ff00ff'
diff --git a/spec/factories/sample_my_modules.rb b/spec/factories/sample_my_modules.rb
index fbe1fcbc8..e050d6706 100644
--- a/spec/factories/sample_my_modules.rb
+++ b/spec/factories/sample_my_modules.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :sample_my_module do
sample { Sample.frist || create(:sample) }
my_module { MyModule.frist || create(:my_module) }
diff --git a/spec/factories/sample_types.rb b/spec/factories/sample_types.rb
index 90d0e4a67..ed99c49cc 100644
--- a/spec/factories/sample_types.rb
+++ b/spec/factories/sample_types.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :sample_type do
name 'Sample type'
end
diff --git a/spec/factories/samples.rb b/spec/factories/samples.rb
index 8b7b515e9..db662d211 100644
--- a/spec/factories/samples.rb
+++ b/spec/factories/samples.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :sample do
name 'Sample'
user { User.first || create(:user) }
diff --git a/spec/factories/samples_tables.rb b/spec/factories/samples_tables.rb
index 5f14031c6..9025ec6ca 100644
--- a/spec/factories/samples_tables.rb
+++ b/spec/factories/samples_tables.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :samples_table do
end
end
diff --git a/spec/factories/teams.rb b/spec/factories/teams.rb
index 9d196212f..c623caedb 100644
--- a/spec/factories/teams.rb
+++ b/spec/factories/teams.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :team do
created_by { User.first || create(:user) }
name 'My team'
diff --git a/spec/factories/user_notification.rb b/spec/factories/user_notification.rb
index 9341a28f2..3eee80e4a 100644
--- a/spec/factories/user_notification.rb
+++ b/spec/factories/user_notification.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :user_notification do
checked false
end
diff --git a/spec/factories/user_project.rb b/spec/factories/user_project.rb
index 24a2c6a34..18b5d163c 100644
--- a/spec/factories/user_project.rb
+++ b/spec/factories/user_project.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :user_project do
role 'owner'
end
diff --git a/spec/factories/user_teams.rb b/spec/factories/user_teams.rb
index b63ecffd4..a931a6a3d 100644
--- a/spec/factories/user_teams.rb
+++ b/spec/factories/user_teams.rb
@@ -1,4 +1,4 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :user_team do
role 'admin'
end
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
index b60595471..0b5ee982f 100644
--- a/spec/factories/users.rb
+++ b/spec/factories/users.rb
@@ -1,12 +1,9 @@
-FactoryGirl.define do
+FactoryBot.define do
factory :user do
full_name 'admin'
initials 'AD'
email 'admin_test@scinote.net'
password 'asdf1243'
password_confirmation 'asdf1243'
- after(:create) do |user|
- user.teams << (Team.first || FactoryGirl.create(:team))
- end
end
end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index c0f9fe1e4..53270d9b5 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -45,20 +45,15 @@ describe Project, type: :model do
it { should validate_presence_of :visibility }
it { should validate_presence_of :team }
it do
- should validate_length_of(:name)
- .is_at_least(Constants::NAME_MIN_LENGTH)
- .is_at_most(Constants::NAME_MAX_LENGTH)
+ should validate_length_of(:name).is_at_least(Constants::NAME_MIN_LENGTH)
+ .is_at_most(Constants::NAME_MAX_LENGTH)
end
it 'should have a unique name scoped to team' do
- FactoryGirl.create :project,
- created_by: user,
- last_modified_by: user,
- team: team
- project_two = FactoryGirl.build :project,
- created_by: user,
- last_modified_by: user,
- team: team
+ create :project, created_by: user, last_modified_by: user, team: team
+ project_two = build :project, created_by: user,
+ last_modified_by: user,
+ team: team
expect(project_two).to_not be_valid
end
end
diff --git a/spec/models/sample_group_spec.rb b/spec/models/sample_group_spec.rb
index 13aa5d67f..8e5cbf263 100644
--- a/spec/models/sample_group_spec.rb
+++ b/spec/models/sample_group_spec.rb
@@ -27,6 +27,7 @@ describe SampleGroup, type: :model do
end
describe 'Should be a valid object' do
+ let!(:team_one) { create :team, name: 'My team' }
it { should validate_presence_of :name }
it { should validate_presence_of :color }
it { should validate_presence_of :team }
@@ -37,9 +38,8 @@ describe SampleGroup, type: :model do
should validate_length_of(:color).is_at_most(Constants::COLOR_MAX_LENGTH)
end
it 'should have uniq name scoped to team' do
- create :sample_group, name: 'My Group'
- new_group = build :sample_group, name: 'My Group'
-
+ create :sample_group, name: 'My Group', team: team_one
+ new_group = build :sample_group, name: 'My Group', team: team_one
expect(new_group).to_not be_valid
end
end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index b993fe53f..2cfdbeb28 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -78,8 +78,8 @@ RSpec.configure do |config|
# arbitrary gems may also be filtered via:
# config.filter_gems_from_backtrace("gem name")
- # includes FactoryGirl in rspec
- config.include FactoryGirl::Syntax::Methods
+ # includes FactoryBot in rspec
+ config.include FactoryBot::Syntax::Methods
# Devise
config.include Devise::Test::ControllerHelpers, type: :controller
config.include ApiHelper, type: :controller
diff --git a/spec/support/controller_macros.rb b/spec/support/controller_macros.rb
index eb3b63c90..6183adfd1 100644
--- a/spec/support/controller_macros.rb
+++ b/spec/support/controller_macros.rb
@@ -2,7 +2,7 @@ module ControllerMacros
def login_user
before(:each) do
@request.env['devise.mapping'] = Devise.mappings[:user]
- user = FactoryGirl.create(:user)
+ user = create :user
user.confirm
sign_in user
end