From 2a7ff2270e2c97f50d6a5991b01b3cedf7676213 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 18 Apr 2016 03:22:53 +0200 Subject: [PATCH 01/10] sends zip file with test data --- Gemfile | 1 + Gemfile.lock | 59 ++++++++++--------- .../admin/newsletters_controller.rb | 17 ++++++ app/views/admin/_menu.html.erb | 7 +++ app/views/admin/newsletters/index.html.erb | 1 + config/routes.rb | 3 + 6 files changed, 61 insertions(+), 27 deletions(-) create mode 100644 app/controllers/admin/newsletters_controller.rb create mode 100644 app/views/admin/newsletters/index.html.erb diff --git a/Gemfile b/Gemfile index 05d1379c5..52c854618 100644 --- a/Gemfile +++ b/Gemfile @@ -64,6 +64,7 @@ gem 'tolk', '~> 2.0.0' # Web interface for translations gem 'browser' gem 'turnout', '~> 2.4.0' gem 'redcarpet', '~> 3.4.0' +gem 'rubyzip', '~> 1.2.0' gem 'paperclip' diff --git a/Gemfile.lock b/Gemfile.lock index 0989276ef..9c05a53e4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -35,8 +35,8 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - acts-as-taggable-on (4.0.0) - activerecord (>= 4.0) + acts-as-taggable-on (5.0.0) + activerecord (>= 4.2.8) acts_as_votable (0.10.0) addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) @@ -65,7 +65,7 @@ GEM babel-source (>= 4.0, < 6) execjs (~> 2.0) bcrypt (3.1.11) - browser (2.3.0) + browser (2.4.0) builder (3.2.3) bullet (5.5.1) activesupport (>= 3.0.0) @@ -97,7 +97,7 @@ GEM ckeditor (4.2.3) cocaine orm_adapter (~> 0.5.0) - climate_control (0.1.0) + climate_control (0.2.0) cliver (0.3.2) cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) @@ -117,8 +117,8 @@ GEM tins (~> 1.6) daemons (1.2.4) dalli (2.7.6) - database_cleaner (1.5.3) - debug_inspector (0.0.2) + database_cleaner (1.6.1) + debug_inspector (0.0.3) delayed_job (4.1.2) activesupport (>= 3.0, < 5.1) delayed_job_active_record (4.1.1) @@ -142,10 +142,10 @@ GEM json thread thread_safe - email_spec (2.1.0) + email_spec (2.1.1) htmlentities (~> 4.3.3) launchy (~> 2.1) - mail (~> 2.6.3) + mail (~> 2.6) errbase (0.0.3) erubis (2.7.0) execjs (2.7.0) @@ -171,9 +171,9 @@ GEM fuubar (2.2.0) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) - geocoder (1.4.3) - globalid (0.3.7) - activesupport (>= 4.1.0) + geocoder (1.4.4) + globalid (0.4.0) + activesupport (>= 4.2.0) groupdate (3.2.0) activesupport (>= 3) gyoku (1.3.1) @@ -181,8 +181,9 @@ GEM hashie (3.5.5) highline (1.7.8) htmlentities (4.3.4) - httpi (2.4.1) + httpi (2.4.2) rack + socksify i18n (0.8.1) i18n-tasks (0.9.15) activesupport (>= 4.0.2) @@ -239,7 +240,7 @@ GEM mime-types-data (3.2016.0521) mimemagic (0.3.2) mini_portile2 (2.1.0) - minitest (5.10.1) + minitest (5.10.2) multi_json (1.12.1) multi_xml (0.6.0) multipart-post (2.0.0) @@ -250,7 +251,7 @@ GEM nokogiri (1.7.2) mini_portile2 (~> 2.1.0) nori (2.6.0) - oauth (0.5.1) + oauth (0.5.2) oauth2 (1.3.1) faraday (>= 0.8, < 0.12) jwt (~> 1.0) @@ -300,7 +301,7 @@ GEM public_suffix (2.0.5) quiet_assets (1.1.0) railties (>= 3.1, < 5.0) - rack (1.6.5) + rack (1.6.8) rack-accept (0.4.5) rack (>= 0.4) rack-attack (5.0.1) @@ -368,13 +369,14 @@ GEM ruby-progressbar (~> 1.7) unicode-display_width (~> 1.0, >= 1.0.1) ruby-progressbar (1.8.1) + rubyzip (1.2.1) rvm1-capistrano3 (1.4.0) capistrano (~> 3.0) sshkit (>= 1.2) safe_yaml (1.0.4) safely_block (0.2.0) errbase - sass (3.4.23) + sass (3.4.24) sass-rails (5.0.6) railties (>= 4.0.0, < 6) sass (~> 3.1) @@ -393,12 +395,13 @@ GEM docile (~> 1.1.0) json (>= 1.8, < 3) simplecov-html (~> 0.10.0) - simplecov-html (0.10.0) + simplecov-html (0.10.1) sitemap_generator (5.3.1) builder (~> 3.0) social-share-button (0.10.0) coffee-rails - spring (2.0.1) + socksify (1.7.1) + spring (2.0.2) activesupport (>= 4.2) spring-commands-rspec (1.0.4) spring (>= 0.9.1) @@ -418,19 +421,20 @@ GEM net-ssh (>= 2.8.0) term-ansicolor (1.6.0) tins (~> 1.0) - terminal-table (1.7.3) - unicode-display_width (~> 1.1.1) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) thor (0.19.4) thread (0.2.2) thread_safe (0.3.6) tilt (2.0.7) timecop (0.8.1) - tins (1.13.2) + tins (1.14.0) tolk (2.0.0) rails (>= 4.0) safe_yaml (>= 0.8.6) - turbolinks (2.5.3) - coffee-rails + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.3) turnout (2.4.0) i18n (~> 0.7) rack (>= 1.3, < 3) @@ -440,14 +444,14 @@ GEM thread_safe (~> 0.1) uglifier (3.2.0) execjs (>= 0.3.0, < 3) - unicode-display_width (1.1.3) + unicode-display_width (1.2.1) unicorn (5.3.0) kgio (~> 2.6) raindrops (~> 0.7) uniform_notifier (1.10.0) - user_agent_parser (2.3.0) + user_agent_parser (2.3.1) uuidtools (2.1.5) - warden (1.2.6) + warden (1.2.7) rack (>= 1.0) wasabi (3.5.0) httpi (~> 2.0) @@ -525,6 +529,7 @@ DEPENDENCIES rollbar (~> 2.14.1) rspec-rails (~> 3.6) rubocop (~> 0.48.1) + rubyzip (~> 1.2.0) rvm1-capistrano3 sass-rails (~> 5.0, >= 5.0.4) savon @@ -542,4 +547,4 @@ DEPENDENCIES whenever BUNDLED WITH - 1.14.6 + 1.15.0 diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb new file mode 100644 index 000000000..f09a92e0c --- /dev/null +++ b/app/controllers/admin/newsletters_controller.rb @@ -0,0 +1,17 @@ +require 'zip' +class Admin::NewslettersController < Admin::BaseController + + def index + end + + def users + folder = Rails.root + "/tmp/" + zipfile_name = folder + "emails.zip" + + Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile| + zipfile.get_output_stream("emails.txt") { |os| os.write 'peter@example.com' } + end + send_file(File.join(folder + "emails.zip"), :type => 'application/zip') + end + +end \ No newline at end of file diff --git a/app/views/admin/_menu.html.erb b/app/views/admin/_menu.html.erb index 0b9929f46..c02ad4ede 100644 --- a/app/views/admin/_menu.html.erb +++ b/app/views/admin/_menu.html.erb @@ -162,5 +162,12 @@ <% end %> <% end %> + +
  • > + <%= link_to admin_newsletters_path do %> + + Newsletter + <% end %> +
  • diff --git a/app/views/admin/newsletters/index.html.erb b/app/views/admin/newsletters/index.html.erb new file mode 100644 index 000000000..d851f5fc2 --- /dev/null +++ b/app/views/admin/newsletters/index.html.erb @@ -0,0 +1 @@ +<%= link_to 'users', users_admin_newsletters_path %> \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 4007595db..c016cce56 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -239,6 +239,9 @@ Rails.application.routes.draw do end resource :activity, controller: :activity, only: :show + resources :newsletters, only: :index do + get :users, on: :collection + end resource :stats, only: :show do get :proposal_notifications, on: :collection get :direct_messages, on: :collection From 8f4eec2b8efdf95d2139acc1a68c7b4576c0ee48 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 18 Apr 2016 03:53:23 +0200 Subject: [PATCH 02/10] zips all users with newsletter activated --- app/controllers/admin/newsletters_controller.rb | 4 +++- app/models/user.rb | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb index f09a92e0c..fb922c3dd 100644 --- a/app/controllers/admin/newsletters_controller.rb +++ b/app/controllers/admin/newsletters_controller.rb @@ -9,7 +9,9 @@ class Admin::NewslettersController < Admin::BaseController zipfile_name = folder + "emails.zip" Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile| - zipfile.get_output_stream("emails.txt") { |os| os.write 'peter@example.com' } + zipfile.get_output_stream("emails.txt") do |os| + os.write User.newsletter.pluck(:email).join("\n") + end end send_file(File.join(folder + "emails.zip"), :type => 'application/zip') end diff --git a/app/models/user.rb b/app/models/user.rb index c3038c88a..88651630f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -52,6 +52,7 @@ class User < ActiveRecord::Base scope :moderators, -> { joins(:moderator) } scope :organizations, -> { joins(:organization) } scope :officials, -> { where("official_level > 0") } + scope :newsletter, -> { where(newsletter: true) } scope :for_render, -> { includes(:organization) } scope :by_document, -> (document_type, document_number) { where(document_type: document_type, document_number: document_number) } scope :email_digest, -> { where(email_digest: true) } From 80be0c6b65585a9b14cb2ebda90b614190a9c376 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 18 Apr 2016 05:15:16 +0200 Subject: [PATCH 03/10] refactors zip file creation --- .../admin/newsletters_controller.rb | 13 +++------- lib/newsletter_zip.rb | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 lib/newsletter_zip.rb diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb index fb922c3dd..60895dc0c 100644 --- a/app/controllers/admin/newsletters_controller.rb +++ b/app/controllers/admin/newsletters_controller.rb @@ -1,19 +1,12 @@ -require 'zip' class Admin::NewslettersController < Admin::BaseController def index end def users - folder = Rails.root + "/tmp/" - zipfile_name = folder + "emails.zip" - - Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile| - zipfile.get_output_stream("emails.txt") do |os| - os.write User.newsletter.pluck(:email).join("\n") - end - end - send_file(File.join(folder + "emails.zip"), :type => 'application/zip') + zip = NewsletterZip.new('emails') + zip.create + send_file(File.join(zip.path), type: 'application/zip') end end \ No newline at end of file diff --git a/lib/newsletter_zip.rb b/lib/newsletter_zip.rb new file mode 100644 index 000000000..565b9580d --- /dev/null +++ b/lib/newsletter_zip.rb @@ -0,0 +1,25 @@ +require 'zip' +class NewsletterZip + attr_accessor :filename + + def initialize(filename) + @filename = filename + end + + def emails + User.newsletter.pluck(:email).join("\n") + end + + def path + Rails.root + "/tmp/#{filename}.zip" + end + + def create + Zip::File.open("#{filename}.zip", Zip::File::CREATE) do |zipfile| + zipfile.get_output_stream("#{filename}.txt") do |file| + file.write emails + end + end + end + +end \ No newline at end of file From 9110fdad3a08ed6033257051a45c09c1071f024a Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 18 Apr 2016 10:30:08 +0200 Subject: [PATCH 04/10] adds translations --- app/views/admin/_menu.html.erb | 2 +- config/locales/admin.en.yml | 1 + config/locales/admin.es.yml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/views/admin/_menu.html.erb b/app/views/admin/_menu.html.erb index c02ad4ede..4921176c3 100644 --- a/app/views/admin/_menu.html.erb +++ b/app/views/admin/_menu.html.erb @@ -166,7 +166,7 @@
  • > <%= link_to admin_newsletters_path do %> - Newsletter + <%= t("admin.menu.newsletter") %> <% end %>
  • diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index 1d1bf9cb0..fbe8921fd 100755 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -205,6 +205,7 @@ en: hidden_users: Hidden users managers: Managers moderators: Moderators + newsletter: Newsletters valuators: Valuators poll_officers: Poll officers polls: Polls diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index b42843d70..a81e9eed6 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -205,6 +205,7 @@ es: hidden_users: Usuarios bloqueados managers: Gestores moderators: Moderadores + newsletter: Newsletters valuators: Evaluadores poll_officers: Presidentes de mesa polls: Votaciones From 04c33d1327bff12d3f5b8e91d1715ce27e54ff5f Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Mon, 18 Apr 2016 11:35:36 +0200 Subject: [PATCH 05/10] Improves styles for admin newsletters --- app/views/admin/_menu.html.erb | 2 +- app/views/admin/newsletters/index.html.erb | 4 +++- config/locales/admin.en.yml | 4 ++++ config/locales/admin.es.yml | 6 +++++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/views/admin/_menu.html.erb b/app/views/admin/_menu.html.erb index 4921176c3..43c53df36 100644 --- a/app/views/admin/_menu.html.erb +++ b/app/views/admin/_menu.html.erb @@ -165,7 +165,7 @@
  • > <%= link_to admin_newsletters_path do %> - + <%= t("admin.menu.newsletter") %> <% end %>
  • diff --git a/app/views/admin/newsletters/index.html.erb b/app/views/admin/newsletters/index.html.erb index d851f5fc2..b7b43c6fc 100644 --- a/app/views/admin/newsletters/index.html.erb +++ b/app/views/admin/newsletters/index.html.erb @@ -1 +1,3 @@ -<%= link_to 'users', users_admin_newsletters_path %> \ No newline at end of file +

    <%= t("admin.newsletters.index.title") %>

    + +<%= link_to t("admin.newsletters.index.button"), users_admin_newsletters_path, class: "button" %> \ No newline at end of file diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index fbe8921fd..72010670d 100755 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -237,6 +237,10 @@ en: email_placeholder: Search user by email search: Search user_not_found: User not found + newsletters: + index: + title: Newsletters + button: Download zip with users list valuators: index: title: Valuators diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index a81e9eed6..5b18eb445 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -205,7 +205,7 @@ es: hidden_users: Usuarios bloqueados managers: Gestores moderators: Moderadores - newsletter: Newsletters + newsletter: Envío de Newsletters valuators: Evaluadores poll_officers: Presidentes de mesa polls: Votaciones @@ -237,6 +237,10 @@ es: email_placeholder: Buscar usuario por email search: Buscar user_not_found: Usuario no encontrado + newsletters: + index: + title: Envío de newsletters + button: Descargar zip con lista de usuarios valuators: index: title: Evaluadores From a05a20b2b67575c961a544f71b2ade53f895358b Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 18 Apr 2016 11:48:19 +0200 Subject: [PATCH 06/10] creates zip file in tmp folder --- lib/newsletter_zip.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/newsletter_zip.rb b/lib/newsletter_zip.rb index 565b9580d..dead7cf82 100644 --- a/lib/newsletter_zip.rb +++ b/lib/newsletter_zip.rb @@ -15,7 +15,7 @@ class NewsletterZip end def create - Zip::File.open("#{filename}.zip", Zip::File::CREATE) do |zipfile| + Zip::File.open(path, Zip::File::CREATE) do |zipfile| zipfile.get_output_stream("#{filename}.txt") do |file| file.write emails end From d922d093eec1ee4c209f07af9ec1e57142931cce Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 23 May 2017 19:52:14 +0200 Subject: [PATCH 07/10] Add specifiy version to multiple gems that didn't had one at the Gemfile --- Gemfile | 12 ++++++------ Gemfile.lock | 25 ++++++++++++------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/Gemfile b/Gemfile index 52c854618..73d7dd4f6 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ gem 'coffee-rails', '~> 4.2.1' gem 'jquery-rails', '~> 4.3.1' gem 'jquery-ui-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks -gem 'turbolinks' +gem 'turbolinks', '~> 2.5.3' # Fix sprockets on the gem 'sprockets', '~> 3.7.1' @@ -33,7 +33,7 @@ gem 'omniauth-google-oauth2', '~> 0.4.0' gem 'kaminari', '~> 1.0.1' gem 'ancestry', '~> 2.2.2' -gem 'acts-as-taggable-on' +gem 'acts-as-taggable-on', '~> 4.0.0' gem 'responders', '~> 2.4.0' gem 'foundation-rails', '~> 6.2.4.0' gem 'foundation_rails_helper', '~> 2.0.0' @@ -61,7 +61,7 @@ gem 'ahoy_matey', '~> 1.6.0' gem 'groupdate', '~> 3.2.0' # group temporary data gem 'tolk', '~> 2.0.0' # Web interface for translations -gem 'browser' +gem 'browser', '~> 2.3.0' gem 'turnout', '~> 2.4.0' gem 'redcarpet', '~> 3.4.0' gem 'rubyzip', '~> 1.2.0' @@ -72,7 +72,7 @@ group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring - gem 'spring' + gem 'spring', '~> 2.0.1' gem 'spring-commands-rspec' gem 'rspec-rails', '~> 3.6' gem 'capybara', '~> 2.14.0' @@ -94,10 +94,10 @@ group :development, :test do end group :test do - gem 'database_cleaner' + gem 'database_cleaner', '~> 1.5.3' gem 'poltergeist', '~> 1.15.0' gem 'coveralls', '~> 0.8.21', require: false - gem 'email_spec' + gem 'email_spec', '~> 2.1.0' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 9c05a53e4..61e7db354 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -35,8 +35,8 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - acts-as-taggable-on (5.0.0) - activerecord (>= 4.2.8) + acts-as-taggable-on (4.0.0) + activerecord (>= 4.0) acts_as_votable (0.10.0) addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) @@ -65,7 +65,7 @@ GEM babel-source (>= 4.0, < 6) execjs (~> 2.0) bcrypt (3.1.11) - browser (2.4.0) + browser (2.3.0) builder (3.2.3) bullet (5.5.1) activesupport (>= 3.0.0) @@ -117,7 +117,7 @@ GEM tins (~> 1.6) daemons (1.2.4) dalli (2.7.6) - database_cleaner (1.6.1) + database_cleaner (1.5.3) debug_inspector (0.0.3) delayed_job (4.1.2) activesupport (>= 3.0, < 5.1) @@ -432,9 +432,8 @@ GEM tolk (2.0.0) rails (>= 4.0) safe_yaml (>= 0.8.6) - turbolinks (5.0.1) - turbolinks-source (~> 5) - turbolinks-source (5.0.3) + turbolinks (2.5.3) + coffee-rails turnout (2.4.0) i18n (~> 0.7) rack (>= 1.3, < 3) @@ -472,11 +471,11 @@ PLATFORMS ruby DEPENDENCIES - acts-as-taggable-on + acts-as-taggable-on (~> 4.0.0) acts_as_votable ahoy_matey (~> 1.6.0) ancestry (~> 2.2.2) - browser + browser (~> 2.3.0) bullet (~> 5.5.1) byebug cancancan (~> 1.16.0) @@ -490,12 +489,12 @@ DEPENDENCIES coveralls (~> 0.8.21) daemons dalli - database_cleaner + database_cleaner (~> 1.5.3) delayed_job_active_record (~> 4.1.0) devise (~> 3.5.7) devise-async devise_security_extension - email_spec + email_spec (~> 2.1.0) factory_girl_rails (~> 4.8.0) faker (~> 1.7.3) foundation-rails (~> 6.2.4.0) @@ -535,11 +534,11 @@ DEPENDENCIES savon sitemap_generator (~> 5.3.1) social-share-button (~> 0.10) - spring + spring (~> 2.0.1) spring-commands-rspec sprockets (~> 3.7.1) tolk (~> 2.0.0) - turbolinks + turbolinks (~> 2.5.3) turnout (~> 2.4.0) uglifier (~> 3.2.0) unicorn (~> 5.3.0) From 6b89bdd17d7bf5f60ee248553b5e1bc91b133685 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 23 May 2017 20:26:39 +0200 Subject: [PATCH 08/10] Revert Gemfile.lock changes by mistake, also remove Gemfile gem version specification --- Gemfile | 12 ++++++------ Gemfile.lock | 54 +++++++++++++++++++++++++--------------------------- 2 files changed, 32 insertions(+), 34 deletions(-) diff --git a/Gemfile b/Gemfile index 73d7dd4f6..52c854618 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ gem 'coffee-rails', '~> 4.2.1' gem 'jquery-rails', '~> 4.3.1' gem 'jquery-ui-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks -gem 'turbolinks', '~> 2.5.3' +gem 'turbolinks' # Fix sprockets on the gem 'sprockets', '~> 3.7.1' @@ -33,7 +33,7 @@ gem 'omniauth-google-oauth2', '~> 0.4.0' gem 'kaminari', '~> 1.0.1' gem 'ancestry', '~> 2.2.2' -gem 'acts-as-taggable-on', '~> 4.0.0' +gem 'acts-as-taggable-on' gem 'responders', '~> 2.4.0' gem 'foundation-rails', '~> 6.2.4.0' gem 'foundation_rails_helper', '~> 2.0.0' @@ -61,7 +61,7 @@ gem 'ahoy_matey', '~> 1.6.0' gem 'groupdate', '~> 3.2.0' # group temporary data gem 'tolk', '~> 2.0.0' # Web interface for translations -gem 'browser', '~> 2.3.0' +gem 'browser' gem 'turnout', '~> 2.4.0' gem 'redcarpet', '~> 3.4.0' gem 'rubyzip', '~> 1.2.0' @@ -72,7 +72,7 @@ group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring - gem 'spring', '~> 2.0.1' + gem 'spring' gem 'spring-commands-rspec' gem 'rspec-rails', '~> 3.6' gem 'capybara', '~> 2.14.0' @@ -94,10 +94,10 @@ group :development, :test do end group :test do - gem 'database_cleaner', '~> 1.5.3' + gem 'database_cleaner' gem 'poltergeist', '~> 1.15.0' gem 'coveralls', '~> 0.8.21', require: false - gem 'email_spec', '~> 2.1.0' + gem 'email_spec' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 61e7db354..3590726c6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -97,7 +97,7 @@ GEM ckeditor (4.2.3) cocaine orm_adapter (~> 0.5.0) - climate_control (0.2.0) + climate_control (0.1.0) cliver (0.3.2) cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) @@ -118,7 +118,7 @@ GEM daemons (1.2.4) dalli (2.7.6) database_cleaner (1.5.3) - debug_inspector (0.0.3) + debug_inspector (0.0.2) delayed_job (4.1.2) activesupport (>= 3.0, < 5.1) delayed_job_active_record (4.1.1) @@ -142,10 +142,10 @@ GEM json thread thread_safe - email_spec (2.1.1) + email_spec (2.1.0) htmlentities (~> 4.3.3) launchy (~> 2.1) - mail (~> 2.6) + mail (~> 2.6.3) errbase (0.0.3) erubis (2.7.0) execjs (2.7.0) @@ -171,9 +171,9 @@ GEM fuubar (2.2.0) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) - geocoder (1.4.4) - globalid (0.4.0) - activesupport (>= 4.2.0) + geocoder (1.4.3) + globalid (0.3.7) + activesupport (>= 4.1.0) groupdate (3.2.0) activesupport (>= 3) gyoku (1.3.1) @@ -181,9 +181,8 @@ GEM hashie (3.5.5) highline (1.7.8) htmlentities (4.3.4) - httpi (2.4.2) + httpi (2.4.1) rack - socksify i18n (0.8.1) i18n-tasks (0.9.15) activesupport (>= 4.0.2) @@ -240,7 +239,7 @@ GEM mime-types-data (3.2016.0521) mimemagic (0.3.2) mini_portile2 (2.1.0) - minitest (5.10.2) + minitest (5.10.1) multi_json (1.12.1) multi_xml (0.6.0) multipart-post (2.0.0) @@ -251,7 +250,7 @@ GEM nokogiri (1.7.2) mini_portile2 (~> 2.1.0) nori (2.6.0) - oauth (0.5.2) + oauth (0.5.1) oauth2 (1.3.1) faraday (>= 0.8, < 0.12) jwt (~> 1.0) @@ -301,7 +300,7 @@ GEM public_suffix (2.0.5) quiet_assets (1.1.0) railties (>= 3.1, < 5.0) - rack (1.6.8) + rack (1.6.5) rack-accept (0.4.5) rack (>= 0.4) rack-attack (5.0.1) @@ -376,7 +375,7 @@ GEM safe_yaml (1.0.4) safely_block (0.2.0) errbase - sass (3.4.24) + sass (3.4.23) sass-rails (5.0.6) railties (>= 4.0.0, < 6) sass (~> 3.1) @@ -395,13 +394,12 @@ GEM docile (~> 1.1.0) json (>= 1.8, < 3) simplecov-html (~> 0.10.0) - simplecov-html (0.10.1) + simplecov-html (0.10.0) sitemap_generator (5.3.1) builder (~> 3.0) social-share-button (0.10.0) coffee-rails - socksify (1.7.1) - spring (2.0.2) + spring (2.0.1) activesupport (>= 4.2) spring-commands-rspec (1.0.4) spring (>= 0.9.1) @@ -421,14 +419,14 @@ GEM net-ssh (>= 2.8.0) term-ansicolor (1.6.0) tins (~> 1.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (1.7.3) + unicode-display_width (~> 1.1.1) thor (0.19.4) thread (0.2.2) thread_safe (0.3.6) tilt (2.0.7) timecop (0.8.1) - tins (1.14.0) + tins (1.13.2) tolk (2.0.0) rails (>= 4.0) safe_yaml (>= 0.8.6) @@ -443,14 +441,14 @@ GEM thread_safe (~> 0.1) uglifier (3.2.0) execjs (>= 0.3.0, < 3) - unicode-display_width (1.2.1) + unicode-display_width (1.1.3) unicorn (5.3.0) kgio (~> 2.6) raindrops (~> 0.7) uniform_notifier (1.10.0) - user_agent_parser (2.3.1) + user_agent_parser (2.3.0) uuidtools (2.1.5) - warden (1.2.7) + warden (1.2.6) rack (>= 1.0) wasabi (3.5.0) httpi (~> 2.0) @@ -471,11 +469,11 @@ PLATFORMS ruby DEPENDENCIES - acts-as-taggable-on (~> 4.0.0) + acts-as-taggable-on acts_as_votable ahoy_matey (~> 1.6.0) ancestry (~> 2.2.2) - browser (~> 2.3.0) + browser bullet (~> 5.5.1) byebug cancancan (~> 1.16.0) @@ -489,12 +487,12 @@ DEPENDENCIES coveralls (~> 0.8.21) daemons dalli - database_cleaner (~> 1.5.3) + database_cleaner delayed_job_active_record (~> 4.1.0) devise (~> 3.5.7) devise-async devise_security_extension - email_spec (~> 2.1.0) + email_spec factory_girl_rails (~> 4.8.0) faker (~> 1.7.3) foundation-rails (~> 6.2.4.0) @@ -534,11 +532,11 @@ DEPENDENCIES savon sitemap_generator (~> 5.3.1) social-share-button (~> 0.10) - spring (~> 2.0.1) + spring spring-commands-rspec sprockets (~> 3.7.1) tolk (~> 2.0.0) - turbolinks (~> 2.5.3) + turbolinks turnout (~> 2.4.0) uglifier (~> 3.2.0) unicorn (~> 5.3.0) From 9ba29fef8cc0b5abb283d840d03e8d064643d0e8 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 24 May 2017 12:23:05 +0200 Subject: [PATCH 09/10] Add feature scenario for Newsletter admin section, including email zip download --- spec/features/admin/newsletters_spec.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 spec/features/admin/newsletters_spec.rb diff --git a/spec/features/admin/newsletters_spec.rb b/spec/features/admin/newsletters_spec.rb new file mode 100644 index 000000000..0357cbd52 --- /dev/null +++ b/spec/features/admin/newsletters_spec.rb @@ -0,0 +1,22 @@ +require 'rails_helper' + +feature 'Admin newsletters emails' do + + let(:download_button_text) { 'Download zip with users list' } + + background do + @admin = create(:administrator) + login_as(@admin.user) + visit admin_newsletters_path + end + + scenario 'Index' do + expect(page).to have_content download_button_text + end + + scenario 'Download newsletter email zip' do + click_link download_button_text + expect( Zip::InputStream.open(StringIO.new(page.body)).get_next_entry.get_input_stream {|is| is.read } ).to include @admin.user.email + end +end + From 4ab92731b6e2f2a6abf31b757e918ed5639c3ba9 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 24 May 2017 12:56:03 +0200 Subject: [PATCH 10/10] Add expectations for newsletter users and non-newsletter users on email zip download scenario --- spec/features/admin/newsletters_spec.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spec/features/admin/newsletters_spec.rb b/spec/features/admin/newsletters_spec.rb index 0357cbd52..fccb63dc8 100644 --- a/spec/features/admin/newsletters_spec.rb +++ b/spec/features/admin/newsletters_spec.rb @@ -6,6 +6,8 @@ feature 'Admin newsletters emails' do background do @admin = create(:administrator) + @newsletter_user = create(:user, newsletter: true) + @non_newsletter_user = create(:user, newsletter: false) login_as(@admin.user) visit admin_newsletters_path end @@ -16,7 +18,9 @@ feature 'Admin newsletters emails' do scenario 'Download newsletter email zip' do click_link download_button_text - expect( Zip::InputStream.open(StringIO.new(page.body)).get_next_entry.get_input_stream {|is| is.read } ).to include @admin.user.email + downloaded_file_content = Zip::InputStream.open(StringIO.new(page.body)).get_next_entry.get_input_stream {|is| is.read } + expect(downloaded_file_content).to include(@admin.user.email, @newsletter_user.email) + expect(downloaded_file_content).not_to include(@non_newsletter_user.email) end end