From 3cec9b98f22fdcec1f2ee3dcacd3785dba2dce26 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sat, 25 Jul 2015 18:49:00 +0200 Subject: [PATCH 01/14] adds hide/show behaviour to comment forms --- app/assets/javascripts/comments.js.coffee | 9 +++++++++ app/views/comments/_form.html.erb | 18 +++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 app/assets/javascripts/comments.js.coffee diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee new file mode 100644 index 000000000..a1635b42c --- /dev/null +++ b/app/assets/javascripts/comments.js.coffee @@ -0,0 +1,9 @@ +jQuery -> + + toggle_comment = (id) -> + $("#js-comment-form-#{id}").toggle() + + $('.js-add-comment-link').click -> + id = $(this).data().id + toggle_comment(id) + false \ No newline at end of file diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb index 4ef99b4b0..fbe743f88 100644 --- a/app/views/comments/_form.html.erb +++ b/app/views/comments/_form.html.erb @@ -1,7 +1,11 @@ -<%= form_for [@debate, Comment.new] do |f| %> - <%= f.text_area :body %> - <%= f.hidden_field :commentable_type, value: parent.class %> - <%= f.hidden_field :commentable_id, value: parent.id %> - - <%= f.submit 'Publicar comentario' %> -<% end %> \ No newline at end of file +<%= link_to "Comentar", "", class: "js-add-comment-link", data: {'id': parent.id} %> + + \ No newline at end of file From b674e109a5e2f7c1db9cb8bbd0ab2003cbdf0f8d Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sat, 25 Jul 2015 18:56:52 +0200 Subject: [PATCH 02/14] adds appropriate text for comment replies --- app/helpers/comments_helper.rb | 11 +++++++++++ app/views/comments/_form.html.erb | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 app/helpers/comments_helper.rb diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb new file mode 100644 index 000000000..8e8aae90c --- /dev/null +++ b/app/helpers/comments_helper.rb @@ -0,0 +1,11 @@ +module CommentsHelper + + def comment_link_text(parent) + parent.class == Debate ? "Comentar" : "Responder" + end + + def comment_button_text(parent) + parent.class == Debate ? "Publicar comentario" : "Publicar respuesta" + end + +end \ No newline at end of file diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb index fbe743f88..d8315688a 100644 --- a/app/views/comments/_form.html.erb +++ b/app/views/comments/_form.html.erb @@ -1,4 +1,4 @@ -<%= link_to "Comentar", "", class: "js-add-comment-link", data: {'id': parent.id} %> +<%= link_to comment_link_text(parent), "", class: "js-add-comment-link", data: {'id': parent.id} %> \ No newline at end of file From 26b16ee874eab66a016a9ba859d1bf77cabfb7d3 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sat, 25 Jul 2015 18:11:12 +0200 Subject: [PATCH 03/14] configures database_cleaner --- Gemfile | 4 ++++ Gemfile.lock | 2 ++ spec/spec_helper.rb | 13 +++++++++++++ 3 files changed, 19 insertions(+) diff --git a/Gemfile b/Gemfile index 5dfb2f7c5..c75dda0b7 100644 --- a/Gemfile +++ b/Gemfile @@ -50,3 +50,7 @@ group :development, :test do gem 'factory_girl_rails' end +group :test do + gem 'database_cleaner' +end + diff --git a/Gemfile.lock b/Gemfile.lock index 0b070914b..6dfac43e4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -66,6 +66,7 @@ GEM execjs coffee-script-source (1.9.1.1) columnize (0.9.0) + database_cleaner (1.4.1) debug_inspector (0.0.2) devise (3.5.1) bcrypt (~> 3.0) @@ -203,6 +204,7 @@ DEPENDENCIES byebug capybara coffee-rails (~> 4.1.0) + database_cleaner devise factory_girl_rails foundation-rails diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7ad54cc81..7ff23a112 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -4,6 +4,19 @@ RSpec.configure do |config| config.run_all_when_everything_filtered = true config.include FactoryGirl::Syntax::Methods + config.before(:suite) do + DatabaseCleaner.clean_with :truncation + DatabaseCleaner.strategy = :transaction + end + + config.before(:each) do + DatabaseCleaner.start + end + + config.after(:each) do + DatabaseCleaner.clean + end + # Allows RSpec to persist some state between runs in order to support # the `--only-failures` and `--next-failure` CLI options. config.example_status_persistence_file_path = "spec/examples.txt" From 0aaa8169f04fa5986850e828a40b2995b1125b49 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 27 Jul 2015 11:12:55 +0200 Subject: [PATCH 04/14] tmp commit [#21] --- Gemfile | 3 ++- Gemfile.lock | 10 ++++++++++ spec/features/comments_spec.rb | 5 +++-- spec/rails_helper.rb | 5 ++++- spec/spec_helper.rb | 6 +++++- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index c75dda0b7..f51885d69 100644 --- a/Gemfile +++ b/Gemfile @@ -51,6 +51,7 @@ group :development, :test do end group :test do - gem 'database_cleaner' + gem 'database_cleaner' + gem 'poltergeist' end diff --git a/Gemfile.lock b/Gemfile.lock index 6dfac43e4..ae06e346f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -58,6 +58,7 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) + cliver (0.3.2) coffee-rails (4.1.0) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) @@ -109,6 +110,11 @@ GEM mini_portile (~> 0.6.0) orm_adapter (0.5.0) pg (0.18.2) + poltergeist (1.6.0) + capybara (~> 2.1) + cliver (~> 0.3.1) + multi_json (~> 1.0) + websocket-driver (>= 0.2.0) rack (1.6.4) rack-test (0.6.3) rack (>= 1.0) @@ -191,6 +197,9 @@ GEM binding_of_caller (>= 0.7.2) railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) + websocket-driver (0.6.2) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.2) xpath (2.0.0) nokogiri (~> 1.3) @@ -211,6 +220,7 @@ DEPENDENCIES jbuilder (~> 2.0) jquery-rails pg + poltergeist rails (= 4.2.3) responders rspec-rails (~> 3.0) diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb index f392003e2..ec0142651 100644 --- a/spec/features/comments_spec.rb +++ b/spec/features/comments_spec.rb @@ -19,7 +19,7 @@ feature 'Comments' do end end - scenario 'Create' do + scenario 'Create', :js, :focus do user = create(:user) debate = create(:debate) @@ -36,7 +36,7 @@ feature 'Comments' do end end - scenario 'Reply' do + scenario 'Reply', :js do citizen = create(:user, first_name: 'Ana') manuela = create(:user, first_name: 'Manuela') debate = create(:debate) @@ -45,6 +45,7 @@ feature 'Comments' do login_as(manuela) visit debate_path(debate) + click_link "Responder" within "#comment-#{comment.id}" do fill_in 'comment_body', with: 'La semana que viene está hecho.' click_button 'Publicar comentario' diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index fc6f2bb68..91b1313a5 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -6,6 +6,7 @@ require 'spec_helper' require 'rspec/rails' require 'capybara/rails' require 'capybara/rspec' +require 'capybara/poltergeist' include Warden::Test::Helpers Warden.test_mode! @@ -15,4 +16,6 @@ ActiveRecord::Migration.maintain_test_schema! RSpec.configure do |config| config.use_transactional_fixtures = true config.infer_spec_type_from_file_location! -end \ No newline at end of file +end + +Capybara.javascript_driver = :poltergeist \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7ff23a112..07d14fcb6 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,15 +1,19 @@ require 'factory_girl_rails' +require 'database_cleaner' + RSpec.configure do |config| + config.use_transactional_fixtures = false config.filter_run :focus config.run_all_when_everything_filtered = true config.include FactoryGirl::Syntax::Methods - + config.before(:suite) do DatabaseCleaner.clean_with :truncation DatabaseCleaner.strategy = :transaction end config.before(:each) do + DatabaseCleaner.strategy= example.metadata[:js] ? :truncation : :transaction DatabaseCleaner.start end From 598310c01c53ed709dfb99c5e9965b73dc5ef1ed Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 27 Jul 2015 11:24:11 +0200 Subject: [PATCH 05/14] adds turbolinks compatibility [#21] --- app/assets/javascripts/comments.js.coffee | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee index a1635b42c..b40da3485 100644 --- a/app/assets/javascripts/comments.js.coffee +++ b/app/assets/javascripts/comments.js.coffee @@ -3,7 +3,11 @@ jQuery -> toggle_comment = (id) -> $("#js-comment-form-#{id}").toggle() - $('.js-add-comment-link').click -> - id = $(this).data().id - toggle_comment(id) - false \ No newline at end of file + ready = -> + $('.js-add-comment-link').click -> + id = $(this).data().id + toggle_comment(id) + false + + $(document).ready(ready) + $(document).on('page:load', ready) \ No newline at end of file From 39711caaf6d7fb38875935e0afb7103ad96d1230 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 27 Jul 2015 11:39:25 +0200 Subject: [PATCH 06/14] fixes transaction fixtures call [#21] --- spec/rails_helper.rb | 2 +- spec/spec_helper.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 91b1313a5..93619a5b1 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -2,8 +2,8 @@ ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../../config/environment', __FILE__) abort("The Rails environment is running in production mode!") if Rails.env.production? -require 'spec_helper' require 'rspec/rails' +require 'spec_helper' require 'capybara/rails' require 'capybara/rspec' require 'capybara/poltergeist' diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 07d14fcb6..8bb7b2c82 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -3,16 +3,16 @@ require 'database_cleaner' RSpec.configure do |config| config.use_transactional_fixtures = false + config.filter_run :focus config.run_all_when_everything_filtered = true config.include FactoryGirl::Syntax::Methods - config.before(:suite) do + config.before(:suite) do DatabaseCleaner.clean_with :truncation - DatabaseCleaner.strategy = :transaction end - config.before(:each) do + config.before(:each) do |example| DatabaseCleaner.strategy= example.metadata[:js] ? :truncation : :transaction DatabaseCleaner.start end From 1e2f8704a57fac11d2395009f734cec28bceddfc Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 27 Jul 2015 19:01:06 +0200 Subject: [PATCH 07/14] Change order in requires to fix tests --- spec/rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 91b1313a5..93619a5b1 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -2,8 +2,8 @@ ENV['RAILS_ENV'] ||= 'test' require File.expand_path('../../config/environment', __FILE__) abort("The Rails environment is running in production mode!") if Rails.env.production? -require 'spec_helper' require 'rspec/rails' +require 'spec_helper' require 'capybara/rails' require 'capybara/rspec' require 'capybara/poltergeist' From ec282e8d3e42812e321dc37fe9254190da76f367 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 27 Jul 2015 19:04:13 +0200 Subject: [PATCH 08/14] Add debug gem: launchy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit you can write save_and_open_page to see the page’s status inside a feature --- Gemfile | 3 ++- Gemfile.lock | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index f51885d69..df7399ebf 100644 --- a/Gemfile +++ b/Gemfile @@ -48,10 +48,11 @@ group :development, :test do gem 'rspec-rails', '~> 3.0' gem 'capybara' gem 'factory_girl_rails' + gem 'launchy' end group :test do - gem 'database_cleaner' + gem 'database_cleaner' gem 'poltergeist' end diff --git a/Gemfile.lock b/Gemfile.lock index ae06e346f..2106bed06 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -43,6 +43,7 @@ GEM activesupport (>= 4.0) awesome_nested_set (>= 3.0) acts_as_votable (0.10.0) + addressable (2.3.8) arel (6.0.2) awesome_nested_set (3.0.2) activerecord (>= 4.0.0, < 5) @@ -98,6 +99,8 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.3) + launchy (2.4.3) + addressable (~> 2.3) loofah (2.0.2) nokogiri (>= 1.5.9) mail (2.6.3) @@ -219,6 +222,7 @@ DEPENDENCIES foundation-rails jbuilder (~> 2.0) jquery-rails + launchy pg poltergeist rails (= 4.2.3) @@ -230,6 +234,3 @@ DEPENDENCIES turbolinks uglifier (>= 1.3.0) web-console (~> 2.0) - -BUNDLED WITH - 1.10.5 From d8367464c653603ce33215954b3577435e83aa80 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 27 Jul 2015 19:05:15 +0200 Subject: [PATCH 09/14] Configure DatabaseCleaner exactly like it says on its documentation --- spec/spec_helper.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 07d14fcb6..8cf97a22e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -6,13 +6,12 @@ RSpec.configure do |config| config.filter_run :focus config.run_all_when_everything_filtered = true config.include FactoryGirl::Syntax::Methods - + config.before(:suite) do DatabaseCleaner.clean_with :truncation - DatabaseCleaner.strategy = :transaction end - config.before(:each) do + config.before(:each) do |example| DatabaseCleaner.strategy= example.metadata[:js] ? :truncation : :transaction DatabaseCleaner.start end From be173ff581faec0d11da10ddc673c6e11cece27b Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 27 Jul 2015 19:07:02 +0200 Subject: [PATCH 10/14] removes use_transaction_fixtures from rails_helper It is already configured in spec_helper.rb (and makes other things fail) --- spec/rails_helper.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 93619a5b1..2d2a80824 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -14,8 +14,7 @@ Warden.test_mode! ActiveRecord::Migration.maintain_test_schema! RSpec.configure do |config| - config.use_transactional_fixtures = true config.infer_spec_type_from_file_location! end -Capybara.javascript_driver = :poltergeist \ No newline at end of file +Capybara.javascript_driver = :poltergeist From bed380fffdcceef67869abb6a71769c600203873 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 27 Jul 2015 19:22:05 +0200 Subject: [PATCH 11/14] Make the comment button appear by clicking in "Comentar" in the test --- spec/features/comments_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb index ec0142651..c266a0185 100644 --- a/spec/features/comments_spec.rb +++ b/spec/features/comments_spec.rb @@ -26,6 +26,8 @@ feature 'Comments' do login_as(user) visit debate_path(debate) + click_on 'Comentar' + fill_in 'comment_body', with: '¿Has pensado en esto...?' click_button 'Publicar comentario' From 00d21fbabd8789f020a9c87f63539fd837a8b77a Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 27 Jul 2015 19:22:17 +0200 Subject: [PATCH 12/14] Remove focus from test --- spec/features/comments_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb index c266a0185..b139d707f 100644 --- a/spec/features/comments_spec.rb +++ b/spec/features/comments_spec.rb @@ -19,7 +19,7 @@ feature 'Comments' do end end - scenario 'Create', :js, :focus do + scenario 'Create', :js do user = create(:user) debate = create(:debate) From dea2964f08f56527d82a2b92fb2c0803d9a50ea7 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 27 Jul 2015 22:22:12 +0200 Subject: [PATCH 13/14] fixes duplicate id in comment form [#21] --- app/assets/javascripts/comments.js.coffee | 7 ++++--- app/views/comments/_form.html.erb | 4 ++-- spec/features/comments_spec.rb | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/comments.js.coffee b/app/assets/javascripts/comments.js.coffee index b40da3485..72f0fd52f 100644 --- a/app/assets/javascripts/comments.js.coffee +++ b/app/assets/javascripts/comments.js.coffee @@ -1,12 +1,13 @@ jQuery -> - toggle_comment = (id) -> - $("#js-comment-form-#{id}").toggle() + toggle_comment = (id, klass) -> + $("#js-comment-form-#{id}-#{klass}").toggle() ready = -> $('.js-add-comment-link').click -> id = $(this).data().id - toggle_comment(id) + klass = $(this).data().klass + toggle_comment(id, klass) false $(document).ready(ready) diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb index d8315688a..5593f7a39 100644 --- a/app/views/comments/_form.html.erb +++ b/app/views/comments/_form.html.erb @@ -1,6 +1,6 @@ -<%= link_to comment_link_text(parent), "", class: "js-add-comment-link", data: {'id': parent.id} %> +<%= link_to comment_link_text(parent), "", class: "js-add-comment-link", data: {'id': parent.id, 'klass': parent.class.to_s } %> -