Commit afc87021
Changed files (32)
app
controllers
config
environments
initializers
spec
controllers
admin
api
v1
app/controllers/application_controller.rb
@@ -23,7 +23,7 @@ class ApplicationController < ActionController::Base
private
def load_header
- @categories = Rails.cache.fetch(:categories) { Category.all }
+ @categories = Category.all
end
def authenticate!
config/environments/test.rb
@@ -13,9 +13,11 @@ Rails.application.configure do
config.eager_load = false
# Configure static asset server for tests with Cache-Control for performance.
- config.serve_static_files = true
+ config.public_file_server.enabled = true
- config.static_cache_control = "public, max-age=3600"
+ config.public_file_server.headers = {
+ 'Cache-Control' => "public, max-age=3600"
+ }
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config/initializers/rack_attack.rb
@@ -1,12 +1,12 @@
# Always allow requests from localhost
# (blacklist & throttles are skipped)
-Rack::Attack.whitelist('allow from localhost') do |request|
+Rack::Attack.safelist('allow from localhost') do |request|
# Requests are allowed if the return value is truthy
'127.0.0.1' == request.ip
end
# Throttle requests to 5 requests per second per ip
-Rack::Attack.throttle('req/ip', :limit => 5, :period => 1.second) do |request|
+Rack::Attack.throttle('req/ip', limit: 5, period: 1.second) do |request|
# If the return value is truthy, the cache key for the return value
# is incremented and compared with the limit. In this case:
# "rack::attack:#{Time.now.to_i/1.second}:req/ip:#{req.ip}"
db/migrate/20170923150621_add_photos_count_to_users.rb
@@ -0,0 +1,5 @@
+class AddPhotosCountToUsers < ActiveRecord::Migration[5.0]
+ def change
+ add_column :users, :photos_count, :integer, default: 0
+ end
+end
db/schema.rb
@@ -1,4 +1,3 @@
-# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
@@ -11,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20170831205234) do
+ActiveRecord::Schema.define(version: 20170923150621) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -23,12 +22,11 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.integer "user_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
+ t.index ["subject_id"], name: "index_activities_on_subject_id", using: :btree
+ t.index ["subject_type"], name: "index_activities_on_subject_type", using: :btree
+ t.index ["user_id"], name: "index_activities_on_user_id", using: :btree
end
- add_index "activities", ["subject_id"], name: "index_activities_on_subject_id", using: :btree
- add_index "activities", ["subject_type"], name: "index_activities_on_subject_type", using: :btree
- add_index "activities", ["user_id"], name: "index_activities_on_user_id", using: :btree
-
create_table "avatars", force: :cascade do |t|
t.integer "user_id"
t.datetime "created_at"
@@ -36,19 +34,17 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.string "avatar"
t.boolean "avatar_processing"
t.string "avatar_tmp"
+ t.index ["user_id"], name: "index_avatars_on_user_id", using: :btree
end
- add_index "avatars", ["user_id"], name: "index_avatars_on_user_id", using: :btree
-
create_table "categories", force: :cascade do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.string "slug"
+ t.index ["slug"], name: "index_categories_on_slug", using: :btree
end
- add_index "categories", ["slug"], name: "index_categories_on_slug", using: :btree
-
create_table "comments", force: :cascade do |t|
t.integer "user_id"
t.integer "creation_id"
@@ -56,11 +52,10 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.integer "disqus_id"
t.datetime "created_at"
t.datetime "updated_at"
+ t.index ["creation_id"], name: "index_comments_on_creation_id", using: :btree
+ t.index ["user_id"], name: "index_comments_on_user_id", using: :btree
end
- add_index "comments", ["creation_id"], name: "index_comments_on_creation_id", using: :btree
- add_index "comments", ["user_id"], name: "index_comments_on_user_id", using: :btree
-
create_table "creations", force: :cascade do |t|
t.string "name"
t.text "story"
@@ -72,12 +67,11 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.integer "photos_count", default: 0
t.integer "favorites_count", default: 0
t.integer "category_id"
+ t.index ["category_id"], name: "index_creations_on_category_id", using: :btree
+ t.index ["created_at"], name: "index_creations_on_created_at", using: :btree
+ t.index ["user_id"], name: "index_creations_on_user_id", using: :btree
end
- add_index "creations", ["category_id"], name: "index_creations_on_category_id", using: :btree
- add_index "creations", ["created_at"], name: "index_creations_on_created_at", using: :btree
- add_index "creations", ["user_id"], name: "index_creations_on_user_id", using: :btree
-
create_table "delayed_jobs", force: :cascade do |t|
t.integer "priority", default: 0
t.integer "attempts", default: 0
@@ -90,27 +84,25 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.string "queue"
t.datetime "created_at"
t.datetime "updated_at"
+ t.index ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree
end
- add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree
-
create_table "favorites", force: :cascade do |t|
t.integer "user_id"
t.integer "creation_id"
t.datetime "created_at"
t.datetime "updated_at"
+ t.index ["creation_id"], name: "index_favorites_on_creation_id", using: :btree
+ t.index ["user_id"], name: "index_favorites_on_user_id", using: :btree
end
- add_index "favorites", ["creation_id"], name: "index_favorites_on_creation_id", using: :btree
- add_index "favorites", ["user_id"], name: "index_favorites_on_user_id", using: :btree
-
create_table "interests", force: :cascade do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
- create_table "locations", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+ create_table "locations", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
t.uuid "locatable_id"
t.string "locatable_type"
t.string "latitude"
@@ -119,10 +111,9 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.string "country"
t.datetime "created_at"
t.datetime "updated_at"
+ t.index ["locatable_id", "locatable_type"], name: "index_locations_on_locatable_id_and_locatable_type", using: :btree
end
- add_index "locations", ["locatable_id", "locatable_type"], name: "index_locations_on_locatable_id_and_locatable_type", using: :btree
-
create_table "photos", force: :cascade do |t|
t.integer "imageable_id"
t.string "image"
@@ -137,11 +128,10 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.string "sha256"
t.string "watermark"
t.string "imageable_type"
+ t.index ["imageable_id", "imageable_type"], name: "index_photos_on_imageable_id_and_imageable_type", using: :btree
+ t.index ["imageable_id"], name: "index_photos_on_imageable_id", using: :btree
end
- add_index "photos", ["imageable_id", "imageable_type"], name: "index_photos_on_imageable_id_and_imageable_type", using: :btree
- add_index "photos", ["imageable_id"], name: "index_photos_on_imageable_id", using: :btree
-
create_table "taggings", force: :cascade do |t|
t.integer "tag_id"
t.integer "taggable_id"
@@ -150,37 +140,34 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.string "tagger_type"
t.string "context", limit: 128
t.datetime "created_at"
+ t.index ["context"], name: "index_taggings_on_context", using: :btree
+ t.index ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true, using: :btree
+ t.index ["tag_id"], name: "index_taggings_on_tag_id", using: :btree
+ t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
+ t.index ["taggable_id", "taggable_type", "tagger_id", "context"], name: "taggings_idy", using: :btree
+ t.index ["taggable_id"], name: "index_taggings_on_taggable_id", using: :btree
+ t.index ["taggable_type"], name: "index_taggings_on_taggable_type", using: :btree
+ t.index ["tagger_id", "tagger_type"], name: "index_taggings_on_tagger_id_and_tagger_type", using: :btree
+ t.index ["tagger_id"], name: "index_taggings_on_tagger_id", using: :btree
+ t.index ["tagger_type"], name: "index_taggings_on_tagger_type", using: :btree
end
- add_index "taggings", ["context"], name: "index_taggings_on_context", using: :btree
- add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true, using: :btree
- add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree
- add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
- add_index "taggings", ["taggable_id", "taggable_type", "tagger_id", "context"], name: "taggings_idy", using: :btree
- add_index "taggings", ["taggable_id"], name: "index_taggings_on_taggable_id", using: :btree
- add_index "taggings", ["taggable_type"], name: "index_taggings_on_taggable_type", using: :btree
- add_index "taggings", ["tagger_id", "tagger_type"], name: "index_taggings_on_tagger_id_and_tagger_type", using: :btree
- add_index "taggings", ["tagger_id"], name: "index_taggings_on_tagger_id", using: :btree
- add_index "taggings", ["tagger_type"], name: "index_taggings_on_tagger_type", using: :btree
-
create_table "tags", force: :cascade do |t|
t.string "name"
t.integer "taggings_count", default: 0
+ t.index ["name"], name: "index_tags_on_name", unique: true, using: :btree
end
- add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree
-
create_table "tools", force: :cascade do |t|
t.string "name", null: false
t.text "description"
t.string "asin", null: false
t.datetime "created_at"
t.datetime "updated_at"
+ t.index ["asin"], name: "index_tools_on_asin", using: :btree
+ t.index ["name"], name: "index_tools_on_name", unique: true, using: :btree
end
- add_index "tools", ["asin"], name: "index_tools_on_asin", using: :btree
- add_index "tools", ["name"], name: "index_tools_on_name", unique: true, using: :btree
-
create_table "tutorials", force: :cascade do |t|
t.string "heading"
t.text "description"
@@ -191,11 +178,10 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.string "image_url"
t.string "author"
t.string "author_url"
+ t.index ["user_id"], name: "index_tutorials_on_user_id", using: :btree
end
- add_index "tutorials", ["user_id"], name: "index_tutorials_on_user_id", using: :btree
-
- create_table "user_sessions", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+ create_table "user_sessions", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
@@ -204,13 +190,12 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.text "user_agent"
t.datetime "accessed_at"
t.datetime "revoked_at"
+ t.index ["accessed_at"], name: "index_user_sessions_on_accessed_at", using: :btree
+ t.index ["key"], name: "index_user_sessions_on_key", using: :btree
+ t.index ["revoked_at"], name: "index_user_sessions_on_revoked_at", using: :btree
+ t.index ["user_id"], name: "index_user_sessions_on_user_id", using: :btree
end
- add_index "user_sessions", ["accessed_at"], name: "index_user_sessions_on_accessed_at", using: :btree
- add_index "user_sessions", ["key"], name: "index_user_sessions_on_key", using: :btree
- add_index "user_sessions", ["revoked_at"], name: "index_user_sessions_on_revoked_at", using: :btree
- add_index "user_sessions", ["user_id"], name: "index_user_sessions_on_user_id", using: :btree
-
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "password_digest", default: "", null: false
@@ -227,18 +212,17 @@ ActiveRecord::Schema.define(version: 20170831205234) do
t.string "full_address"
t.integer "creations_count", default: 0
t.boolean "admin"
+ t.integer "photos_count", default: 0
+ t.index ["authentication_token"], name: "index_users_on_authentication_token", unique: true, using: :btree
+ t.index ["created_at"], name: "index_users_on_created_at", using: :btree
+ t.index ["email"], name: "index_users_on_email", unique: true, using: :btree
+ t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
end
- add_index "users", ["authentication_token"], name: "index_users_on_authentication_token", unique: true, using: :btree
- add_index "users", ["created_at"], name: "index_users_on_created_at", using: :btree
- add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
- add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
-
create_table "users_interests", id: false, force: :cascade do |t|
t.integer "user_id"
t.integer "interest_id"
+ t.index ["interest_id", "user_id"], name: "index_users_interests_on_interest_id_and_user_id", using: :btree
end
- add_index "users_interests", ["interest_id", "user_id"], name: "index_users_interests_on_interest_id_and_user_id", using: :btree
-
end
spec/controllers/admin/photos_controller_spec.rb
@@ -14,7 +14,7 @@ module Admin
it "re-processes the photo" do
allow(ReProcessPhotoJob).to receive(:perform_later)
- put :update, id: photo.id
+ put :update, params: { id: photo.id }
expect(ReProcessPhotoJob).to have_received(:perform_later).with(photo)
end
spec/controllers/admin/products_controller_spec.rb
@@ -20,7 +20,7 @@ module Admin
product = "product"
allow(product_api).to receive(:find).with(asin).and_return(product)
- get :show, id: asin
+ get :show, params: { id: asin }
expect(assigns(:product)).to eql(product)
end
@@ -29,14 +29,14 @@ module Admin
let(:tool) { create(:tool) }
it "loads the tool" do
- get :show, id: tool.asin
+ get :show, params: { id: tool.asin }
expect(assigns(:tool)).to eql(tool)
end
end
context "when the tool is not in the toolbox" do
it "does not load a tool" do
- get :show, id: "not_added"
+ get :show, params: { id: "not_added" }
expect(assigns(:tool)).to be_nil
end
end
@@ -44,7 +44,7 @@ module Admin
describe "#create" do
it "creates new tool" do
- post :create, {:name=>"pan", :asin=>"34234"}
+ post :create, params: { name: "pan", asin: "34234" }
expect(Tool.count).to eql(1)
expect(Tool.first.name).to eql("pan")
@@ -52,7 +52,7 @@ module Admin
end
it "redirects back to the detail page" do
- post :create, {name: 'blah', asin: 'blah' }
+ post :create, params: { name: 'blah', asin: 'blah' }
expect(response).to redirect_to(admin_product_path('blah'))
end
end
spec/controllers/admin/sessions_controller_spec.rb
@@ -24,7 +24,7 @@ module Admin
before :each do
allow(UserSession).to receive(:find).with(user_session.id).and_return(user_session)
allow(user_session).to receive(:revoke!).and_return(true)
- delete :destroy, id: user_session.id
+ delete :destroy, params: { id: user_session.id }
end
it "revokes the specified session" do
spec/controllers/admin/users_controller_spec.rb
@@ -21,7 +21,7 @@ module Admin
repository = double
allow(controller).to receive(:repository).and_return(repository)
allow(repository).to receive(:search_with).and_return([matching_user])
- get :index, q: 'mo'
+ get :index, params: { q: 'mo' }
expect(assigns(:users)).to include(matching_user)
end
end
@@ -30,7 +30,7 @@ module Admin
let!(:user) { create(:user) }
it "loads the details on the specific user" do
- get :show, id: user.id
+ get :show, params: { id: user.id }
expect(assigns(:user)).to eql(user)
end
end
spec/controllers/api/v1/cakes_controller_spec.rb
@@ -16,7 +16,7 @@ describe Api::V1::CakesController do
before :each do
user.creations << my_cake
- xhr :get, :index
+ get :index, xhr: true
end
it "returns all of my cakes" do
@@ -33,7 +33,7 @@ describe Api::V1::CakesController do
before :each do
user.creations << cake
- xhr :get, :show, id: cake.id
+ get :show, params: { id: cake.id }, xhr: true
end
it "loads a specific cake" do
@@ -45,7 +45,7 @@ describe Api::V1::CakesController do
let(:category) { create(:category) }
it "creates a new project" do
- xhr :post, :create, cake: { name: "new-cake", category_id: category.id }
+ post :create, params: { cake: { name: "new-cake", category_id: category.id } }, xhr: true
expect(Creation.count).to eql(1)
expect(Creation.first.name).to eql("new-cake")
@@ -59,7 +59,7 @@ describe Api::V1::CakesController do
it "tags the cake" do
tags = ["cake", "cookies", "yummy"]
- xhr :patch, :update, id: cake.id, cake: { tags: tags.join(", ") }
+ patch :update, params: { id: cake.id, cake: { tags: tags.join(", ") } }, xhr: true
cake.reload
expect(cake.tags.pluck(:name)).to match_array(tags)
@@ -67,7 +67,7 @@ describe Api::V1::CakesController do
it "updates the description" do
new_story = "what is the haps on the craps"
- xhr :patch, :update, id: cake.id, cake: { story: new_story }
+ patch :update, params: { id: cake.id, cake: { story: new_story } }, xhr: true
cake.reload
expect(cake.story).to eql(new_story)
@@ -75,7 +75,7 @@ describe Api::V1::CakesController do
it "updates the category" do
category = create(:category)
- xhr :patch, :update, id: cake.id, cake: { category_id: category.id }
+ patch :update, params: { id: cake.id, cake: { category_id: category.id } }, xhr: true
cake.reload
expect(cake.category).to eql(category)
@@ -87,7 +87,7 @@ describe Api::V1::CakesController do
before :each do
user.creations << cake
- xhr :delete, :destroy, id: cake.id
+ delete :destroy, params: { id: cake.id }, xhr: true
end
it "deletes the specified cake" do
spec/controllers/api/v1/categories_controller_spec.rb
@@ -7,7 +7,7 @@ module Api
describe "#index" do
it 'loads all the categories' do
- xhr :get, :index
+ get :index, xhr: true
expect(assigns(:categories)).to match_array(Category.all)
end
end
spec/controllers/api/v1/logins_controller_spec.rb
@@ -7,7 +7,7 @@ describe Api::V1::LoginsController do
let(:user) { create(:user) }
it "returns the auth token" do
- post :create, { email: user.email, password: 'password' }
+ post :create, params: { email: user.email, password: 'password' }, xhr: true
expected_json = { auth_token: user.authentication_token }.to_json
expect(response.body).to eql(expected_json)
end
@@ -16,7 +16,9 @@ describe Api::V1::LoginsController do
context "when logging in with invalid credentials" do
let(:user) { create(:user) }
- before { post :create, { email: user.email, password: user.password.reverse } }
+ before do
+ post :create, params: { email: user.email, password: user.password.reverse }, xhr: true
+ end
it "returns an empty auth token" do
expect(response.body).to eql({ auth_token: "" }.to_json)
spec/controllers/api/v1/photos_controller_spec.rb
@@ -14,7 +14,7 @@ module Api
describe "#index" do
it "loads the cakes photos" do
- xhr :get, :index, cake_id: cake.id
+ get :index, params: { cake_id: cake.id }, xhr: true
expect(assigns(:photos)).to match_array(cake.photos)
end
end
@@ -23,7 +23,7 @@ module Api
let(:photo) { create(:photo, imageable: cake) }
it "loads the photo" do
- xhr :get, :show, cake_id: cake.id, id: photo.id
+ get :show, params: { cake_id: cake.id, id: photo.id }, xhr: true
expect(assigns(:photo)).to eql(photo)
end
end
@@ -34,7 +34,7 @@ module Api
it "attaches a new photo to a cake" do
allow(ProcessPhotoJob).to receive(:perform_later)
- xhr :post, :create, cake_id: cake.id, watermark: "watery", image: file
+ post :create, params: { cake_id: cake.id, watermark: "watery", image: file }, xhr: true
cake.reload
expect(cake.photos.count).to eql(1)
spec/controllers/api/v1/profiles_controller_spec.rb
@@ -12,7 +12,7 @@ module Api
describe "#show" do
it "loads the current users profile" do
- xhr :get, :show, id: "me"
+ get :show, params: { id: "me" }, xhr: true
expect(assigns(:profile)).to eql(user)
end
end
@@ -28,7 +28,7 @@ module Api
facebook: "facebookie",
}
- xhr :patch, :update, id: "me", profile: new_attributes
+ patch :update, params: { id: "me", profile: new_attributes }, xhr: true
user.reload
expect(user.name).to eql("new name")
@@ -40,7 +40,7 @@ module Api
end
it "returns errors" do
- xhr :patch, :update, id: "me", profile: { email: "" }
+ patch :update, params: { id: "me", profile: { email: "" } }, xhr: true
json = JSON.parse(response.body)
expect(json["email"]).to_not be_empty
end
spec/controllers/api/v1/tutorials_controller_spec.rb
@@ -13,7 +13,7 @@ describe Api::V1::TutorialsController do
let!(:other_tutorial) { create(:tutorial) }
it "returns the users tutorials" do
- xhr :get, :index
+ get :index, xhr: true
expect(assigns(:tutorials)).to match_array([my_tutorial])
end
end
@@ -27,7 +27,7 @@ describe Api::V1::TutorialsController do
description: "Connect with your friends - and other fascinating people",
tags: "cake,cookie",
}
- xhr :post, :create, tutorial: attributes
+ post :create, params: { tutorial: attributes }, xhr: true
expect(assigns(:tutorial)).to be_present
expect(assigns(:tutorial).url).to eql(attributes[:url])
spec/controllers/api/v2/cakes_controller_spec.rb
@@ -7,27 +7,27 @@ module Api
describe "#index" do
let!(:cakes) { create(:category, slug: "cakes") }
- let!(:cookies) { create(:category, slug: "cookies") }
+ let!(:cookies_category) { create(:category, slug: "cookies") }
let!(:cake) { create(:published_cake, name: "cake", category: cakes) }
let!(:cookie) do
- create(:published_cake, name: "cookie", category: cookies)
+ create(:published_cake, name: "cookie", category: cookies_category)
end
let!(:unpublished_cake) do
create(:cake, name: "unpublished", category: cakes)
end
it "returns all published cakes" do
- xhr :get, :index
+ get :index, xhr: true
expect(assigns(:cakes)).to match_array([cake, cookie])
end
it "returns all cakes in the category" do
- xhr :get, :index, category: cookie.category.slug
+ get :index, params: { category: cookie.category.slug }, xhr: true
expect(assigns(:cakes)).to match_array([cookie])
end
it "returns all cakes matching the search query" do
- xhr :get, :index, q: cake.name[0..2]
+ get :index, params: { q: cake.name[0..2] }, xhr: true
expect(assigns(:cakes)).to match_array([cake])
end
@@ -35,7 +35,7 @@ module Api
cake.tag_list = "cakes"
cake.save!
- xhr :get, :index, tags: "cakes"
+ get :index, params: { tags: "cakes" }, xhr: true
expect(assigns(:cakes)).to match_array([cake])
end
end
@@ -44,7 +44,7 @@ module Api
let!(:cake) { create(:published_cake) }
it "loads the cake" do
- xhr :get, :show, id: cake.id
+ get :show, params: { id: cake.id }, xhr: true
expect(assigns(:cake)).to eql(cake)
end
end
spec/controllers/api/v2/categories_controller_spec.rb
@@ -9,7 +9,7 @@ module Api
let!(:category) { create(:category) }
it "loads all the categories" do
- xhr :get, :index
+ get :index, xhr: true
expect(assigns(:categories)).to match_array([category])
end
end
@@ -19,7 +19,7 @@ module Api
let!(:category) { create(:category) }
it "loads the specified category" do
- xhr :get, :show, id: category.id
+ get :show, params: { id: category.id }, xhr: true
expect(assigns(:category)).to eql(category)
end
end
spec/controllers/api/v2/photos_controller_spec.rb
@@ -10,7 +10,7 @@ module Api
let!(:unprocessed_photo) { create(:photo, image_processing: true) }
it "loads all processed photos" do
- xhr :get, :index
+ get :index, xhr: true
expect(assigns(:photos)).to match_array([processed_photo])
end
end
@@ -20,7 +20,7 @@ module Api
let!(:photo) { create(:photo) }
it "loads the specified photo" do
- xhr :get, :show, id: photo.id
+ get :show, params: { id: photo.id }, xhr: true
expect(assigns(:photo)).to eql(photo)
end
end
spec/controllers/api/v2/tutorials_controller_spec.rb
@@ -9,7 +9,7 @@ module Api
let!(:tutorial) { create(:tutorial) }
before :each do
- xhr :get, :index
+ get :index, xhr: true
end
it "loads all the tutorials" do
@@ -33,7 +33,7 @@ module Api
let!(:tutorial) { create(:tutorial) }
it "loads the single tutorial" do
- xhr :get, :show, id: tutorial.id
+ get :show, params: { id: tutorial.id }, xhr: true
expect(assigns(:tutorial)).to eql(tutorial)
end
end
spec/controllers/api/v2/users_controller_spec.rb
@@ -9,7 +9,7 @@ module Api
let!(:user) { create(:user) }
it "loads all users" do
- xhr :get, :index
+ get :index, xhr: true
expect(assigns(:users)).to match_array([user])
end
end
@@ -18,7 +18,7 @@ module Api
let!(:user) { create(:user) }
it "loads the info on the user" do
- xhr :get, :show, id: user.id
+ get :show, params: { id: user.id }, xhr: true
expect(assigns(:user)).to eql(user)
end
end
spec/controllers/my/avatars_controller_spec.rb
@@ -10,7 +10,7 @@ describe My::AvatarsController do
context "when uploading a new avatar" do
let(:image) { Rack::Test::UploadedFile.new('spec/fixtures/images/gorilla.jpg', 'image/jpeg') }
- before { post :create, photo: { image: image } }
+ before { post :create, params: { photo: { image: image } } }
it "saves the new avatar" do
user.reload
@@ -29,7 +29,7 @@ describe My::AvatarsController do
end
describe "#new" do
- before { get :new, id: user.id }
+ before { get :new, params: { id: user.id } }
it "displays the current avatar" do
expect(assigns(:avatar)).to_not be_nil
spec/controllers/my/passwords_controller_spec.rb
@@ -6,7 +6,7 @@ describe My::PasswordsController do
let(:user) { create(:user) }
it "redirects you to the login page" do
- put :update, id: user.id
+ put :update, params: { id: user.id }
expect(response).to redirect_to(login_path)
end
end
@@ -18,9 +18,12 @@ describe My::PasswordsController do
context "when the new password and the confirmation password does not match" do
before :each do
- put :update, id: user.id, user: {
- password: "foobar",
- password_confirmation: "barfoo"
+ put :update, params: {
+ id: user.id,
+ user: {
+ password: "foobar",
+ password_confirmation: "barfoo"
+ }
}
end
@@ -38,9 +41,12 @@ describe My::PasswordsController do
let(:new_password) { "booyakasham" }
before :each do
- put :update, id: user.id, user: {
- password: new_password,
- password_confirmation: new_password
+ put :update, params: {
+ id: user.id,
+ user: {
+ password: new_password,
+ password_confirmation: new_password
+ }
}
end
spec/controllers/my/settings_controller_spec.rb
@@ -15,7 +15,17 @@ describe My::SettingsController do
before :each do
http_login(user)
- patch :update, id: user.id, user: { name: 'mo khan', email: 'mo@mokhan.ca', city: 'Calgary', website: 'http://mokhan.ca/', twitter: 'mocheen', facebook: 'fb' }
+ patch :update, params: {
+ id: user.id,
+ user: {
+ name: 'mo khan',
+ email: 'mo@mokhan.ca',
+ city: 'Calgary',
+ website: 'http://mokhan.ca/',
+ twitter: 'mocheen',
+ facebook: 'fb'
+ }
+ }
end
it "updates the users settings" do
spec/controllers/favorites_controller_spec.rb
@@ -9,7 +9,7 @@ describe FavoritesController do
context "when adding a cake to your favorites" do
before :each do
- post :create, cake_id: cake.id
+ post :create, params: { cake_id: cake.id }
end
it "should add the cake to the logged in users favorites" do
spec/controllers/passwords_controller_spec.rb
@@ -14,7 +14,7 @@ describe PasswordsController do
it "sends a password reset email for the user" do
allow(PasswordReset).to receive(:send_reset_instructions_to)
- post :create, user: { email: email }
+ post :create, params: { user: { email: email } }
expect(PasswordReset).to have_received(:send_reset_instructions_to).with(email)
expect(response).to redirect_to(new_session_path)
@@ -28,13 +28,13 @@ describe PasswordsController do
it "loads the password reset token" do
allow(User).to receive(:find_by).with(reset_password_token: reset_token).and_return(user)
- get :edit, id: reset_token
+ get :edit, params: { id: reset_token }
expect(assigns(:user)).to eql(user)
end
it "redirects to the homepage if the user cannot be found" do
allow(User).to receive(:find_by).with(reset_password_token: reset_token).and_return(nil)
- get :edit, id: reset_token
+ get :edit, params: { id: reset_token }
expect(response).to redirect_to(root_path)
end
end
@@ -47,7 +47,7 @@ describe PasswordsController do
it "resets the users password" do
allow(PasswordReset).to receive(:reset).with(reset_token, password).and_return(user)
- patch :update, id: reset_token, user: { password: password }
+ patch :update, params: { id: reset_token, user: { password: password } }
expect(PasswordReset).to have_received(:reset).with(reset_token, password)
expect(response).to redirect_to(new_session_path)
end
spec/controllers/profiles_controller_spec.rb
@@ -16,7 +16,7 @@ describe ProfilesController do
let(:creation) { create(:creation, user: user) }
before :each do
- get :show, id: user.id
+ get :show, params: { id: user.id }
end
it "returns a successful response" do
spec/controllers/registrations_controller_spec.rb
@@ -7,7 +7,7 @@ describe RegistrationsController do
it 'creates a new user' do
allow(User).to receive(:login).with('mo@cakeside.com', 'password').and_return(user_session)
- post :create, user: { name: 'mo', email: 'mo@cakeside.com', password: 'password' }
+ post :create, params: { user: { name: 'mo', email: 'mo@cakeside.com', password: 'password' } }
expect(User.count).to eql(1)
expect(response).to redirect_to(my_dashboard_path)
@@ -16,7 +16,7 @@ describe RegistrationsController do
end
it 'displays errors' do
- post :create, user: { name: 'mo', email: 'mo', password: 'password', password_confirmation: 'password' }
+ post :create, params: { user: { name: 'mo', email: 'mo', password: 'password', password_confirmation: 'password' } }
expect(response).to redirect_to(new_session_path)
expect(flash[:error]).to_not be_empty
end
spec/controllers/search_controller_spec.rb
@@ -18,7 +18,7 @@ describe SearchController do
let!(:tutorial) { create(:tutorial, :description => 'cake') }
let!(:other_tutorial) { create(:tutorial, :description => 'donut') }
- before { get :index, { :q => 'cake' } }
+ before { get :index, params: { q: 'cake' } }
it "returns a successful response" do
expect(response).to be_success
spec/controllers/sessions_controller_spec.rb
@@ -30,7 +30,7 @@ describe SessionsController do
before :each do
allow(User).to receive(:login).with(email, password).and_return(user_session)
- post :create, session: { email: email, password: password }
+ post :create, params: { session: { email: email, password: password } }
end
it "returns a valid session" do
@@ -48,7 +48,7 @@ describe SessionsController do
end
it "returns an error" do
- post :create, session: { email: 'x', password: 'y' }
+ post :create, params: { session: { email: 'x', password: 'y' } }
expect(response).to redirect_to(login_path)
expect(flash[:error]).to_not be_empty
end
@@ -61,7 +61,7 @@ describe SessionsController do
before :each do
session[:raphael] = user_session.key
allow(controller).to receive(:user_session).and_return(user_session)
- delete :destroy, id: "me"
+ delete :destroy, params: { id: "me" }
end
it { expect(session[:raphael]).to be_nil }
spec/controllers/tutorials_controller_spec.rb
@@ -23,7 +23,7 @@ describe TutorialsController do
before :each do
user.tutorials << tutorial
- get :show, :id => tutorial.to_param
+ get :show, params: { id: tutorial.to_param }
end
it "assigns the requested tutorial" do
Gemfile
@@ -73,6 +73,7 @@ group :development, :test do
gem 'phantomjs', :require => 'phantomjs/poltergeist'
gem 'poltergeist'
gem 'puma'
+ gem 'rails-controller-testing'
gem 'rspec-rails'
gem 'simplecov', require: false
gem 'spring'
Gemfile.lock
@@ -807,6 +807,10 @@ GEM
bundler (>= 1.3.0)
railties (= 5.0.6)
sprockets-rails (>= 2.0.0)
+ rails-controller-testing (1.0.2)
+ actionpack (~> 5.x, >= 5.0.1)
+ actionview (~> 5.x, >= 5.0.1)
+ activesupport (~> 5.x)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
@@ -1010,6 +1014,7 @@ DEPENDENCIES
rack-cors
rack-mini-profiler
rails (~> 5.0)
+ rails-controller-testing
rspec-rails
sass-rails (~> 5.0)
simplecov