From 10a8df47a9f1c719e9a893875ab87db1a811d0ef Mon Sep 17 00:00:00 2001 From: Logan Gingerich Date: Wed, 1 Nov 2017 09:03:31 -0600 Subject: [PATCH 1/4] Factorygirl to factorybot - fixes #1413 (#1425) * FactoryGirl Changed to FactoryBot file fix changes based on comments received Bundle Update on 2017-10-29 style update to align hash literal added package-lock * indentation fixes with rubocop * name added to contributors --- CONTRIBUTORS.md | 1 + Gemfile | 2 +- Gemfile.lock | 9 +- app/models/member.rb | 2 +- config/factory_bot.rb | 9 + config/factory_girl.rb | 9 - package-lock.json | 1414 +++++++++++++++++ spec/controllers/accounts_controller_spec.rb | 2 +- .../admin/orders_controller_spec.rb | 2 +- spec/controllers/admin_controller_spec.rb | 2 +- .../authentications_controller_spec.rb | 4 +- spec/controllers/comments_controller_spec.rb | 30 +- spec/controllers/gardens_controller_spec.rb | 2 +- spec/controllers/harvests_controller_spec.rb | 26 +- spec/controllers/likes_controller_spec.rb | 12 +- spec/controllers/member_controller_spec.rb | 10 +- .../notifications_controller_spec.rb | 18 +- .../order_items_controller_spec.rb | 18 +- spec/controllers/orders_controller_spec.rb | 8 +- .../photo_associations_controller_spec.rb | 8 +- spec/controllers/photos_controller_spec.rb | 28 +- spec/controllers/places_controller_spec.rb | 4 +- spec/controllers/plantings_controller_spec.rb | 32 +- spec/controllers/posts_controller_spec.rb | 2 +- .../registrations_controller_spec.rb | 6 +- .../scientific_names_controller_spec.rb | 2 +- spec/controllers/seeds_controller_spec.rb | 2 +- spec/controllers/shop_controller_spec.rb | 8 +- spec/factories/account_types.rb | 4 +- spec/factories/accounts.rb | 4 +- spec/factories/alternate_names.rb | 4 +- spec/factories/authentications.rb | 4 +- spec/factories/comments.rb | 2 +- spec/factories/crop.rb | 2 +- spec/factories/follows.rb | 2 +- spec/factories/forums.rb | 4 +- spec/factories/garden.rb | 2 +- spec/factories/harvests.rb | 4 +- spec/factories/like.rb | 2 +- spec/factories/member.rb | 6 +- spec/factories/notifications.rb | 6 +- spec/factories/order_items.rb | 4 +- spec/factories/orders.rb | 4 +- spec/factories/photos.rb | 4 +- spec/factories/plant_parts.rb | 4 +- spec/factories/planting.rb | 2 +- spec/factories/post.rb | 2 +- spec/factories/products.rb | 4 +- spec/factories/roles.rb | 4 +- spec/factories/scientific_name.rb | 2 +- spec/factories/seeds.rb | 4 +- spec/features/gardens/adding_gardens_spec.rb | 2 +- spec/features/likeable_spec.rb | 6 +- spec/features/members/deletion_spec.rb | 38 +- spec/features/notifications_spec.rb | 2 +- spec/helpers/application_helper_spec.rb | 4 +- spec/helpers/gardens_helper_spec.rb | 32 +- spec/helpers/harvests_helper_spec.rb | 14 +- spec/helpers/notifications_helper_spec.rb | 6 +- spec/helpers/plantings_helper_spec.rb | 26 +- spec/helpers/seeds_helper_spec.rb | 8 +- .../lib/haml/filters/escaped_markdown_spec.rb | 2 +- .../haml/filters/growstuff_markdown_spec.rb | 22 +- spec/mailers/notifier_spec.rb | 16 +- spec/models/ability_spec.rb | 46 +- spec/models/account_spec.rb | 8 +- spec/models/alternate_name_spec.rb | 2 +- spec/models/authentication_spec.rb | 2 +- spec/models/comment_spec.rb | 22 +- spec/models/crop_spec.rb | 198 +-- spec/models/follow_spec.rb | 4 +- spec/models/forum_spec.rb | 10 +- spec/models/garden_spec.rb | 110 +- spec/models/harvest_spec.rb | 150 +- spec/models/like_spec.rb | 4 +- spec/models/member_spec.rb | 136 +- spec/models/notification_spec.rb | 18 +- spec/models/order_item_spec.rb | 14 +- spec/models/order_spec.rb | 62 +- spec/models/photo_spec.rb | 10 +- spec/models/plant_part_spec.rb | 20 +- spec/models/planting_spec.rb | 116 +- spec/models/post_spec.rb | 70 +- spec/models/product_spec.rb | 2 +- spec/models/role_spec.rb | 8 +- spec/models/scientific_name_spec.rb | 2 +- spec/models/seed_spec.rb | 62 +- spec/rails_helper.rb | 4 +- spec/support/controller_macros.rb | 2 +- spec/support/is_likeable.rb | 10 +- .../account_types/index.html.haml_spec.rb | 2 +- spec/views/accounts/edit.html.haml_spec.rb | 2 +- spec/views/accounts/index.html.haml_spec.rb | 2 +- spec/views/accounts/new.html.haml_spec.rb | 2 +- spec/views/accounts/show.html.haml_spec.rb | 2 +- spec/views/admin/index_spec.rb | 2 +- spec/views/admin/newsletter_spec.rb | 4 +- spec/views/admin/orders/index_spec.rb | 2 +- spec/views/comments/edit.html.haml_spec.rb | 2 +- spec/views/comments/index.html.haml_spec.rb | 4 +- spec/views/comments/index.rss.haml_spec.rb | 8 +- spec/views/comments/new.html.haml_spec.rb | 4 +- spec/views/comments/show.html.haml_spec.rb | 2 +- spec/views/crops/_grown_for.html.haml_spec.rb | 6 +- .../crops/_planting_advice.html.haml_spec.rb | 24 +- spec/views/crops/_popover.html.haml_spec.rb | 6 +- spec/views/crops/edit.html.haml_spec.rb | 4 +- spec/views/crops/hierarchy.html.haml_spec.rb | 4 +- spec/views/crops/index.html.haml_spec.rb | 10 +- spec/views/crops/index.rss.haml_spec.rb | 6 +- spec/views/crops/new.html.haml_spec.rb | 4 +- spec/views/crops/wrangle.html.haml_spec.rb | 6 +- .../mailer/confirmation_instructions_spec.rb | 2 +- .../devise/mailer/unlock_instructions_spec.rb | 2 +- spec/views/devise/registrations/edit_spec.rb | 6 +- spec/views/forums/index.html.haml_spec.rb | 10 +- spec/views/forums/new.html.haml_spec.rb | 2 +- spec/views/forums/show.html.haml_spec.rb | 4 +- spec/views/gardens/edit.html.haml_spec.rb | 4 +- spec/views/gardens/new.html.haml_spec.rb | 4 +- spec/views/gardens/show.html.haml_spec.rb | 6 +- spec/views/harvests/edit.html.haml_spec.rb | 2 +- spec/views/harvests/index.html.haml_spec.rb | 12 +- spec/views/harvests/new.html.haml_spec.rb | 2 +- spec/views/harvests/show.html.haml_spec.rb | 4 +- spec/views/home/_crops.html.haml_spec.rb | 6 +- spec/views/home/_members.html.haml_spec.rb | 4 +- spec/views/home/_seeds.html.haml_spec.rb | 4 +- spec/views/home/index_spec.rb | 10 +- spec/views/layouts/_header_spec.rb | 4 +- .../views/members/_location.html.haml_spec.rb | 4 +- spec/views/members/index.html.haml_spec.rb | 2 +- spec/views/members/show.rss.haml_spec.rb | 6 +- .../notifications/index.html.haml_spec.rb | 10 +- .../views/notifications/new.html.haml_spec.rb | 6 +- .../notifications/show.html.haml_spec.rb | 4 +- spec/views/notifier/notify.html.haml_spec.rb | 2 +- spec/views/orders/index.html.haml_spec.rb | 6 +- spec/views/orders/show.html.haml_spec.rb | 10 +- spec/views/photos/index.html.haml_spec.rb | 4 +- spec/views/photos/new.html.haml_spec.rb | 4 +- spec/views/photos/show.html.haml_spec.rb | 18 +- spec/views/places/show.html.haml_spec.rb | 4 +- .../views/plant_parts/index.html.haml_spec.rb | 2 +- spec/views/plant_parts/show.html.haml_spec.rb | 4 +- spec/views/plantings/_form.html.haml_spec.rb | 10 +- spec/views/plantings/edit.html.haml_spec.rb | 12 +- spec/views/plantings/index.html.haml_spec.rb | 14 +- spec/views/plantings/index.rss.haml_spec.rb | 8 +- spec/views/plantings/new.html.haml_spec.rb | 12 +- spec/views/plantings/show.html.haml_spec.rb | 16 +- spec/views/posts/_single.html.haml_spec.rb | 38 +- spec/views/posts/edit.html.haml_spec.rb | 8 +- spec/views/posts/index.html.haml_spec.rb | 6 +- spec/views/posts/index.rss.haml_spec.rb | 6 +- spec/views/posts/new.html.haml_spec.rb | 8 +- spec/views/posts/show.html.haml_spec.rb | 38 +- spec/views/posts/show.rss.haml_spec.rb | 8 +- spec/views/products/index.html.haml_spec.rb | 2 +- spec/views/products/show.html.haml_spec.rb | 2 +- .../scientific_names/edit.html.haml_spec.rb | 4 +- .../scientific_names/index.html.haml_spec.rb | 6 +- .../scientific_names/new.html.haml_spec.rb | 4 +- .../scientific_names/show.html.haml_spec.rb | 4 +- spec/views/seeds/edit.html.haml_spec.rb | 6 +- spec/views/seeds/index.rss.haml_spec.rb | 6 +- spec/views/seeds/new.html.haml_spec.rb | 8 +- spec/views/seeds/show.html.haml_spec.rb | 12 +- spec/views/shop/index_spec.rb | 10 +- 169 files changed, 2483 insertions(+), 1069 deletions(-) create mode 100644 config/factory_bot.rb delete mode 100644 config/factory_girl.rb create mode 100644 package-lock.json diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 6dc25e0a5..69c9fd2e4 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -81,6 +81,7 @@ submit the change with your pull request. - Arun Kumar / [arun1595](https://github.com/arun1595) - Harry Brodsky / [hbrodsk1](https://github.com/hbrodsk1) - Jeff Kingswood / [ancyentmariner](https://github.com/ancyentmariner) +- Logan Gingerich / [logangingerich](https://github.com/logangingerich) ## Bots diff --git a/Gemfile b/Gemfile index ed5d1ca8f..78636cf78 100644 --- a/Gemfile +++ b/Gemfile @@ -124,7 +124,7 @@ group :development, :test do gem 'capybara-screenshot' # for test debugging gem 'coveralls', require: false # coverage analysis gem 'database_cleaner' - gem 'factory_girl_rails' # for creating test data + gem 'factory_bot_rails' # for creating test data gem 'haml-i18n-extractor' gem 'haml-rails' # HTML templating language gem 'haml_lint' # Checks haml files for goodness diff --git a/Gemfile.lock b/Gemfile.lock index 8ffe37d88..e06468efe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -173,10 +173,10 @@ GEM erubis (2.7.0) excon (0.59.0) execjs (2.7.0) - factory_girl (4.9.0) + factory_bot (4.8.2) activesupport (>= 3.0.0) - factory_girl_rails (4.9.0) - factory_girl (~> 4.9.0) + factory_bot_rails (4.8.2) + factory_bot (~> 4.8.2) railties (>= 3.0.0) faraday (0.12.2) multipart-post (>= 1.2, < 3) @@ -567,7 +567,7 @@ DEPENDENCIES elasticsearch-api (~> 2.0.0) elasticsearch-model elasticsearch-rails - factory_girl_rails + factory_bot_rails figaro flickraw font-awesome-sass @@ -622,7 +622,6 @@ DEPENDENCIES will_paginate xmlrpc - RUBY VERSION ruby 2.4.1p111 diff --git a/app/models/member.rb b/app/models/member.rb index 9a05d6206..06bcaeb2c 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -91,7 +91,7 @@ class Member < ActiveRecord::Base # and an account record (for paid accounts etc) # we use find_or_create to avoid accidentally creating a second one, - # which can happen sometimes especially with FactoryGirl associations + # which can happen sometimes especially with FactoryBot associations after_create { |member| Account.find_or_create_by(member_id: member.id) } after_save :update_newsletter_subscription diff --git a/config/factory_bot.rb b/config/factory_bot.rb new file mode 100644 index 000000000..43d50d52f --- /dev/null +++ b/config/factory_bot.rb @@ -0,0 +1,9 @@ +ActionDispatch::Callbacks.after do + # Reload the factories + return unless Rails.env.development? || Rails.env.test? + + if FactoryBot.factories.present? # first init will load factories, this should only run on subsequent reloads + FactoryBot.factories.clear + FactoryBot.find_definitions + end +end diff --git a/config/factory_girl.rb b/config/factory_girl.rb deleted file mode 100644 index dc0ab40b4..000000000 --- a/config/factory_girl.rb +++ /dev/null @@ -1,9 +0,0 @@ -ActionDispatch::Callbacks.after do - # Reload the factories - return unless Rails.env.development? || Rails.env.test? - - unless FactoryGirl.factories.blank? # first init will load factories, this should only run on subsequent reloads - FactoryGirl.factories.clear - FactoryGirl.find_definitions - end -end diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..fc703767c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1414 @@ +{ + "name": "growstuff", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "7.1.2" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "coffee-script": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.11.1.tgz", + "integrity": "sha1-vxxHrWREOg2V0S3ysUfMCk2q1uk=", + "dev": true + }, + "coffeelint": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/coffeelint/-/coffeelint-1.16.0.tgz", + "integrity": "sha1-g9jtHa/eOmd95E57ihi+YHdh5tg=", + "dev": true, + "requires": { + "coffee-script": "1.11.1", + "glob": "7.1.2", + "ignore": "3.3.7", + "optimist": "0.6.1", + "resolve": "0.6.3", + "strip-json-comments": "1.0.4" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "csslint": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/csslint/-/csslint-1.0.5.tgz", + "integrity": "sha1-Gcw+2jIhYP0/cjKvHLKjYOiYouk=", + "dev": true, + "requires": { + "clone": "2.1.1", + "parserlib": "1.1.1" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.35" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + }, + "es5-ext": { + "version": "0.10.35", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", + "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.9", + "doctrine": "2.0.0", + "escope": "3.6.0", + "espree": "3.5.1", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.1", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } + } + }, + "espree": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", + "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } + }, + "interpret": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", + "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jshint": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz", + "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", + "dev": true, + "requires": { + "cli": "1.0.1", + "console-browserify": "1.1.0", + "exit": "0.1.2", + "htmlparser2": "3.8.3", + "lodash": "3.7.0", + "minimatch": "3.0.4", + "shelljs": "0.3.0", + "strip-json-comments": "1.0.4" + }, + "dependencies": { + "lodash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", + "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=", + "dev": true + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", + "dev": true + } + } + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "parserlib": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-1.1.1.tgz", + "integrity": "sha1-pkz6ckBiQ0/fw1HJpOwtkrlMBvQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.5.0" + }, + "dependencies": { + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + } + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", + "dev": true + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.0.4", + "rechoir": "0.6.2" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } +} diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index 66375b292..d159f4114 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -24,7 +24,7 @@ describe AccountsController do # member; creating them manually will just cause errors as only one is # allowed. This method has been left here in case it's useful in # future. - member = FactoryGirl.create(:member) + member = FactoryBot.create(:member) member.account end end diff --git a/spec/controllers/admin/orders_controller_spec.rb b/spec/controllers/admin/orders_controller_spec.rb index ed0a5b4b6..a81875427 100644 --- a/spec/controllers/admin/orders_controller_spec.rb +++ b/spec/controllers/admin/orders_controller_spec.rb @@ -17,7 +17,7 @@ describe Admin::OrdersController do describe "GET search" do it "assigns @orders" do - order = FactoryGirl.create(:order) + order = FactoryBot.create(:order) get :search, search_by: 'order_id', search_text: order.id assigns(:orders).should eq([order]) end diff --git a/spec/controllers/admin_controller_spec.rb b/spec/controllers/admin_controller_spec.rb index 0b36fe583..6e97245d1 100644 --- a/spec/controllers/admin_controller_spec.rb +++ b/spec/controllers/admin_controller_spec.rb @@ -23,7 +23,7 @@ describe AdminController do end it 'assigns @members' do - m = FactoryGirl.create(:newsletter_recipient_member) + m = FactoryBot.create(:newsletter_recipient_member) get :newsletter assigns(:members).should eq [m] end diff --git a/spec/controllers/authentications_controller_spec.rb b/spec/controllers/authentications_controller_spec.rb index 47be30487..fe7eaa61f 100644 --- a/spec/controllers/authentications_controller_spec.rb +++ b/spec/controllers/authentications_controller_spec.rb @@ -14,10 +14,10 @@ require 'rails_helper' describe AuthenticationsController do before(:each) do - @member = FactoryGirl.create(:member) + @member = FactoryBot.create(:member) sign_in @member controller.stub(:current_member) { @member } - @auth = FactoryGirl.create(:authentication, member: @member) + @auth = FactoryBot.create(:authentication, member: @member) request.env['omniauth.auth'] = { 'provider' => 'foo', 'uid' => 'bar', diff --git a/spec/controllers/comments_controller_spec.rb b/spec/controllers/comments_controller_spec.rb index 43e911bb3..e65a24544 100644 --- a/spec/controllers/comments_controller_spec.rb +++ b/spec/controllers/comments_controller_spec.rb @@ -14,13 +14,13 @@ require 'rails_helper' describe CommentsController do before(:each) do - @member = FactoryGirl.create(:member) + @member = FactoryBot.create(:member) sign_in @member controller.stub(:current_member) { @member } end def valid_attributes - @post = FactoryGirl.create(:post) + @post = FactoryBot.create(:post) { post_id: @post.id, body: "some text" } end @@ -34,7 +34,7 @@ describe CommentsController do end describe "GET new" do - let(:post) { FactoryGirl.create(:post) } + let(:post) { FactoryBot.create(:post) } describe "with valid params" do before { get :new, post_id: post.id } @@ -43,7 +43,7 @@ describe CommentsController do assigns(:post).should eq(post) end - let(:old_comment) { FactoryGirl.create(:comment, post: post) } + let(:old_comment) { FactoryBot.create(:comment, post: post) } it "assigns the old comments as @comments" do assigns(:comments).should eq [old_comment] end @@ -56,19 +56,19 @@ describe CommentsController do end describe "GET edit" do - let(:post) { FactoryGirl.create(:post) } + let(:post) { FactoryBot.create(:post) } before { get :edit, id: comment.to_param } describe "my comment" do - let!(:comment) { FactoryGirl.create :comment, author: @member, post: post } - let!(:old_comment) { FactoryGirl.create(:comment, post: post, created_at: Time.zone.yesterday) } + let!(:comment) { FactoryBot.create :comment, author: @member, post: post } + let!(:old_comment) { FactoryBot.create(:comment, post: post, created_at: Time.zone.yesterday) } it "assigns previous comments as @comments" do assigns(:comments).should eq([comment, old_comment]) end end describe "not my comment" do - let(:comment) { FactoryGirl.create :comment, post: post } + let(:comment) { FactoryBot.create :comment, post: post } it { expect(response).not_to be_success } end end @@ -77,20 +77,20 @@ describe CommentsController do before { put :update, id: comment.to_param, comment: valid_attributes } describe "my comment" do - let(:comment) { FactoryGirl.create :comment, author: @member } + let(:comment) { FactoryBot.create :comment, author: @member } it "redirects to the comment's post" do expect(response).to redirect_to(comment.post) end end describe "not my comment" do - let(:comment) { FactoryGirl.create :comment } + let(:comment) { FactoryBot.create :comment } it { expect(response).not_to be_success } end describe "attempting to change post_id" do - let(:post) { FactoryGirl.create :post, subject: 'our post' } - let(:other_post) { FactoryGirl.create :post, subject: 'the other post' } + let(:post) { FactoryBot.create :post, subject: 'our post' } + let(:other_post) { FactoryBot.create :post, subject: 'the other post' } let(:valid_attributes) { { post_id: other_post.id, body: "kōrero" } } - let(:comment) { FactoryGirl.create :comment, author: @member, post: post } + let(:comment) { FactoryBot.create :comment, author: @member, post: post } it "does not change post_id" do comment.reload expect(comment.post_id).to eq(post.id) @@ -102,14 +102,14 @@ describe CommentsController do before { delete :destroy, id: comment.to_param } describe "my comment" do - let(:comment) { FactoryGirl.create :comment, author: @member } + let(:comment) { FactoryBot.create :comment, author: @member } it "redirects to the post the comment was on" do expect(response).to redirect_to(comment.post) end end describe "not my comment" do - let(:comment) { FactoryGirl.create :comment } + let(:comment) { FactoryBot.create :comment } it { expect(response).not_to be_success } end end diff --git a/spec/controllers/gardens_controller_spec.rb b/spec/controllers/gardens_controller_spec.rb index d22c549b1..5fef6e210 100644 --- a/spec/controllers/gardens_controller_spec.rb +++ b/spec/controllers/gardens_controller_spec.rb @@ -53,7 +53,7 @@ RSpec.describe GardensController, type: :controller do context "when signed in" do before(:each) { sign_in member } - let!(:member) { FactoryGirl.create(:member) } + let!(:member) { FactoryBot.create(:member) } describe "for another member's garden" do let(:not_my_garden) { double('garden') } diff --git a/spec/controllers/harvests_controller_spec.rb b/spec/controllers/harvests_controller_spec.rb index a197e0a17..a42d11f69 100644 --- a/spec/controllers/harvests_controller_spec.rb +++ b/spec/controllers/harvests_controller_spec.rb @@ -18,19 +18,19 @@ describe HarvestsController do def valid_attributes { owner_id: subject.current_member.id, - crop_id: FactoryGirl.create(:crop).id, - plant_part_id: FactoryGirl.create(:plant_part).id + crop_id: FactoryBot.create(:crop).id, + plant_part_id: FactoryBot.create(:plant_part).id } end describe "GET index" do before do - @member1 = FactoryGirl.create(:member) - @member2 = FactoryGirl.create(:member) - @tomato = FactoryGirl.create(:tomato) - @maize = FactoryGirl.create(:maize) - @harvest1 = FactoryGirl.create(:harvest, owner_id: @member1.id, crop_id: @tomato.id) - @harvest2 = FactoryGirl.create(:harvest, owner_id: @member2.id, crop_id: @maize.id) + @member1 = FactoryBot.create(:member) + @member2 = FactoryBot.create(:member) + @tomato = FactoryBot.create(:tomato) + @maize = FactoryBot.create(:maize) + @harvest1 = FactoryBot.create(:harvest, owner_id: @member1.id, crop_id: @tomato.id) + @harvest2 = FactoryBot.create(:harvest, owner_id: @member2.id, crop_id: @maize.id) end it "assigns all harvests as @harvests" do @@ -104,7 +104,7 @@ describe HarvestsController do end it "links to planting" do - planting = FactoryGirl.create(:planting, owner_id: member.id) + planting = FactoryBot.create(:planting, owner_id: member.id) post :create, harvest: valid_attributes.merge(planting_id: planting.id) expect(Harvest.last.planting.id).to eq(planting.id) end @@ -126,8 +126,8 @@ describe HarvestsController do end describe "not my planting" do - let(:not_my_planting) { FactoryGirl.create(:planting) } - let(:harvest) { FactoryGirl.create(:harvest) } + let(:not_my_planting) { FactoryBot.create(:planting) } + let(:harvest) { FactoryBot.create(:harvest) } it "does not save planting_id" do allow(Harvest).to receive(:new).and_return(harvest) post :create, harvest: valid_attributes.merge(planting_id: not_my_planting.id) @@ -178,8 +178,8 @@ describe HarvestsController do end describe "not my planting" do - let(:not_my_planting) { FactoryGirl.create(:planting) } - let(:harvest) { FactoryGirl.create(:harvest) } + let(:not_my_planting) { FactoryBot.create(:planting) } + let(:harvest) { FactoryBot.create(:harvest) } it "does not save planting_id" do put :update, id: harvest.to_param, harvest: valid_attributes.merge(planting_id: not_my_planting.id) diff --git a/spec/controllers/likes_controller_spec.rb b/spec/controllers/likes_controller_spec.rb index 670c51f35..6f43760c1 100644 --- a/spec/controllers/likes_controller_spec.rb +++ b/spec/controllers/likes_controller_spec.rb @@ -1,10 +1,10 @@ require 'rails_helper' describe LikesController do - let(:like) { FactoryGirl.create :like, member: member } - let(:member) { FactoryGirl.create(:member) } - let(:blogpost) { FactoryGirl.create(:post) } - let(:mypost) { FactoryGirl.create(:post, author: member) } + let(:like) { FactoryBot.create :like, member: member } + let(:member) { FactoryBot.create(:member) } + let(:blogpost) { FactoryBot.create(:post) } + let(:mypost) { FactoryBot.create(:post, author: member) } before { sign_in member } @@ -20,7 +20,7 @@ describe LikesController do end describe "Liking your own post" do - let(:blogpost) { FactoryGirl.create(:post, author: member) } + let(:blogpost) { FactoryBot.create(:post, author: member) } end end @@ -34,7 +34,7 @@ describe LikesController do end describe "Deleting someone else's like" do - let(:like) { FactoryGirl.create :like } + let(:like) { FactoryBot.create :like } it { expect(response.code).to eq('403') } it { JSON.parse(response.body)["error"] == "Unable to like" } end diff --git a/spec/controllers/member_controller_spec.rb b/spec/controllers/member_controller_spec.rb index 6db742c04..866507f5f 100644 --- a/spec/controllers/member_controller_spec.rb +++ b/spec/controllers/member_controller_spec.rb @@ -14,10 +14,10 @@ require 'rails_helper' describe MembersController do before :each do - @member = FactoryGirl.create(:member) - @posts = [FactoryGirl.create(:post, author: @member)] - @twitter_auth = FactoryGirl.create(:authentication, member: @member) - @flickr_auth = FactoryGirl.create(:flickr_authentication, member: @member) + @member = FactoryBot.create(:member) + @posts = [FactoryBot.create(:post, author: @member)] + @twitter_auth = FactoryBot.create(:authentication, member: @member) + @flickr_auth = FactoryBot.create(:flickr_authentication, member: @member) end describe "GET index" do @@ -60,7 +60,7 @@ describe MembersController do end it "doesn't show unconfirmed members" do - @member2 = FactoryGirl.create(:unconfirmed_member) + @member2 = FactoryBot.create(:unconfirmed_member) lambda { get :show, id: @member2.id }.should raise_error(ActiveRecord::RecordNotFound) end end diff --git a/spec/controllers/notifications_controller_spec.rb b/spec/controllers/notifications_controller_spec.rb index e9f32efc9..0619a6707 100644 --- a/spec/controllers/notifications_controller_spec.rb +++ b/spec/controllers/notifications_controller_spec.rb @@ -18,7 +18,7 @@ describe NotificationsController do def valid_attributes { "recipient_id" => subject.current_member.id, - "sender_id" => FactoryGirl.create(:member).id, + "sender_id" => FactoryBot.create(:member).id, "subject" => 'test' } end @@ -31,7 +31,7 @@ describe NotificationsController do def valid_attributes_for_sender { "sender_id" => subject.current_member.id, - "recipient_id" => FactoryGirl.create(:member).id, + "recipient_id" => FactoryBot.create(:member).id, "subject" => 'test' } end @@ -42,7 +42,7 @@ describe NotificationsController do describe "GET index" do it "assigns all notifications as @notifications" do - notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) + notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :index, {} assigns(:notifications).should eq([notification]) end @@ -50,13 +50,13 @@ describe NotificationsController do describe "GET show" do it "assigns the requested notification as @notification" do - notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) + notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :show, id: notification.to_param assigns(:notification).should eq(notification) end it "assigns the reply link for a post comment" do - notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) + notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :show, id: notification.to_param assigns(:reply_link).should_not be_nil @@ -66,7 +66,7 @@ describe NotificationsController do end it "marks notifications as read" do - notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) + notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :show, id: notification.to_param # we need to fetch it from the db again, can't test against the old one n = Notification.find(notification.id) @@ -76,7 +76,7 @@ describe NotificationsController do describe "GET reply" do it "marks notifications as read" do - notification = FactoryGirl.create(:notification, recipient_id: subject.current_member.id) + notification = FactoryBot.create(:notification, recipient_id: subject.current_member.id) get :reply, id: notification.to_param # we need to fetch it from the db again, can't test against the old one n = Notification.find(notification.id) @@ -86,7 +86,7 @@ describe NotificationsController do describe "GET new" do it "assigns a recipient" do - @recipient = FactoryGirl.create(:member) + @recipient = FactoryBot.create(:member) get :new, recipient_id: @recipient.id assigns(:recipient).should be_an_instance_of(Member) end @@ -95,7 +95,7 @@ describe NotificationsController do describe "POST create" do describe "with valid params" do it "redirects to the recipient's profile" do - @recipient = FactoryGirl.create(:member) + @recipient = FactoryBot.create(:member) post :create, notification: { recipient_id: @recipient.id, subject: 'foo' } response.should redirect_to(notifications_path) end diff --git a/spec/controllers/order_items_controller_spec.rb b/spec/controllers/order_items_controller_spec.rb index 8c5581e92..0c1b50706 100644 --- a/spec/controllers/order_items_controller_spec.rb +++ b/spec/controllers/order_items_controller_spec.rb @@ -16,11 +16,11 @@ describe OrderItemsController do login_member(:admin_member) before(:each) do - @member = FactoryGirl.create(:member) + @member = FactoryBot.create(:member) sign_in @member - @product = FactoryGirl.create(:product) - @order = FactoryGirl.create(:order, member: @member) - @order_item = FactoryGirl.create(:order_item, + @product = FactoryBot.create(:product) + @order = FactoryBot.create(:order, member: @member) + @order_item = FactoryBot.create(:order_item, order: @order, product: @product, price: @product.min_price) @@ -28,7 +28,7 @@ describe OrderItemsController do describe "POST create" do it "redirects to order" do - @order = FactoryGirl.create(:order, member: @member) + @order = FactoryBot.create(:order, member: @member) post :create, order_item: { order_id: @order.id, product_id: @product.id, @@ -38,9 +38,9 @@ describe OrderItemsController do end it 'creates an order for you' do - @member = FactoryGirl.create(:member) + @member = FactoryBot.create(:member) sign_in @member - @product = FactoryGirl.create(:product) + @product = FactoryBot.create(:product) expect { post :create, order_item: { product_id: @product.id, @@ -52,8 +52,8 @@ describe OrderItemsController do describe "with non-int price" do it "converts 3.33 to 333 cents" do - @order = FactoryGirl.create(:order, member: @member) - @product = FactoryGirl.create(:product, min_price: 1) + @order = FactoryBot.create(:order, member: @member) + @product = FactoryBot.create(:product, min_price: 1) expect { post :create, order_item: { order_id: @order.id, diff --git a/spec/controllers/orders_controller_spec.rb b/spec/controllers/orders_controller_spec.rb index 36477d032..d02fc6e27 100644 --- a/spec/controllers/orders_controller_spec.rb +++ b/spec/controllers/orders_controller_spec.rb @@ -25,7 +25,7 @@ describe OrdersController do describe "GET checkout" do it 'sets the referral_code' do - member = FactoryGirl.create(:member) + member = FactoryBot.create(:member) sign_in member order = Order.create!(member_id: member.id) get :checkout, id: order.to_param, referral_code: 'FOOBAR' @@ -34,7 +34,7 @@ describe OrdersController do end it "redirects to Paypal" do - member = FactoryGirl.create(:member) + member = FactoryBot.create(:member) sign_in member order = Order.create!(member_id: member.id) get :checkout, id: order.to_param @@ -45,7 +45,7 @@ describe OrdersController do describe "GET complete" do it "assigns the requested order as @order" do - member = FactoryGirl.create(:member) + member = FactoryBot.create(:member) sign_in member order = Order.create!(member_id: member.id) get :complete, id: order.to_param @@ -55,7 +55,7 @@ describe OrdersController do describe "DELETE destroy" do it "redirects to the shop" do - member = FactoryGirl.create(:member) + member = FactoryBot.create(:member) sign_in member order = Order.create!(member_id: member.id) delete :destroy, id: order.id diff --git a/spec/controllers/photo_associations_controller_spec.rb b/spec/controllers/photo_associations_controller_spec.rb index bee2fddaf..a15d2143d 100644 --- a/spec/controllers/photo_associations_controller_spec.rb +++ b/spec/controllers/photo_associations_controller_spec.rb @@ -15,8 +15,8 @@ describe PhotoAssociationsController do before { photo.harvests << harvest } describe "my harvest my photo" do - let(:harvest) { FactoryGirl.create :harvest, owner: member } - let(:photo) { FactoryGirl.create :photo, owner: member } + let(:harvest) { FactoryBot.create :harvest, owner: member } + let(:photo) { FactoryBot.create :photo, owner: member } it "removes link" do expect { delete :destroy, valid_params }.to change { photo.harvests.count }.by(-1) @@ -24,8 +24,8 @@ describe PhotoAssociationsController do end describe "another member's harvest from another member's photo" do - let(:harvest) { FactoryGirl.create :harvest } - let(:photo) { FactoryGirl.create :photo } + let(:harvest) { FactoryBot.create :harvest } + let(:photo) { FactoryBot.create :photo } it do expect do begin diff --git a/spec/controllers/photos_controller_spec.rb b/spec/controllers/photos_controller_spec.rb index 0197e2009..7c935422c 100644 --- a/spec/controllers/photos_controller_spec.rb +++ b/spec/controllers/photos_controller_spec.rb @@ -17,7 +17,7 @@ describe PhotosController do login_member def valid_attributes - member = FactoryGirl.create(:member) + member = FactoryBot.create(:member) { "owner_id" => member.id, "flickr_photo_id" => 1, @@ -35,7 +35,7 @@ describe PhotosController do describe "GET new" do before(:each) do - @member = FactoryGirl.create(:member) + @member = FactoryBot.create(:member) sign_in @member @member.stub(:flickr_photos) { [[], 0] } @member.stub(:flickr_sets) { { "foo" => "bar" } } @@ -43,7 +43,7 @@ describe PhotosController do end it "assigns the flickr auth as @flickr_auth" do - @auth = FactoryGirl.create(:flickr_authentication, member: @member) + @auth = FactoryBot.create(:flickr_authentication, member: @member) get :new, {} assigns(:flickr_auth).should be_an_instance_of(Authentication) end @@ -86,11 +86,11 @@ describe PhotosController do link_url: "http://example.com") end - let(:member) { FactoryGirl.create(:member) } - let(:garden) { FactoryGirl.create(:garden, owner: member) } - let(:planting) { FactoryGirl.create(:planting, garden: garden, owner: member) } - let(:harvest) { FactoryGirl.create(:harvest, owner: member) } - let(:photo) { FactoryGirl.create(:photo, owner: member) } + let(:member) { FactoryBot.create(:member) } + let(:garden) { FactoryBot.create(:garden, owner: member) } + let(:planting) { FactoryBot.create(:planting, garden: garden, owner: member) } + let(:harvest) { FactoryBot.create(:harvest, owner: member) } + let(:photo) { FactoryBot.create(:photo, owner: member) } describe "with valid params" do before { controller.stub(:current_member) { member } } it "attaches the photo to a planting" do @@ -120,7 +120,7 @@ describe PhotosController do end it "doesn't attach photo to a comment" do - comment = FactoryGirl.create(:comment) + comment = FactoryBot.create(:comment) post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "comment", id: comment.id expect(flash[:alert]).to be_present end @@ -140,8 +140,8 @@ describe PhotosController do describe "with matching owners" do before { controller.stub(:current_member) { member } } it "creates the planting/photo link" do - planting = FactoryGirl.create(:planting, garden: garden, owner: member) - photo = FactoryGirl.create(:photo, owner: member) + planting = FactoryBot.create(:planting, garden: garden, owner: member) + photo = FactoryBot.create(:photo, owner: member) post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: planting.id expect(flash[:alert]).not_to be_present Photo.last.plantings.first.should eq planting @@ -155,10 +155,10 @@ describe PhotosController do end describe "with mismatched owners" do - let(:photo) { FactoryGirl.create(:photo) } + let(:photo) { FactoryBot.create(:photo) } it "does not create the planting/photo link" do # members will be auto-created, and different - another_planting = FactoryGirl.create(:planting) + another_planting = FactoryBot.create(:planting) post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "planting", id: another_planting.id expect(flash[:alert]).to be_present Photo.last.plantings.first.should_not eq another_planting @@ -166,7 +166,7 @@ describe PhotosController do it "does not create the harvest/photo link" do # members will be auto-created, and different - another_harvest = FactoryGirl.create(:harvest) + another_harvest = FactoryBot.create(:harvest) post :create, photo: { flickr_photo_id: photo.flickr_photo_id }, type: "harvest", id: another_harvest.id expect(flash[:alert]).to be_present Photo.last.harvests.first.should_not eq another_harvest diff --git a/spec/controllers/places_controller_spec.rb b/spec/controllers/places_controller_spec.rb index 390b5d77e..79c1dc623 100644 --- a/spec/controllers/places_controller_spec.rb +++ b/spec/controllers/places_controller_spec.rb @@ -19,8 +19,8 @@ describe PlacesController do describe "GET show" do before(:each) do - @member_london = FactoryGirl.create(:london_member) - @member_south_pole = FactoryGirl.create(:south_pole_member) + @member_london = FactoryBot.create(:london_member) + @member_south_pole = FactoryBot.create(:south_pole_member) end it "assigns place name" do diff --git a/spec/controllers/plantings_controller_spec.rb b/spec/controllers/plantings_controller_spec.rb index 068084e86..e9ce41369 100644 --- a/spec/controllers/plantings_controller_spec.rb +++ b/spec/controllers/plantings_controller_spec.rb @@ -17,19 +17,19 @@ describe PlantingsController do def valid_attributes { - garden_id: FactoryGirl.create(:garden, owner: subject.current_member).id, - crop_id: FactoryGirl.create(:crop).id + garden_id: FactoryBot.create(:garden, owner: subject.current_member).id, + crop_id: FactoryBot.create(:crop).id } end describe "GET index" do before do - @member1 = FactoryGirl.create(:member) - @member2 = FactoryGirl.create(:member) - @tomato = FactoryGirl.create(:tomato) - @maize = FactoryGirl.create(:maize) - @planting1 = FactoryGirl.create(:planting, crop: @tomato, owner: @member1) - @planting2 = FactoryGirl.create(:planting, crop: @maize, owner: @member2) + @member1 = FactoryBot.create(:member) + @member2 = FactoryBot.create(:member) + @tomato = FactoryBot.create(:tomato) + @maize = FactoryBot.create(:maize) + @planting1 = FactoryBot.create(:planting, crop: @tomato, owner: @member1) + @planting2 = FactoryBot.create(:planting, crop: @maize, owner: @member2) end it "assigns all plantings as @plantings" do @@ -52,7 +52,7 @@ describe PlantingsController do describe "GET new" do it "picks up crop from params" do - crop = FactoryGirl.create(:crop) + crop = FactoryBot.create(:crop) get :new, crop_id: crop.id assigns(:crop).should eq(crop) end @@ -63,28 +63,28 @@ describe PlantingsController do end it "picks up member's garden from params" do - garden = FactoryGirl.create(:garden, owner: member) + garden = FactoryBot.create(:garden, owner: member) get :new, garden_id: garden.id assigns(:garden).should eq(garden) end it "Doesn't display another member's garden on planting form" do - member = FactoryGirl.create(:member) # over-riding member from login_member() - garden = FactoryGirl.create(:garden, owner: member) + member = FactoryBot.create(:member) # over-riding member from login_member() + garden = FactoryBot.create(:garden, owner: member) get :new, garden_id: garden.id assigns(:garden).should_not eq(garden) end it "Doesn't display un-approved crops on planting form" do - crop = FactoryGirl.create(:crop, approval_status: 'pending') - FactoryGirl.create(:garden, owner: member) + crop = FactoryBot.create(:crop, approval_status: 'pending') + FactoryBot.create(:garden, owner: member) get :new, crop_id: crop.id assigns(:crop).should_not eq(crop) end it "Doesn't display rejected crops on planting form" do - crop = FactoryGirl.create(:crop, approval_status: 'rejected', reason_for_rejection: 'nope') - FactoryGirl.create(:garden, owner: member) + crop = FactoryBot.create(:crop, approval_status: 'rejected', reason_for_rejection: 'nope') + FactoryBot.create(:garden, owner: member) get :new, crop_id: crop.id assigns(:crop).should_not eq(crop) end diff --git a/spec/controllers/posts_controller_spec.rb b/spec/controllers/posts_controller_spec.rb index bb7adeb83..4cd61d242 100644 --- a/spec/controllers/posts_controller_spec.rb +++ b/spec/controllers/posts_controller_spec.rb @@ -16,7 +16,7 @@ describe PostsController do login_member def valid_attributes - member = FactoryGirl.create(:member) + member = FactoryBot.create(:member) { author_id: member.id, subject: "blah", body: "blah blah" } end diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb index 56d277b75..c69144fd6 100644 --- a/spec/controllers/registrations_controller_spec.rb +++ b/spec/controllers/registrations_controller_spec.rb @@ -14,7 +14,7 @@ require 'rails_helper' describe RegistrationsController do before :each do - @member = FactoryGirl.create(:member) + @member = FactoryBot.create(:member) sign_in @member controller.stub(:current_user) { @member } controller.stub(:devise_mapping).and_return(Devise.mappings[:member]) @@ -27,13 +27,13 @@ describe RegistrationsController do end it "picks up the twitter auth" do - @auth = FactoryGirl.create(:authentication, member: @member) + @auth = FactoryBot.create(:authentication, member: @member) get :edit assigns(:twitter_auth).should eq @auth end it "picks up the flickr auth" do - @auth = FactoryGirl.create(:flickr_authentication, member: @member) + @auth = FactoryBot.create(:flickr_authentication, member: @member) get :edit assigns(:flickr_auth).should eq @auth end diff --git a/spec/controllers/scientific_names_controller_spec.rb b/spec/controllers/scientific_names_controller_spec.rb index 0f10784f8..64b1e97fe 100644 --- a/spec/controllers/scientific_names_controller_spec.rb +++ b/spec/controllers/scientific_names_controller_spec.rb @@ -16,7 +16,7 @@ describe ScientificNamesController do login_member(:crop_wrangling_member) before(:each) do - @crop = FactoryGirl.create(:tomato) + @crop = FactoryBot.create(:tomato) end def valid_attributes diff --git a/spec/controllers/seeds_controller_spec.rb b/spec/controllers/seeds_controller_spec.rb index 1686bd28b..9ae6af1e2 100644 --- a/spec/controllers/seeds_controller_spec.rb +++ b/spec/controllers/seeds_controller_spec.rb @@ -15,7 +15,7 @@ require 'rails_helper' describe SeedsController do describe "GET index" do it "picks up owner from params" do - owner = FactoryGirl.create(:member) + owner = FactoryBot.create(:member) get :index, owner: owner.slug assigns(:owner).should eq(owner) end diff --git a/spec/controllers/shop_controller_spec.rb b/spec/controllers/shop_controller_spec.rb index 82b07a4b4..4a438ea76 100644 --- a/spec/controllers/shop_controller_spec.rb +++ b/spec/controllers/shop_controller_spec.rb @@ -14,8 +14,8 @@ require 'rails_helper' describe ShopController do before :each do - @product1 = FactoryGirl.create(:product) - @product2 = FactoryGirl.create(:product) + @product1 = FactoryBot.create(:product) + @product2 = FactoryBot.create(:product) end describe "GET index" do @@ -35,9 +35,9 @@ describe ShopController do end it "assigns @order as current_order if there is one" do - @member = FactoryGirl.create(:member) + @member = FactoryBot.create(:member) sign_in @member - @order = FactoryGirl.create(:order, member: @member) + @order = FactoryBot.create(:order, member: @member) get :index, {} assigns(:order).should eq @order end diff --git a/spec/factories/account_types.rb b/spec/factories/account_types.rb index 0187a9e3d..a983e24e4 100644 --- a/spec/factories/account_types.rb +++ b/spec/factories/account_types.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :account_type do name "Free" is_paid false diff --git a/spec/factories/accounts.rb b/spec/factories/accounts.rb index 069c8e850..fb4805964 100644 --- a/spec/factories/accounts.rb +++ b/spec/factories/accounts.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do # never do this directly. # create a member then look at member.account_detail instead. # (because it's auto-created, and there can only be one.) diff --git a/spec/factories/alternate_names.rb b/spec/factories/alternate_names.rb index 1c14d60ac..32c609cc3 100644 --- a/spec/factories/alternate_names.rb +++ b/spec/factories/alternate_names.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :alternate_name do name "alternate name" crop diff --git a/spec/factories/authentications.rb b/spec/factories/authentications.rb index 8b26549f0..0f385f680 100644 --- a/spec/factories/authentications.rb +++ b/spec/factories/authentications.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :authentication do member provider 'twitter' diff --git a/spec/factories/comments.rb b/spec/factories/comments.rb index 85dca1b4c..5b726bd41 100644 --- a/spec/factories/comments.rb +++ b/spec/factories/comments.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :comment do post author diff --git a/spec/factories/crop.rb b/spec/factories/crop.rb index 6467cb813..c6f095354 100644 --- a/spec/factories/crop.rb +++ b/spec/factories/crop.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :crop do name "magic bean" en_wikipedia_url "http://en.wikipedia.org/wiki/Magic_bean" diff --git a/spec/factories/follows.rb b/spec/factories/follows.rb index f54acc0e8..a6c609e48 100644 --- a/spec/factories/follows.rb +++ b/spec/factories/follows.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :follow do follower followed diff --git a/spec/factories/forums.rb b/spec/factories/forums.rb index 0d8cff596..5636981fb 100644 --- a/spec/factories/forums.rb +++ b/spec/factories/forums.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :forum do name "Permaculture" description "*Everything* about permaculture!" diff --git a/spec/factories/garden.rb b/spec/factories/garden.rb index 8d6429e2a..1f3d7461d 100644 --- a/spec/factories/garden.rb +++ b/spec/factories/garden.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :garden do name 'Springfield Community Garden' description "This is a **totally** cool garden" diff --git a/spec/factories/harvests.rb b/spec/factories/harvests.rb index 20a3affcd..3c89296a2 100644 --- a/spec/factories/harvests.rb +++ b/spec/factories/harvests.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :harvest do crop plant_part diff --git a/spec/factories/like.rb b/spec/factories/like.rb index 51f44665a..bf19554bb 100644 --- a/spec/factories/like.rb +++ b/spec/factories/like.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :like do member association :likeable, factory: "post" diff --git a/spec/factories/member.rb b/spec/factories/member.rb index 0888edabb..b3380e628 100644 --- a/spec/factories/member.rb +++ b/spec/factories/member.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do sequence(:email) { |n| "member#{n}@example.com" } sequence(:login_name) { |n| "member#{n}" } @@ -60,11 +60,11 @@ FactoryGirl.define do end factory :admin_member do - roles { [FactoryGirl.create(:admin)] } + roles { [FactoryBot.create(:admin)] } end factory :crop_wrangling_member do - roles { [FactoryGirl.create(:crop_wrangler)] } + roles { [FactoryBot.create(:crop_wrangler)] } sequence(:login_name) { |n| "wrangler#{n}" } end diff --git a/spec/factories/notifications.rb b/spec/factories/notifications.rb index 4d6deac12..b893fcc1b 100644 --- a/spec/factories/notifications.rb +++ b/spec/factories/notifications.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :notification, aliases: [:message] do sender recipient @@ -10,7 +10,7 @@ FactoryGirl.define do post factory :no_email_notification do - recipient { FactoryGirl.create(:no_email_notifications_member) } + recipient { FactoryBot.create(:no_email_notifications_member) } end end end diff --git a/spec/factories/order_items.rb b/spec/factories/order_items.rb index f3b6f04ef..5dfba00ab 100644 --- a/spec/factories/order_items.rb +++ b/spec/factories/order_items.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :order_item do order product diff --git a/spec/factories/orders.rb b/spec/factories/orders.rb index a2183e732..514eb4a22 100644 --- a/spec/factories/orders.rb +++ b/spec/factories/orders.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :order do member factory :completed_order do diff --git a/spec/factories/photos.rb b/spec/factories/photos.rb index 70c1fb4fb..aef506bf0 100644 --- a/spec/factories/photos.rb +++ b/spec/factories/photos.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :photo do owner flickr_photo_id 1 diff --git a/spec/factories/plant_parts.rb b/spec/factories/plant_parts.rb index c0d6c53aa..695bf7542 100644 --- a/spec/factories/plant_parts.rb +++ b/spec/factories/plant_parts.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :plant_part do name "pollen" end diff --git a/spec/factories/planting.rb b/spec/factories/planting.rb index 32e0a6483..473930567 100644 --- a/spec/factories/planting.rb +++ b/spec/factories/planting.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :planting do garden owner diff --git a/spec/factories/post.rb b/spec/factories/post.rb index 562912214..d53f33100 100644 --- a/spec/factories/post.rb +++ b/spec/factories/post.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :post do subject "A Post" body "This is some text." diff --git a/spec/factories/products.rb b/spec/factories/products.rb index e34dedac8..444c8597d 100644 --- a/spec/factories/products.rb +++ b/spec/factories/products.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :product do name "annual subscription" description "paid membership, renewing yearly, *hurrah*" diff --git a/spec/factories/roles.rb b/spec/factories/roles.rb index d2f7ba262..fed5e5e00 100644 --- a/spec/factories/roles.rb +++ b/spec/factories/roles.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :role do name "Moderator" description "These people moderate the forums" diff --git a/spec/factories/scientific_name.rb b/spec/factories/scientific_name.rb index 4584cebf8..aa0911504 100644 --- a/spec/factories/scientific_name.rb +++ b/spec/factories/scientific_name.rb @@ -1,4 +1,4 @@ -FactoryGirl.define do +FactoryBot.define do factory :scientific_name do association :crop, factory: :crop name "Beanus Magicus" diff --git a/spec/factories/seeds.rb b/spec/factories/seeds.rb index 323cdf2f2..41b3d404f 100644 --- a/spec/factories/seeds.rb +++ b/spec/factories/seeds.rb @@ -1,6 +1,6 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl +# Read about factories at https://github.com/thoughtbot/factory_bot -FactoryGirl.define do +FactoryBot.define do factory :seed do owner crop diff --git a/spec/features/gardens/adding_gardens_spec.rb b/spec/features/gardens/adding_gardens_spec.rb index da2bd0481..c3f78dd18 100644 --- a/spec/features/gardens/adding_gardens_spec.rb +++ b/spec/features/gardens/adding_gardens_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' require 'custom_matchers' feature "Gardens", :js do - let(:member) { FactoryGirl.create :member } + let(:member) { FactoryBot.create :member } background do login_as member diff --git a/spec/features/likeable_spec.rb b/spec/features/likeable_spec.rb index 75294ee2d..f0bfd15a8 100644 --- a/spec/features/likeable_spec.rb +++ b/spec/features/likeable_spec.rb @@ -1,9 +1,9 @@ require 'rails_helper' feature 'Likeable', js: true do - let(:member) { FactoryGirl.create(:member) } - let(:another_member) { FactoryGirl.create(:london_member) } - let(:post) { FactoryGirl.create(:post) } + let(:member) { FactoryBot.create(:member) } + let(:another_member) { FactoryBot.create(:london_member) } + let(:post) { FactoryBot.create(:post) } context 'logged in member' do background do diff --git a/spec/features/members/deletion_spec.rb b/spec/features/members/deletion_spec.rb index 1d99c3570..3009f51be 100644 --- a/spec/features/members/deletion_spec.rb +++ b/spec/features/members/deletion_spec.rb @@ -2,16 +2,16 @@ require 'rails_helper' feature "member deletion" do context "with activity and followers" do - let(:member) { FactoryGirl.create(:member) } - let(:other_member) { FactoryGirl.create(:member) } - let(:memberpost) { FactoryGirl.create(:post, author: member) } - let(:othermemberpost) { FactoryGirl.create(:post, author: other_member) } - let!(:planting) { FactoryGirl.create(:planting, owner: member) } - let!(:harvest) { FactoryGirl.create(:harvest, owner: member) } - let!(:seed) { FactoryGirl.create(:seed, owner: member) } - let!(:secondgarden) { FactoryGirl.create(:garden, owner: member) } - let!(:order) { FactoryGirl.create(:order, member: member, completed_at: Time.zone.now) } - let(:admin) { FactoryGirl.create(:admin_member) } + let(:member) { FactoryBot.create(:member) } + let(:other_member) { FactoryBot.create(:member) } + let(:memberpost) { FactoryBot.create(:post, author: member) } + let(:othermemberpost) { FactoryBot.create(:post, author: other_member) } + let!(:planting) { FactoryBot.create(:planting, owner: member) } + let!(:harvest) { FactoryBot.create(:harvest, owner: member) } + let!(:seed) { FactoryBot.create(:seed, owner: member) } + let!(:secondgarden) { FactoryBot.create(:garden, owner: member) } + let!(:order) { FactoryBot.create(:order, member: member, completed_at: Time.zone.now) } + let(:admin) { FactoryBot.create(:admin_member) } background do login_as(member) visit member_path(other_member) @@ -22,12 +22,12 @@ feature "member deletion" do click_link 'Follow' logout login_as(member) - FactoryGirl.create(:comment, author: member, post: othermemberpost) - FactoryGirl.create(:comment, author: other_member, post: memberpost, body: "Fun comment-y thing") + FactoryBot.create(:comment, author: member, post: othermemberpost) + FactoryBot.create(:comment, author: other_member, post: memberpost, body: "Fun comment-y thing") # deletion breaks if no wranglers exist - FactoryGirl.create(:cropbot) + FactoryBot.create(:cropbot) # deletion breaks if ex_member doesn't exist - FactoryGirl.create(:member, login_name: "ex_member") + FactoryBot.create(:member, login_name: "ex_member") end scenario "has option to delete on member profile page" do @@ -143,11 +143,11 @@ feature "member deletion" do end context "for a crop wrangler" do - let(:member) { FactoryGirl.create(:crop_wrangling_member) } - let(:otherwrangler) { FactoryGirl.create(:crop_wrangling_member) } - let(:crop) { FactoryGirl.create(:crop, creator: member) } - FactoryGirl.create(:cropbot) - let!(:ex_wrangler) { FactoryGirl.create(:crop_wrangling_member, login_name: "ex_wrangler") } + let(:member) { FactoryBot.create(:crop_wrangling_member) } + let(:otherwrangler) { FactoryBot.create(:crop_wrangling_member) } + let(:crop) { FactoryBot.create(:crop, creator: member) } + FactoryBot.create(:cropbot) + let!(:ex_wrangler) { FactoryBot.create(:crop_wrangling_member, login_name: "ex_wrangler") } scenario "leaves crops behind" do login_as(otherwrangler) diff --git a/spec/features/notifications_spec.rb b/spec/features/notifications_spec.rb index 28436a3b2..feaf5d351 100644 --- a/spec/features/notifications_spec.rb +++ b/spec/features/notifications_spec.rb @@ -31,7 +31,7 @@ feature "Notifications", :js do describe 'pagination' do before do - 34.times { FactoryGirl.create :notification, recipient: recipient } + 34.times { FactoryBot.create :notification, recipient: recipient } login_as recipient visit notifications_path end diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 346cf722a..fe390bbc0 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -23,7 +23,7 @@ describe ApplicationHelper do describe '#avatar_uri' do context 'with a normal user' do before :each do - @member = FactoryGirl.build(:member, email: 'example@example.com', preferred_avatar_uri: nil) + @member = FactoryBot.build(:member, email: 'example@example.com', preferred_avatar_uri: nil) end it 'should render a gravatar uri' do expect(avatar_uri(@member)).to eq 'http://www.gravatar.com/avatar/23463b99b62a72f26ed677cc556c44e8?size=150&default=identicon' @@ -36,7 +36,7 @@ describe ApplicationHelper do context 'with a user who specified a preferred avatar uri' do before :each do - @member = FactoryGirl.build(:member, email: 'example@example.com', preferred_avatar_uri: 'http://media.catmoji.com/post/ujg/cat-in-hat.jpg') + @member = FactoryBot.build(:member, email: 'example@example.com', preferred_avatar_uri: 'http://media.catmoji.com/post/ujg/cat-in-hat.jpg') end it 'should render a the specified uri' do expect(avatar_uri(@member)).to eq 'http://media.catmoji.com/post/ujg/cat-in-hat.jpg' diff --git a/spec/helpers/gardens_helper_spec.rb b/spec/helpers/gardens_helper_spec.rb index d4c508c14..c22b51b79 100644 --- a/spec/helpers/gardens_helper_spec.rb +++ b/spec/helpers/gardens_helper_spec.rb @@ -3,28 +3,28 @@ require 'rails_helper' describe GardensHelper do describe "garden description" do it "is missing" do - garden = FactoryGirl.create(:garden, + garden = FactoryBot.create(:garden, description: nil) result = helper.display_garden_description(garden) expect(result).to eq "no description provided." end it "is less than 130 characters long" do - garden = FactoryGirl.create(:garden, + garden = FactoryBot.create(:garden, description: 'a' * 20) result = helper.display_garden_description(garden) expect(result).to eq 'a' * 20 end it "is 130 characters long" do - garden = FactoryGirl.create(:garden, + garden = FactoryBot.create(:garden, description: 'a' * 130) result = helper.display_garden_description(garden) expect(result).to eq 'a' * 130 end it "is more than 130 characters long" do - garden = FactoryGirl.create(:garden, + garden = FactoryBot.create(:garden, description: 'a' * 140) result = helper.display_garden_description(garden) expect(result).to eq 'a' * 126 + '...' + ' ' + link_to("Read more", garden_path(garden)) @@ -38,8 +38,8 @@ describe GardensHelper do end it "has 1 planting" do - crop = FactoryGirl.create(:crop) - plantings = [FactoryGirl.create(:planting, quantity: 10, crop: crop)] + crop = FactoryBot.create(:crop) + plantings = [FactoryBot.create(:planting, quantity: 10, crop: crop)] result = helper.display_garden_plantings(plantings) output = '