rails_magic_renamer 2.0.0.pre.alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/CHANGELOG +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +173 -0
- data/Guardfile +11 -0
- data/Manifest +8 -0
- data/README.md +59 -0
- data/ROADMAP.md +60 -0
- data/Rakefile +2 -0
- data/lib/rails_magic_renamer.rb +343 -0
- data/lib/rails_magic_renamer/exceptions.rb +35 -0
- data/lib/rails_magic_renamer/version.rb +3 -0
- data/rails_magic_renamer.gemspec +36 -0
- data/spec/rails_helper.rb +26 -0
- data/spec/rails_magic_renamer_spec.rb +22 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/sample_app_rails_4/.gitignore +19 -0
- data/spec/support/sample_app_rails_4/.rspec +2 -0
- data/spec/support/sample_app_rails_4/Gemfile +58 -0
- data/spec/support/sample_app_rails_4/Gemfile.lock +249 -0
- data/spec/support/sample_app_rails_4/Guardfile +53 -0
- data/spec/support/sample_app_rails_4/LICENSE +21 -0
- data/spec/support/sample_app_rails_4/README.md +25 -0
- data/spec/support/sample_app_rails_4/README.nitrous.md +20 -0
- data/spec/support/sample_app_rails_4/Rakefile +6 -0
- data/spec/support/sample_app_rails_4/app/assets/images/rails.png +0 -0
- data/spec/support/sample_app_rails_4/app/assets/javascripts/application.js +17 -0
- data/spec/support/sample_app_rails_4/app/assets/javascripts/sessions.js.coffee +3 -0
- data/spec/support/sample_app_rails_4/app/assets/javascripts/static_pages.js.coffee +3 -0
- data/spec/support/sample_app_rails_4/app/assets/javascripts/users.js.coffee +3 -0
- data/spec/support/sample_app_rails_4/app/assets/stylesheets/application.css +13 -0
- data/spec/support/sample_app_rails_4/app/assets/stylesheets/custom.css.scss +246 -0
- data/spec/support/sample_app_rails_4/app/assets/stylesheets/sessions.css.scss +3 -0
- data/spec/support/sample_app_rails_4/app/assets/stylesheets/static_pages.css.scss +3 -0
- data/spec/support/sample_app_rails_4/app/assets/stylesheets/users.css.scss +3 -0
- data/spec/support/sample_app_rails_4/app/controllers/application_controller.rb +6 -0
- data/spec/support/sample_app_rails_4/app/controllers/concerns/.keep +0 -0
- data/spec/support/sample_app_rails_4/app/controllers/microposts_controller.rb +31 -0
- data/spec/support/sample_app_rails_4/app/controllers/relationships_controller.rb +21 -0
- data/spec/support/sample_app_rails_4/app/controllers/sessions_controller.rb +21 -0
- data/spec/support/sample_app_rails_4/app/controllers/static_pages_controller.rb +18 -0
- data/spec/support/sample_app_rails_4/app/controllers/users_controller.rb +80 -0
- data/spec/support/sample_app_rails_4/app/helpers/application_helper.rb +12 -0
- data/spec/support/sample_app_rails_4/app/helpers/sessions_helper.rb +49 -0
- data/spec/support/sample_app_rails_4/app/helpers/static_pages_helper.rb +2 -0
- data/spec/support/sample_app_rails_4/app/helpers/users_helper.rb +10 -0
- data/spec/support/sample_app_rails_4/app/mailers/.keep +0 -0
- data/spec/support/sample_app_rails_4/app/models/.keep +0 -0
- data/spec/support/sample_app_rails_4/app/models/comment.rb +5 -0
- data/spec/support/sample_app_rails_4/app/models/concerns/.keep +0 -0
- data/spec/support/sample_app_rails_4/app/models/micropost.rb +14 -0
- data/spec/support/sample_app_rails_4/app/models/organisation.rb +3 -0
- data/spec/support/sample_app_rails_4/app/models/relationship.rb +6 -0
- data/spec/support/sample_app_rails_4/app/models/user.rb +57 -0
- data/spec/support/sample_app_rails_4/app/models/user_comment.rb +5 -0
- data/spec/support/sample_app_rails_4/app/views/layouts/_footer.html.erb +13 -0
- data/spec/support/sample_app_rails_4/app/views/layouts/_header.html.erb +31 -0
- data/spec/support/sample_app_rails_4/app/views/layouts/_shim.html.erb +3 -0
- data/spec/support/sample_app_rails_4/app/views/layouts/application.html.erb +22 -0
- data/spec/support/sample_app_rails_4/app/views/microposts/_micropost.html.erb +11 -0
- data/spec/support/sample_app_rails_4/app/views/relationships/create.js.erb +2 -0
- data/spec/support/sample_app_rails_4/app/views/relationships/destroy.js.erb +2 -0
- data/spec/support/sample_app_rails_4/app/views/sessions/new.html.erb +19 -0
- data/spec/support/sample_app_rails_4/app/views/shared/_error_messages.html.erb +12 -0
- data/spec/support/sample_app_rails_4/app/views/shared/_feed.html.erb +6 -0
- data/spec/support/sample_app_rails_4/app/views/shared/_feed_item.html.erb +15 -0
- data/spec/support/sample_app_rails_4/app/views/shared/_micropost_form.html.erb +7 -0
- data/spec/support/sample_app_rails_4/app/views/shared/_stats.html.erb +15 -0
- data/spec/support/sample_app_rails_4/app/views/shared/_user_info.html.erb +12 -0
- data/spec/support/sample_app_rails_4/app/views/static_pages/about.html.erb +8 -0
- data/spec/support/sample_app_rails_4/app/views/static_pages/contact.html.erb +6 -0
- data/spec/support/sample_app_rails_4/app/views/static_pages/help.html.erb +8 -0
- data/spec/support/sample_app_rails_4/app/views/static_pages/home.html.erb +34 -0
- data/spec/support/sample_app_rails_4/app/views/static_pages/show.html.erb +0 -0
- data/spec/support/sample_app_rails_4/app/views/users/_follow.html.erb +5 -0
- data/spec/support/sample_app_rails_4/app/views/users/_follow_form.html.erb +9 -0
- data/spec/support/sample_app_rails_4/app/views/users/_unfollow.html.erb +5 -0
- data/spec/support/sample_app_rails_4/app/views/users/_user.html.erb +8 -0
- data/spec/support/sample_app_rails_4/app/views/users/edit.html.erb +27 -0
- data/spec/support/sample_app_rails_4/app/views/users/index.html.erb +10 -0
- data/spec/support/sample_app_rails_4/app/views/users/new.html.erb +24 -0
- data/spec/support/sample_app_rails_4/app/views/users/show.html.erb +24 -0
- data/spec/support/sample_app_rails_4/app/views/users/show_follow.html.erb +30 -0
- data/spec/support/sample_app_rails_4/bin/bundle +3 -0
- data/spec/support/sample_app_rails_4/bin/rails +4 -0
- data/spec/support/sample_app_rails_4/bin/rake +4 -0
- data/spec/support/sample_app_rails_4/config.ru +4 -0
- data/spec/support/sample_app_rails_4/config/application.rb +31 -0
- data/spec/support/sample_app_rails_4/config/boot.rb +4 -0
- data/spec/support/sample_app_rails_4/config/cucumber.yml +8 -0
- data/spec/support/sample_app_rails_4/config/database.yml +12 -0
- data/spec/support/sample_app_rails_4/config/environment.rb +7 -0
- data/spec/support/sample_app_rails_4/config/environments/development.rb +27 -0
- data/spec/support/sample_app_rails_4/config/environments/production.rb +79 -0
- data/spec/support/sample_app_rails_4/config/environments/test.rb +39 -0
- data/spec/support/sample_app_rails_4/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/support/sample_app_rails_4/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/support/sample_app_rails_4/config/initializers/inflections.rb +16 -0
- data/spec/support/sample_app_rails_4/config/initializers/mime_types.rb +5 -0
- data/spec/support/sample_app_rails_4/config/initializers/secret_token.rb +22 -0
- data/spec/support/sample_app_rails_4/config/initializers/session_store.rb +3 -0
- data/spec/support/sample_app_rails_4/config/initializers/wrap_parameters.rb +14 -0
- data/spec/support/sample_app_rails_4/config/locales/en.yml +23 -0
- data/spec/support/sample_app_rails_4/config/routes.rb +17 -0
- data/spec/support/sample_app_rails_4/db/development.sqlite3 +0 -0
- data/spec/support/sample_app_rails_4/db/migrate/20130311191400_create_users.rb +10 -0
- data/spec/support/sample_app_rails_4/db/migrate/20130311194153_add_index_to_users_email.rb +5 -0
- data/spec/support/sample_app_rails_4/db/migrate/20130311201841_add_password_digest_to_users.rb +5 -0
- data/spec/support/sample_app_rails_4/db/migrate/20130314184954_add_remember_token_to_users.rb +6 -0
- data/spec/support/sample_app_rails_4/db/migrate/20130315015932_add_admin_to_users.rb +5 -0
- data/spec/support/sample_app_rails_4/db/migrate/20130315175534_create_microposts.rb +11 -0
- data/spec/support/sample_app_rails_4/db/migrate/20130315230445_create_relationships.rb +13 -0
- data/spec/support/sample_app_rails_4/db/migrate/20160424113439_create_comments.rb +8 -0
- data/spec/support/sample_app_rails_4/db/migrate/20160424113451_create_user_comments.rb +8 -0
- data/spec/support/sample_app_rails_4/db/migrate/20160424114701_create_organisations.rb +8 -0
- data/spec/support/sample_app_rails_4/db/migrate/20160424114727_add_organisation_id_to_users.rb +5 -0
- data/spec/support/sample_app_rails_4/db/schema.rb +67 -0
- data/spec/support/sample_app_rails_4/db/seeds.rb +7 -0
- data/spec/support/sample_app_rails_4/db/test.sqlite3 +0 -0
- data/spec/support/sample_app_rails_4/factory_girl.rb +7 -0
- data/spec/support/sample_app_rails_4/features/signing_in.feature +13 -0
- data/spec/support/sample_app_rails_4/features/step_definitions/authentication_steps.rb +30 -0
- data/spec/support/sample_app_rails_4/features/support/env.rb +59 -0
- data/spec/support/sample_app_rails_4/lib/assets/.keep +0 -0
- data/spec/support/sample_app_rails_4/lib/tasks/.keep +0 -0
- data/spec/support/sample_app_rails_4/lib/tasks/cucumber.rake +65 -0
- data/spec/support/sample_app_rails_4/lib/tasks/sample_data.rake +42 -0
- data/spec/support/sample_app_rails_4/log/.keep +0 -0
- data/spec/support/sample_app_rails_4/public/404.html +27 -0
- data/spec/support/sample_app_rails_4/public/422.html +26 -0
- data/spec/support/sample_app_rails_4/public/500.html +26 -0
- data/spec/support/sample_app_rails_4/public/assets/application-4962059d8f80f9bb096692bacc29c4e8.css +5091 -0
- data/spec/support/sample_app_rails_4/public/assets/application-4962059d8f80f9bb096692bacc29c4e8.css.gz +0 -0
- data/spec/support/sample_app_rails_4/public/assets/application-eeb856e3fe2c8f879c91d0e81d59cb40.js +12952 -0
- data/spec/support/sample_app_rails_4/public/assets/application-eeb856e3fe2c8f879c91d0e81d59cb40.js.gz +0 -0
- data/spec/support/sample_app_rails_4/public/assets/glyphicons-halflings-c806376f05e4ccabe2c5315a8e95667c.png +0 -0
- data/spec/support/sample_app_rails_4/public/assets/glyphicons-halflings-white-62b67d9edee3db90d18833087f848d6e.png +0 -0
- data/spec/support/sample_app_rails_4/public/assets/manifest-802de9eb1c853769101852422b620883.json +1 -0
- data/spec/support/sample_app_rails_4/public/assets/rails-231a680f23887d9dd70710ea5efd3c62.png +0 -0
- data/spec/support/sample_app_rails_4/public/favicon.ico +0 -0
- data/spec/support/sample_app_rails_4/public/robots.txt +5 -0
- data/spec/support/sample_app_rails_4/script/cucumber +10 -0
- data/spec/support/sample_app_rails_4/spec/controllers/relationships_controller_spec.rb +42 -0
- data/spec/support/sample_app_rails_4/spec/factories.rb +17 -0
- data/spec/support/sample_app_rails_4/spec/features/authentication_pages_spec.rb +155 -0
- data/spec/support/sample_app_rails_4/spec/features/micropost_pages_spec.rb +45 -0
- data/spec/support/sample_app_rails_4/spec/features/static_pages_spec.rb +64 -0
- data/spec/support/sample_app_rails_4/spec/features/user_pages_spec.rb +239 -0
- data/spec/support/sample_app_rails_4/spec/helpers/application_helper_spec.rb +18 -0
- data/spec/support/sample_app_rails_4/spec/models/comments_spec.rb +5 -0
- data/spec/support/sample_app_rails_4/spec/models/micropost_spec.rb +30 -0
- data/spec/support/sample_app_rails_4/spec/models/organisation_spec.rb +5 -0
- data/spec/support/sample_app_rails_4/spec/models/relationship_spec.rb +36 -0
- data/spec/support/sample_app_rails_4/spec/models/user_comments_spec.rb +5 -0
- data/spec/support/sample_app_rails_4/spec/models/user_spec.rb +108 -0
- data/spec/support/sample_app_rails_4/spec/spec_helper.rb +57 -0
- data/spec/support/sample_app_rails_4/spec/support/utilities.rb +21 -0
- data/spec/support/sample_app_rails_4/vendor/assets/javascripts/.keep +0 -0
- data/spec/support/sample_app_rails_4/vendor/assets/stylesheets/.keep +0 -0
- data/tasks/rspec.rake +4 -0
- metadata +534 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/spec/support/sample_app_rails_4/public/assets/manifest-802de9eb1c853769101852422b620883.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"files":{"rails-231a680f23887d9dd70710ea5efd3c62.png":{"logical_path":"rails.png","mtime":"2013-03-06T18:36:31-08:00","size":6646,"digest":"231a680f23887d9dd70710ea5efd3c62"},"application-eeb856e3fe2c8f879c91d0e81d59cb40.js":{"logical_path":"application.js","mtime":"2013-09-06T09:23:56-07:00","size":363970,"digest":"eeb856e3fe2c8f879c91d0e81d59cb40"},"application-4962059d8f80f9bb096692bacc29c4e8.css":{"logical_path":"application.css","mtime":"2013-09-06T13:20:19-07:00","size":134254,"digest":"4962059d8f80f9bb096692bacc29c4e8"},"glyphicons-halflings-white-62b67d9edee3db90d18833087f848d6e.png":{"logical_path":"glyphicons-halflings-white.png","mtime":"2013-06-24T16:40:09-07:00","size":8777,"digest":"62b67d9edee3db90d18833087f848d6e"},"glyphicons-halflings-c806376f05e4ccabe2c5315a8e95667c.png":{"logical_path":"glyphicons-halflings.png","mtime":"2013-06-24T16:40:09-07:00","size":12799,"digest":"c806376f05e4ccabe2c5315a8e95667c"}},"assets":{"rails.png":"rails-231a680f23887d9dd70710ea5efd3c62.png","application.js":"application-eeb856e3fe2c8f879c91d0e81d59cb40.js","application.css":"application-4962059d8f80f9bb096692bacc29c4e8.css","glyphicons-halflings-white.png":"glyphicons-halflings-white-62b67d9edee3db90d18833087f848d6e.png","glyphicons-halflings.png":"glyphicons-halflings-c806376f05e4ccabe2c5315a8e95667c.png"}}
|
|
Binary file
|
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
vendored_cucumber_bin = Dir["#{File.dirname(__FILE__)}/../vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
|
|
4
|
+
if vendored_cucumber_bin
|
|
5
|
+
load File.expand_path(vendored_cucumber_bin)
|
|
6
|
+
else
|
|
7
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
|
8
|
+
require 'cucumber'
|
|
9
|
+
load Cucumber::BINARY
|
|
10
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe RelationshipsController do
|
|
4
|
+
|
|
5
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
6
|
+
# let(:other_user) { FactoryGirl.create(:user) }
|
|
7
|
+
|
|
8
|
+
# before { sign_in user, no_capybara: true }
|
|
9
|
+
|
|
10
|
+
# describe "creating a relationship with Ajax" do
|
|
11
|
+
|
|
12
|
+
# it "should increment the Relationship count" do
|
|
13
|
+
# expect do
|
|
14
|
+
# xhr :post, :create, relationship: { followed_id: other_user.id }
|
|
15
|
+
# end.to change(Relationship, :count).by(1)
|
|
16
|
+
# end
|
|
17
|
+
|
|
18
|
+
# it "should respond with success" do
|
|
19
|
+
# xhr :post, :create, relationship: { followed_id: other_user.id }
|
|
20
|
+
# expect(response).to be_success
|
|
21
|
+
# end
|
|
22
|
+
# end
|
|
23
|
+
|
|
24
|
+
# describe "destroying a relationship with Ajax" do
|
|
25
|
+
|
|
26
|
+
# before { user.follow!(other_user) }
|
|
27
|
+
# let(:relationship) do
|
|
28
|
+
# user.relationships.find_by(followed_id: other_user.id)
|
|
29
|
+
# end
|
|
30
|
+
|
|
31
|
+
# it "should decrement the Relationship count" do
|
|
32
|
+
# expect do
|
|
33
|
+
# xhr :delete, :destroy, id: relationship.id
|
|
34
|
+
# end.to change(Relationship, :count).by(-1)
|
|
35
|
+
# end
|
|
36
|
+
|
|
37
|
+
# it "should respond with success" do
|
|
38
|
+
# xhr :delete, :destroy, id: relationship.id
|
|
39
|
+
# expect(response).to be_success
|
|
40
|
+
# end
|
|
41
|
+
# end
|
|
42
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
FactoryGirl.define do
|
|
2
|
+
factory :user do
|
|
3
|
+
sequence(:name) { |n| "Person #{n}" }
|
|
4
|
+
email { "person_#{rand(10000)}@example.com"}
|
|
5
|
+
password "foobar"
|
|
6
|
+
password_confirmation "foobar"
|
|
7
|
+
|
|
8
|
+
factory :admin do
|
|
9
|
+
admin true
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
factory :micropost do
|
|
14
|
+
content "Lorem ipsum"
|
|
15
|
+
user
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe "Authentication" do
|
|
4
|
+
|
|
5
|
+
# subject { page }
|
|
6
|
+
|
|
7
|
+
# describe "signin page" do
|
|
8
|
+
# before { visit signin_path }
|
|
9
|
+
|
|
10
|
+
# it { should have_content('Sign in') }
|
|
11
|
+
# it { should have_title('Sign in') }
|
|
12
|
+
# end
|
|
13
|
+
|
|
14
|
+
# describe "signin" do
|
|
15
|
+
# before { visit signin_path }
|
|
16
|
+
|
|
17
|
+
# describe "with invalid information" do
|
|
18
|
+
# before { click_button "Sign in" }
|
|
19
|
+
|
|
20
|
+
# it { should have_title('Sign in') }
|
|
21
|
+
# it { should have_error_message('Invalid') }
|
|
22
|
+
|
|
23
|
+
# describe "after visiting another page" do
|
|
24
|
+
# before { click_link "Home" }
|
|
25
|
+
# it { should_not have_selector('div.alert.alert-error') }
|
|
26
|
+
# end
|
|
27
|
+
# end
|
|
28
|
+
|
|
29
|
+
# describe "with valid information" do
|
|
30
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
31
|
+
# before do
|
|
32
|
+
# fill_in "Email", with: user.email.upcase
|
|
33
|
+
# fill_in "Password", with: user.password
|
|
34
|
+
# click_button "Sign in"
|
|
35
|
+
# end
|
|
36
|
+
|
|
37
|
+
# it { should have_title(user.name) }
|
|
38
|
+
# it { should have_link('Users', href: users_path) }
|
|
39
|
+
# it { should have_link('Profile', href: user_path(user)) }
|
|
40
|
+
# it { should have_link('Settings', href: edit_user_path(user)) }
|
|
41
|
+
# it { should have_link('Sign out', href: signout_path) }
|
|
42
|
+
# it { should_not have_link('Sign in', href: signin_path) }
|
|
43
|
+
|
|
44
|
+
# describe "followed by signout" do
|
|
45
|
+
# before { click_link "Sign out" }
|
|
46
|
+
# it { should have_link('Sign in') }
|
|
47
|
+
# end
|
|
48
|
+
# end
|
|
49
|
+
# end
|
|
50
|
+
|
|
51
|
+
# describe "authorization" do
|
|
52
|
+
|
|
53
|
+
# describe "for non-signed-in users" do
|
|
54
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
55
|
+
|
|
56
|
+
# describe "when attempting to visit a protected page" do
|
|
57
|
+
# before do
|
|
58
|
+
# visit edit_user_path(user)
|
|
59
|
+
# fill_in "Email", with: user.email
|
|
60
|
+
# fill_in "Password", with: user.password
|
|
61
|
+
# click_button "Sign in"
|
|
62
|
+
# end
|
|
63
|
+
|
|
64
|
+
# describe "after signing in" do
|
|
65
|
+
|
|
66
|
+
# it "should render the desired protected page" do
|
|
67
|
+
# expect(page).to have_title('Edit user')
|
|
68
|
+
# end
|
|
69
|
+
# end
|
|
70
|
+
# end
|
|
71
|
+
|
|
72
|
+
# describe "in the Users controller" do
|
|
73
|
+
|
|
74
|
+
# describe "visiting the edit page" do
|
|
75
|
+
# before { visit edit_user_path(user) }
|
|
76
|
+
# it { should have_title('Sign in') }
|
|
77
|
+
# end
|
|
78
|
+
|
|
79
|
+
# describe "submitting to the update action" do
|
|
80
|
+
# before { patch user_path(user) }
|
|
81
|
+
# specify { expect(response).to redirect_to(signin_path) }
|
|
82
|
+
# end
|
|
83
|
+
|
|
84
|
+
# describe "visiting the user index" do
|
|
85
|
+
# before { visit users_path }
|
|
86
|
+
# it { should have_title('Sign in') }
|
|
87
|
+
# end
|
|
88
|
+
|
|
89
|
+
# describe "visiting the following page" do
|
|
90
|
+
# before { visit following_user_path(user) }
|
|
91
|
+
# it { should have_title('Sign in') }
|
|
92
|
+
# end
|
|
93
|
+
|
|
94
|
+
# describe "visiting the followers page" do
|
|
95
|
+
# before { visit followers_user_path(user) }
|
|
96
|
+
# it { should have_title('Sign in') }
|
|
97
|
+
# end
|
|
98
|
+
# end
|
|
99
|
+
|
|
100
|
+
# describe "in the Microposts controller" do
|
|
101
|
+
|
|
102
|
+
# describe "submitting to the create action" do
|
|
103
|
+
# before { post microposts_path }
|
|
104
|
+
# specify { expect(response).to redirect_to(signin_path) }
|
|
105
|
+
# end
|
|
106
|
+
|
|
107
|
+
# describe "submitting to the destroy action" do
|
|
108
|
+
# before { delete micropost_path(FactoryGirl.create(:micropost)) }
|
|
109
|
+
# specify { expect(response).to redirect_to(signin_path) }
|
|
110
|
+
# end
|
|
111
|
+
# end
|
|
112
|
+
|
|
113
|
+
# describe "in the Relationships controller" do
|
|
114
|
+
# describe "submitting to the create action" do
|
|
115
|
+
# before { post relationships_path }
|
|
116
|
+
# specify { expect(response).to redirect_to(signin_path) }
|
|
117
|
+
# end
|
|
118
|
+
|
|
119
|
+
# describe "submitting to the destroy action" do
|
|
120
|
+
# before { delete relationship_path(1) }
|
|
121
|
+
# specify { expect(response).to redirect_to(signin_path) }
|
|
122
|
+
# end
|
|
123
|
+
# end
|
|
124
|
+
# end
|
|
125
|
+
|
|
126
|
+
# describe "as wrong user" do
|
|
127
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
128
|
+
# let(:wrong_user) { FactoryGirl.create(:user, email: "wrong@example.com") }
|
|
129
|
+
# before { sign_in user, no_capybara: true }
|
|
130
|
+
|
|
131
|
+
# describe "submitting a GET request to the Users#edit action" do
|
|
132
|
+
# before { get edit_user_path(wrong_user) }
|
|
133
|
+
# specify { expect(response.body).not_to match(full_title('Edit user')) }
|
|
134
|
+
# specify { expect(response).to redirect_to(root_url) }
|
|
135
|
+
# end
|
|
136
|
+
|
|
137
|
+
# describe "submitting a PATCH request to the Users#update action" do
|
|
138
|
+
# before { patch user_path(wrong_user) }
|
|
139
|
+
# specify { expect(response).to redirect_to(root_url) }
|
|
140
|
+
# end
|
|
141
|
+
# end
|
|
142
|
+
|
|
143
|
+
# describe "as non-admin user" do
|
|
144
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
145
|
+
# let(:non_admin) { FactoryGirl.create(:user) }
|
|
146
|
+
|
|
147
|
+
# before { sign_in non_admin, no_capybara: true }
|
|
148
|
+
|
|
149
|
+
# describe "submitting a DELETE request to the Users#destroy action" do
|
|
150
|
+
# before { delete user_path(user) }
|
|
151
|
+
# specify { expect(response).to redirect_to(root_url) }
|
|
152
|
+
# end
|
|
153
|
+
# end
|
|
154
|
+
# end
|
|
155
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe "Micropost pages" do
|
|
4
|
+
|
|
5
|
+
# subject { page }
|
|
6
|
+
|
|
7
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
8
|
+
# before { sign_in user }
|
|
9
|
+
|
|
10
|
+
# describe "micropost creation" do
|
|
11
|
+
# before { visit root_path }
|
|
12
|
+
|
|
13
|
+
# describe "with invalid information" do
|
|
14
|
+
|
|
15
|
+
# it "should not create a micropost" do
|
|
16
|
+
# expect { click_button "Post" }.not_to change(Micropost, :count)
|
|
17
|
+
# end
|
|
18
|
+
|
|
19
|
+
# describe "error messages" do
|
|
20
|
+
# before { click_button "Post" }
|
|
21
|
+
# it { should have_content('error') }
|
|
22
|
+
# end
|
|
23
|
+
# end
|
|
24
|
+
|
|
25
|
+
# describe "with valid information" do
|
|
26
|
+
|
|
27
|
+
# before { fill_in 'micropost_content', with: "Lorem ipsum" }
|
|
28
|
+
# it "should create a micropost" do
|
|
29
|
+
# expect { click_button "Post" }.to change(Micropost, :count).by(1)
|
|
30
|
+
# end
|
|
31
|
+
# end
|
|
32
|
+
# end
|
|
33
|
+
|
|
34
|
+
# describe "micropost destruction" do
|
|
35
|
+
# before { FactoryGirl.create(:micropost, user: user) }
|
|
36
|
+
|
|
37
|
+
# describe "as correct user" do
|
|
38
|
+
# before { visit root_path }
|
|
39
|
+
|
|
40
|
+
# it "should delete a micropost" do
|
|
41
|
+
# expect { click_link "delete" }.to change(Micropost, :count).by(-1)
|
|
42
|
+
# end
|
|
43
|
+
# end
|
|
44
|
+
# end
|
|
45
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe "Static pages" do
|
|
4
|
+
|
|
5
|
+
# subject { page }
|
|
6
|
+
|
|
7
|
+
# describe "Home page" do
|
|
8
|
+
# before { visit root_path }
|
|
9
|
+
|
|
10
|
+
# it { should have_content('Sample App') }
|
|
11
|
+
# it { should have_title(full_title('')) }
|
|
12
|
+
# it { should_not have_title('| Home') }
|
|
13
|
+
|
|
14
|
+
# describe "for signed-in users" do
|
|
15
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
16
|
+
# before do
|
|
17
|
+
# FactoryGirl.create(:micropost, user: user, content: "Lorem")
|
|
18
|
+
# FactoryGirl.create(:micropost, user: user, content: "Ipsum")
|
|
19
|
+
# sign_in user
|
|
20
|
+
# visit root_path
|
|
21
|
+
# end
|
|
22
|
+
|
|
23
|
+
# it "should render the user's feed" do
|
|
24
|
+
# user.feed.each do |item|
|
|
25
|
+
# expect(page).to have_selector("li##{item.id}", text: item.content)
|
|
26
|
+
# end
|
|
27
|
+
# end
|
|
28
|
+
|
|
29
|
+
# describe "follower/following counts" do
|
|
30
|
+
# let(:other_user) { FactoryGirl.create(:user) }
|
|
31
|
+
# before do
|
|
32
|
+
# other_user.follow!(user)
|
|
33
|
+
# visit root_path
|
|
34
|
+
# end
|
|
35
|
+
|
|
36
|
+
# it { should have_link("0 following", href: following_user_path(user)) }
|
|
37
|
+
# it { should have_link("1 followers", href: followers_user_path(user)) }
|
|
38
|
+
# end
|
|
39
|
+
# end
|
|
40
|
+
# end
|
|
41
|
+
|
|
42
|
+
# describe "Help page" do
|
|
43
|
+
# before { visit help_path }
|
|
44
|
+
|
|
45
|
+
# it { should have_content('Help') }
|
|
46
|
+
# it { should have_title(full_title('Help')) }
|
|
47
|
+
# end
|
|
48
|
+
|
|
49
|
+
# describe "About page" do
|
|
50
|
+
# before { visit about_path }
|
|
51
|
+
|
|
52
|
+
# it { should have_content('About') }
|
|
53
|
+
# it { should have_title(full_title('About Us')) }
|
|
54
|
+
# end
|
|
55
|
+
|
|
56
|
+
# describe "Contact page" do
|
|
57
|
+
# before { visit contact_path }
|
|
58
|
+
|
|
59
|
+
# it { should have_selector('h1', text: 'Contact') }
|
|
60
|
+
# it { should have_title(full_title('Contact')) }
|
|
61
|
+
# end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
end
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe "User pages" do
|
|
4
|
+
|
|
5
|
+
# subject { page }
|
|
6
|
+
|
|
7
|
+
# describe "index" do
|
|
8
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
9
|
+
# before(:each) do
|
|
10
|
+
# sign_in user
|
|
11
|
+
# visit users_path
|
|
12
|
+
# end
|
|
13
|
+
|
|
14
|
+
# it { should have_title('All users') }
|
|
15
|
+
# it { should have_content('All users') }
|
|
16
|
+
|
|
17
|
+
# describe "pagination" do
|
|
18
|
+
|
|
19
|
+
# before(:all) { 30.times { FactoryGirl.create(:user) } }
|
|
20
|
+
# after(:all) { User.delete_all }
|
|
21
|
+
|
|
22
|
+
# it { should have_selector('div.pagination') }
|
|
23
|
+
|
|
24
|
+
# it "should list each user" do
|
|
25
|
+
# User.paginate(page: 1).each do |user|
|
|
26
|
+
# expect(page).to have_selector('li', text: user.name)
|
|
27
|
+
# end
|
|
28
|
+
# end
|
|
29
|
+
# end
|
|
30
|
+
|
|
31
|
+
# describe "delete links" do
|
|
32
|
+
|
|
33
|
+
# it { should_not have_link('delete') }
|
|
34
|
+
|
|
35
|
+
# describe "as an admin user" do
|
|
36
|
+
# let(:admin) { FactoryGirl.create(:admin) }
|
|
37
|
+
# before do
|
|
38
|
+
# sign_in admin
|
|
39
|
+
# visit users_path
|
|
40
|
+
# end
|
|
41
|
+
|
|
42
|
+
# it { should have_link('delete', href: user_path(User.first)) }
|
|
43
|
+
# it "should be able to delete another user" do
|
|
44
|
+
# expect do
|
|
45
|
+
# click_link('delete', match: :first)
|
|
46
|
+
# end.to change(User, :count).by(-1)
|
|
47
|
+
# end
|
|
48
|
+
# it { should_not have_link('delete', href: user_path(admin)) }
|
|
49
|
+
# end
|
|
50
|
+
# end
|
|
51
|
+
# end
|
|
52
|
+
|
|
53
|
+
# describe "profile page" do
|
|
54
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
55
|
+
# let!(:m1) { FactoryGirl.create(:micropost, user: user, content: "Foo") }
|
|
56
|
+
# let!(:m2) { FactoryGirl.create(:micropost, user: user, content: "Bar") }
|
|
57
|
+
|
|
58
|
+
# before { visit user_path(user) }
|
|
59
|
+
|
|
60
|
+
# it { should have_content(user.name) }
|
|
61
|
+
# it { should have_title(user.name) }
|
|
62
|
+
|
|
63
|
+
# describe "microposts" do
|
|
64
|
+
# it { should have_content(m1.content) }
|
|
65
|
+
# it { should have_content(m2.content) }
|
|
66
|
+
# it { should have_content(user.microposts.count) }
|
|
67
|
+
# end
|
|
68
|
+
|
|
69
|
+
# describe "follow/unfollow buttons" do
|
|
70
|
+
# let(:other_user) { FactoryGirl.create(:user) }
|
|
71
|
+
# before { sign_in user }
|
|
72
|
+
|
|
73
|
+
# describe "following a user" do
|
|
74
|
+
# before { visit user_path(other_user) }
|
|
75
|
+
|
|
76
|
+
# it "should increment the followed user count" do
|
|
77
|
+
# expect do
|
|
78
|
+
# click_button "Follow"
|
|
79
|
+
# end.to change(user.followed_users, :count).by(1)
|
|
80
|
+
# end
|
|
81
|
+
|
|
82
|
+
# it "should increment the other user's followers count" do
|
|
83
|
+
# expect do
|
|
84
|
+
# click_button "Follow"
|
|
85
|
+
# end.to change(other_user.followers, :count).by(1)
|
|
86
|
+
# end
|
|
87
|
+
|
|
88
|
+
# describe "toggling the button" do
|
|
89
|
+
# before { click_button "Follow" }
|
|
90
|
+
# it { should have_xpath("//input[@value='Unfollow']") }
|
|
91
|
+
# end
|
|
92
|
+
# end
|
|
93
|
+
|
|
94
|
+
# describe "unfollowing a user" do
|
|
95
|
+
# before do
|
|
96
|
+
# user.follow!(other_user)
|
|
97
|
+
# visit user_path(other_user)
|
|
98
|
+
# end
|
|
99
|
+
|
|
100
|
+
# it "should decrement the followed user count" do
|
|
101
|
+
# expect do
|
|
102
|
+
# click_button "Unfollow"
|
|
103
|
+
# end.to change(user.followed_users, :count).by(-1)
|
|
104
|
+
# end
|
|
105
|
+
|
|
106
|
+
# it "should decrement the other user's followers count" do
|
|
107
|
+
# expect do
|
|
108
|
+
# click_button "Unfollow"
|
|
109
|
+
# end.to change(other_user.followers, :count).by(-1)
|
|
110
|
+
# end
|
|
111
|
+
|
|
112
|
+
# describe "toggling the button" do
|
|
113
|
+
# before { click_button "Unfollow" }
|
|
114
|
+
# it { should have_xpath("//input[@value='Follow']") }
|
|
115
|
+
# end
|
|
116
|
+
# end
|
|
117
|
+
# end
|
|
118
|
+
# end
|
|
119
|
+
|
|
120
|
+
# describe "signup page" do
|
|
121
|
+
# before { visit signup_path }
|
|
122
|
+
|
|
123
|
+
# it { should have_content('Sign up') }
|
|
124
|
+
# it { should have_title(full_title('Sign up')) }
|
|
125
|
+
# end
|
|
126
|
+
|
|
127
|
+
# describe "signup" do
|
|
128
|
+
|
|
129
|
+
# before { visit signup_path }
|
|
130
|
+
|
|
131
|
+
# let(:submit) { "Create my account" }
|
|
132
|
+
|
|
133
|
+
# describe "with invalid information" do
|
|
134
|
+
# it "should not create a user" do
|
|
135
|
+
# expect { click_button submit }.not_to change(User, :count)
|
|
136
|
+
# end
|
|
137
|
+
# end
|
|
138
|
+
|
|
139
|
+
# describe "with valid information" do
|
|
140
|
+
# before do
|
|
141
|
+
# fill_in "Name", with: "Example User"
|
|
142
|
+
# fill_in "Email", with: "user@example.com"
|
|
143
|
+
# fill_in "Password", with: "foobar"
|
|
144
|
+
# fill_in "Confirmation", with: "foobar"
|
|
145
|
+
# end
|
|
146
|
+
|
|
147
|
+
# it "should create a user" do
|
|
148
|
+
# expect { click_button submit }.to change(User, :count).by(1)
|
|
149
|
+
# end
|
|
150
|
+
|
|
151
|
+
# describe "after saving the user" do
|
|
152
|
+
# before { click_button submit }
|
|
153
|
+
# let(:user) { User.find_by(email: 'user@example.com') }
|
|
154
|
+
|
|
155
|
+
# it { should have_link('Sign out') }
|
|
156
|
+
# it { should have_title(user.name) }
|
|
157
|
+
# it { should have_selector('div.alert.alert-success', text: 'Welcome') }
|
|
158
|
+
# end
|
|
159
|
+
# end
|
|
160
|
+
# end
|
|
161
|
+
|
|
162
|
+
# describe "edit" do
|
|
163
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
164
|
+
# before do
|
|
165
|
+
# sign_in user
|
|
166
|
+
# visit edit_user_path(user)
|
|
167
|
+
# end
|
|
168
|
+
|
|
169
|
+
# describe "page" do
|
|
170
|
+
# it { should have_content("Update your profile") }
|
|
171
|
+
# it { should have_title("Edit user") }
|
|
172
|
+
# it { should have_link('change', href: 'http://gravatar.com/emails') }
|
|
173
|
+
# end
|
|
174
|
+
|
|
175
|
+
# describe "with invalid information" do
|
|
176
|
+
# before { click_button "Save changes" }
|
|
177
|
+
|
|
178
|
+
# it { should have_content('error') }
|
|
179
|
+
# end
|
|
180
|
+
|
|
181
|
+
# describe "with valid information" do
|
|
182
|
+
# let(:new_name) { "New Name" }
|
|
183
|
+
# let(:new_email) { "new@example.com" }
|
|
184
|
+
# before do
|
|
185
|
+
# fill_in "Name", with: new_name
|
|
186
|
+
# fill_in "Email", with: new_email
|
|
187
|
+
# fill_in "Password", with: user.password
|
|
188
|
+
# fill_in "Confirm Password", with: user.password
|
|
189
|
+
# click_button "Save changes"
|
|
190
|
+
# end
|
|
191
|
+
|
|
192
|
+
# it { should have_title(new_name) }
|
|
193
|
+
# it { should have_selector('div.alert.alert-success') }
|
|
194
|
+
# it { should have_link('Sign out', href: signout_path) }
|
|
195
|
+
# specify { expect(user.reload.name).to eq new_name }
|
|
196
|
+
# specify { expect(user.reload.email).to eq new_email }
|
|
197
|
+
# end
|
|
198
|
+
|
|
199
|
+
# describe "forbidden attributes" do
|
|
200
|
+
# let(:params) do
|
|
201
|
+
# { user: { admin: true, password: user.password,
|
|
202
|
+
# password_confirmation: user.password } }
|
|
203
|
+
# end
|
|
204
|
+
# before do
|
|
205
|
+
# sign_in user, no_capybara: true
|
|
206
|
+
# patch user_path(user), params
|
|
207
|
+
# end
|
|
208
|
+
# specify { expect(user.reload).not_to be_admin }
|
|
209
|
+
# end
|
|
210
|
+
# end
|
|
211
|
+
|
|
212
|
+
# describe "following/followers" do
|
|
213
|
+
# let(:user) { FactoryGirl.create(:user) }
|
|
214
|
+
# let(:other_user) { FactoryGirl.create(:user) }
|
|
215
|
+
# before { user.follow!(other_user) }
|
|
216
|
+
|
|
217
|
+
# describe "followed users" do
|
|
218
|
+
# before do
|
|
219
|
+
# sign_in user
|
|
220
|
+
# visit following_user_path(user)
|
|
221
|
+
# end
|
|
222
|
+
|
|
223
|
+
# it { should have_title(full_title('Following')) }
|
|
224
|
+
# it { should have_selector('h3', text: 'Following') }
|
|
225
|
+
# it { should have_link(other_user.name, href: user_path(other_user)) }
|
|
226
|
+
# end
|
|
227
|
+
|
|
228
|
+
# describe "followers" do
|
|
229
|
+
# before do
|
|
230
|
+
# sign_in other_user
|
|
231
|
+
# visit followers_user_path(other_user)
|
|
232
|
+
# end
|
|
233
|
+
|
|
234
|
+
# it { should have_title(full_title('Followers')) }
|
|
235
|
+
# it { should have_selector('h3', text: 'Followers') }
|
|
236
|
+
# it { should have_link(user.name, href: user_path(user)) }
|
|
237
|
+
# end
|
|
238
|
+
# end
|
|
239
|
+
end
|