From 88d742904185465d30cf974523ff1ab725cd5f4f Mon Sep 17 00:00:00 2001 From: zmagod Date: Tue, 23 Jan 2018 14:54:15 +0100 Subject: [PATCH] 1. fixes failing unit and integration tests 2. fixes gem dependencies issues 3. fixes failing migrations 4. updates depricated factory_girl => factory_bot and fixes related issues Signed-off-by: zmagod --- Gemfile | 6 +- Gemfile.lock | 180 +++++++++--------- .../src/componentLoader/availableAddons.js | 2 - .../20170803153030_add_user_identity_table.rb | 2 +- db/schema.rb | 11 ++ features/sessions/sign_up.feature | 1 + features/step_definitions/shared_steps.rb | 8 +- features/step_definitions/users_steps.rb | 2 +- spec/controllers/api/api_controller_spec.rb | 16 +- .../api/v20170715/core_api_controller_spec.rb | 34 ++-- .../client_api/teams/teams_controller_spec.rb | 16 +- spec/factories/activity.rb | 2 +- spec/factories/asset_text_datums.rb | 2 +- spec/factories/assets.rb | 2 +- spec/factories/custom_fields.rb | 2 +- spec/factories/experiments.rb | 2 +- spec/factories/my_module_groups.rb | 2 +- spec/factories/my_module_repository_rows.rb | 2 +- spec/factories/my_modules.rb | 2 +- spec/factories/notifications.rb | 2 +- spec/factories/projects.rb | 2 +- spec/factories/reports.rb | 2 +- spec/factories/repository.rb | 2 +- spec/factories/repository_cell.rb | 2 +- spec/factories/repository_columns.rb | 2 +- spec/factories/repository_rows.rb | 2 +- spec/factories/sample_groups.rb | 2 +- spec/factories/sample_my_modules.rb | 2 +- spec/factories/sample_types.rb | 2 +- spec/factories/samples.rb | 2 +- spec/factories/samples_tables.rb | 2 +- spec/factories/teams.rb | 2 +- spec/factories/user_notification.rb | 2 +- spec/factories/user_project.rb | 2 +- spec/factories/user_teams.rb | 2 +- spec/factories/users.rb | 5 +- spec/models/project_spec.rb | 17 +- spec/models/sample_group_spec.rb | 6 +- spec/rails_helper.rb | 4 +- spec/support/controller_macros.rb | 2 +- 40 files changed, 187 insertions(+), 173 deletions(-) delete mode 100644 app/javascript/src/componentLoader/availableAddons.js 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