From 0c27f1ffde2ba3292abcc7d906bef5a7edca19d6 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 19:47:12 +0200 Subject: [PATCH 01/11] Rename Legislation Process final_publication_date field to more descriptive result_publication_date --- .../admin/legislation/processes_controller.rb | 2 +- app/views/admin/legislation/processes/_form.html.erb | 8 ++++---- app/views/legislation/processes/_key_dates.html.erb | 4 ++-- app/views/legislation/processes/_process.html.erb | 4 ++-- app/views/sandbox/admin_legislation_info.html.erb | 4 ++-- config/locales/activerecord.en.yml | 2 +- config/locales/activerecord.es.yml | 2 +- config/locales/legislation.en.yml | 2 +- config/locales/legislation.es.yml | 2 +- db/dev_seeds.rb | 2 +- ...me_legislation_process_final_pub_to_result_pub.rb | 5 +++++ db/schema.rb | 6 +++--- spec/factories.rb | 8 ++++---- spec/features/admin/legislation/processes_spec.rb | 2 +- spec/features/legislation/processes_spec.rb | 4 ++-- spec/models/legislation/process_spec.rb | 12 ++++++------ 16 files changed, 37 insertions(+), 32 deletions(-) create mode 100644 db/migrate/20170613174317_rename_legislation_process_final_pub_to_result_pub.rb diff --git a/app/controllers/admin/legislation/processes_controller.rb b/app/controllers/admin/legislation/processes_controller.rb index 8d349633b..2c352a2db 100644 --- a/app/controllers/admin/legislation/processes_controller.rb +++ b/app/controllers/admin/legislation/processes_controller.rb @@ -45,7 +45,7 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll :draft_publication_date, :allegations_start_date, :allegations_end_date, - :final_publication_date + :result_publication_date ) end end diff --git a/app/views/admin/legislation/processes/_form.html.erb b/app/views/admin/legislation/processes/_form.html.erb index ac49f8a7d..9d877a3da 100644 --- a/app/views/admin/legislation/processes/_form.html.erb +++ b/app/views/admin/legislation/processes/_form.html.erb @@ -135,14 +135,14 @@
- <%= f.label :final_publication_date %> + <%= f.label :result_publication_date %>
- <%= f.text_field :final_publication_date, + <%= f.text_field :result_publication_date, label: false, - value: format_date_for_calendar_form(@process.final_publication_date), + value: format_date_for_calendar_form(@process.result_publication_date), class: "js-calendar-full", - id: "final_publication_date" %> + id: "result_publication_date" %>
<%= check_box_tag :final_version_publication_phase_active, @process.active_phase?(:final_version_publication), @process.new_record? || @process.active_phase?(:final_version_publication), data: {disable_date: "final_publication"} %> diff --git a/app/views/legislation/processes/_key_dates.html.erb b/app/views/legislation/processes/_key_dates.html.erb index bf6a3b2de..ab2bd72c9 100644 --- a/app/views/legislation/processes/_key_dates.html.erb +++ b/app/views/legislation/processes/_key_dates.html.erb @@ -37,8 +37,8 @@ <% if process.active_phase?(:final_version_publication) %>
  • > <%= link_to legislation_process_final_version_publication_path(process) do %> -

    <%= t('legislation.processes.shared.final_publication_date') %>

    -

    <%= format_date(process.final_publication_date) %>

    +

    <%= t('legislation.processes.shared.result_publication_date') %>

    +

    <%= format_date(process.result_publication_date) %>

    <% end %>
  • <% end %> diff --git a/app/views/legislation/processes/_process.html.erb b/app/views/legislation/processes/_process.html.erb index 77ee985d9..a0a2d2e37 100644 --- a/app/views/legislation/processes/_process.html.erb +++ b/app/views/legislation/processes/_process.html.erb @@ -37,8 +37,8 @@

    <%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %>

    -
    <%= t('legislation.processes.shared.final_publication_date') %>
    -

    <%= format_date(process.final_publication_date) %>

    +
    <%= t('legislation.processes.shared.result_publication_date') %>
    +

    <%= format_date(process.result_publication_date) %>

    diff --git a/app/views/sandbox/admin_legislation_info.html.erb b/app/views/sandbox/admin_legislation_info.html.erb index fe53bc724..969a57014 100644 --- a/app/views/sandbox/admin_legislation_info.html.erb +++ b/app/views/sandbox/admin_legislation_info.html.erb @@ -71,10 +71,10 @@
    - +
    - +
    diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index d36a481ae..0af387a50 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -176,7 +176,7 @@ en: draft_publication_date: Draft publication date allegations_start_date: Allegations start date allegations_end_date: Allegations end date - final_publication_date: Final result publication date + result_publication_date: Final result publication date legislation/draft_version: title: Version title body: Text diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index f42577ef2..b2b5fc20e 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -171,7 +171,7 @@ es: draft_publication_date: Fecha de publicación del borrador allegations_start_date: Fecha de inicio de alegaciones allegations_end_date: Fecha de fin de alegaciones - final_publication_date: Fecha de publicación del resultado final + result_publication_date: Fecha de publicación del resultado final legislation/draft_version: title: Título de la version body: Texto diff --git a/config/locales/legislation.en.yml b/config/locales/legislation.en.yml index 7faa3b44c..793341bac 100644 --- a/config/locales/legislation.en.yml +++ b/config/locales/legislation.en.yml @@ -76,7 +76,7 @@ en: debate_dates: Debate draft_publication_date: Draft publication allegations_dates: Allegations - final_publication_date: Final result publication + result_publication_date: Final result publication questions: comments: comment_button: Publish answer diff --git a/config/locales/legislation.es.yml b/config/locales/legislation.es.yml index acb6583ee..59ed9b64c 100644 --- a/config/locales/legislation.es.yml +++ b/config/locales/legislation.es.yml @@ -76,7 +76,7 @@ es: debate_dates: Debate previo draft_publication_date: Publicación borrador allegations_dates: Alegaciones - final_publication_date: Publicación resultados + result_publication_date: Publicación resultados questions: comments: comment_button: Publicar respuesta diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb index 5dd5bc0c7..d828262bf 100644 --- a/db/dev_seeds.rb +++ b/db/dev_seeds.rb @@ -643,7 +643,7 @@ print "Creating legislation processes" draft_publication_date: Date.current + 1.day, allegations_start_date: Date.current + 2.days, allegations_end_date: Date.current + 3.days, - final_publication_date: Date.current + 4.days + result_publication_date: Date.current + 4.days ) end diff --git a/db/migrate/20170613174317_rename_legislation_process_final_pub_to_result_pub.rb b/db/migrate/20170613174317_rename_legislation_process_final_pub_to_result_pub.rb new file mode 100644 index 000000000..e71314531 --- /dev/null +++ b/db/migrate/20170613174317_rename_legislation_process_final_pub_to_result_pub.rb @@ -0,0 +1,5 @@ +class RenameLegislationProcessFinalPubToResultPub < ActiveRecord::Migration + def change + rename_column :legislation_processes, :final_publication_date, :result_publication_date + end +end diff --git a/db/schema.rb b/db/schema.rb index ad8bffd24..39c9d97a5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170610211027) do +ActiveRecord::Schema.define(version: 20170613174317) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -412,7 +412,7 @@ ActiveRecord::Schema.define(version: 20170610211027) do t.date "draft_publication_date" t.date "allegations_start_date" t.date "allegations_end_date" - t.date "final_publication_date" + t.date "result_publication_date" t.datetime "hidden_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -425,8 +425,8 @@ ActiveRecord::Schema.define(version: 20170610211027) do add_index "legislation_processes", ["debate_start_date"], name: "index_legislation_processes_on_debate_start_date", using: :btree add_index "legislation_processes", ["draft_publication_date"], name: "index_legislation_processes_on_draft_publication_date", using: :btree add_index "legislation_processes", ["end_date"], name: "index_legislation_processes_on_end_date", using: :btree - add_index "legislation_processes", ["final_publication_date"], name: "index_legislation_processes_on_final_publication_date", using: :btree add_index "legislation_processes", ["hidden_at"], name: "index_legislation_processes_on_hidden_at", using: :btree + add_index "legislation_processes", ["result_publication_date"], name: "index_legislation_processes_on_result_publication_date", using: :btree add_index "legislation_processes", ["start_date"], name: "index_legislation_processes_on_start_date", using: :btree create_table "legislation_question_options", force: :cascade do |t| diff --git a/spec/factories.rb b/spec/factories.rb index 80c8b23d0..cc39af5d7 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -611,7 +611,7 @@ FactoryGirl.define do draft_publication_date Date.current - 1.day allegations_start_date Date.current allegations_end_date Date.current + 3.days - final_publication_date Date.current + 5.days + result_publication_date Date.current + 5.days trait :next do start_date Date.current + 2.days @@ -621,7 +621,7 @@ FactoryGirl.define do draft_publication_date Date.current + 5.day allegations_start_date Date.current + 5.days allegations_end_date Date.current + 7.days - final_publication_date Date.current + 8.days + result_publication_date Date.current + 8.days end trait :past do @@ -632,7 +632,7 @@ FactoryGirl.define do draft_publication_date Date.current - 8.day allegations_start_date Date.current - 8.days allegations_end_date Date.current - 4.days - final_publication_date Date.current - 2.days + result_publication_date Date.current - 2.days end trait :in_debate_phase do @@ -643,7 +643,7 @@ FactoryGirl.define do draft_publication_date Date.current + 1.day allegations_start_date Date.current + 2.days allegations_end_date Date.current + 3.days - final_publication_date Date.current + 5.days + result_publication_date Date.current + 5.days end end diff --git a/spec/features/admin/legislation/processes_spec.rb b/spec/features/admin/legislation/processes_spec.rb index 60a872190..2c8de0d95 100644 --- a/spec/features/admin/legislation/processes_spec.rb +++ b/spec/features/admin/legislation/processes_spec.rb @@ -51,7 +51,7 @@ feature 'Admin legislation processes' do fill_in 'legislation_process[draft_publication_date]', with: (base_date + 3.days).strftime("%d/%m/%Y") fill_in 'legislation_process[allegations_start_date]', with: (base_date + 3.days).strftime("%d/%m/%Y") fill_in 'legislation_process[allegations_end_date]', with: (base_date + 5.days).strftime("%d/%m/%Y") - fill_in 'legislation_process[final_publication_date]', with: (base_date + 7.days).strftime("%d/%m/%Y") + fill_in 'legislation_process[result_publication_date]', with: (base_date + 7.days).strftime("%d/%m/%Y") click_button 'Create process' diff --git a/spec/features/legislation/processes_spec.rb b/spec/features/legislation/processes_spec.rb index 66356dff8..caae66490 100644 --- a/spec/features/legislation/processes_spec.rb +++ b/spec/features/legislation/processes_spec.rb @@ -104,7 +104,7 @@ feature 'Legislation' do context 'final version publication phase' do scenario 'not open' do - process = create(:legislation_process, final_publication_date: Date.current + 1.day) + process = create(:legislation_process, result_publication_date: Date.current + 1.day) visit legislation_process_final_version_publication_path(process) @@ -112,7 +112,7 @@ feature 'Legislation' do end scenario 'open' do - process = create(:legislation_process, final_publication_date: Date.current) + process = create(:legislation_process, result_publication_date: Date.current) visit legislation_process_final_version_publication_path(process) diff --git a/spec/models/legislation/process_spec.rb b/spec/models/legislation/process_spec.rb index f89a4bfcf..239abad1b 100644 --- a/spec/models/legislation/process_spec.rb +++ b/spec/models/legislation/process_spec.rb @@ -154,15 +154,15 @@ RSpec.describe Legislation::Process, type: :model do it "checks final version publication phase" do # future - process.update_attributes(final_publication_date: Date.current + 2.days) + process.update_attributes(result_publication_date: Date.current + 2.days) expect(process.open_phase?(:final_version_publication)).to be false # past - process.update_attributes(final_publication_date: Date.current - 2.days) + process.update_attributes(result_publication_date: Date.current - 2.days) expect(process.open_phase?(:final_version_publication)).to be true # starts today - process.update_attributes(final_publication_date: Date.current) + process.update_attributes(result_publication_date: Date.current) expect(process.open_phase?(:final_version_publication)).to be true end end @@ -220,15 +220,15 @@ RSpec.describe Legislation::Process, type: :model do it "checks final version publication phase" do # future - process.update_attributes(final_publication_date: Date.current + 2.days) + process.update_attributes(result_publication_date: Date.current + 2.days) expect(process.show_phase?(:final_version_publication)).to be false # past - process.update_attributes(final_publication_date: Date.current - 2.days) + process.update_attributes(result_publication_date: Date.current - 2.days) expect(process.show_phase?(:final_version_publication)).to be true # starts today - process.update_attributes(final_publication_date: Date.current) + process.update_attributes(result_publication_date: Date.current) expect(process.show_phase?(:final_version_publication)).to be true end end From edee908fc1ab565408d0f99043e99435fa7ea33d Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 19:52:28 +0200 Subject: [PATCH 02/11] Create Legislation Process Phase and Publication classes to enclose enabled?/started?/open? logic --- app/models/legislation/process/phase.rb | 22 +++++++++++++++++++ app/models/legislation/process/publication.rb | 21 ++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 app/models/legislation/process/phase.rb create mode 100644 app/models/legislation/process/publication.rb diff --git a/app/models/legislation/process/phase.rb b/app/models/legislation/process/phase.rb new file mode 100644 index 000000000..1b8482a9a --- /dev/null +++ b/app/models/legislation/process/phase.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class Legislation::Process::Phase + + def initialize(start_date, end_date) + @start_date = start_date + @end_date = end_date + end + + def enabled? + @start_date.present? && @end_date.present? + end + + def started? + enabled? && Date.current >= @start_date + end + + def open? + started? && Date.current <= @end_date + end + +end diff --git a/app/models/legislation/process/publication.rb b/app/models/legislation/process/publication.rb new file mode 100644 index 000000000..10110f0e7 --- /dev/null +++ b/app/models/legislation/process/publication.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class Legislation::Process::Publication + + def initialize(publication_date) + @publication_date = publication_date + end + + def enabled? + @publication_date.present? + end + + def started? + enabled? && Date.current >= @publication_date + end + + def open? + started? + end + +end From e55328caf49b694e26a5ef44e1abfb8f82e9faf9 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 19:59:49 +0200 Subject: [PATCH 03/11] Rename legislation process final_version_publication phase name to more descriptive result_publication --- app/controllers/legislation/processes_controller.rb | 4 ++-- app/models/abilities/everyone.rb | 2 +- app/models/legislation/process.rb | 10 +++++----- app/views/admin/legislation/processes/_form.html.erb | 4 ++-- app/views/legislation/processes/_key_dates.html.erb | 6 +++--- config/routes.rb | 2 +- spec/features/legislation/processes_spec.rb | 4 ++-- spec/models/legislation/process_spec.rb | 12 ++++++------ 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index 7aff709d0..a10bb5637 100644 --- a/app/controllers/legislation/processes_controller.rb +++ b/app/controllers/legislation/processes_controller.rb @@ -55,8 +55,8 @@ class Legislation::ProcessesController < Legislation::BaseController end end - def final_version_publication - phase :final_version_publication + def result_publication + phase :result_publication if @process.show_phase?(@phase) if final_version = @process.final_draft_version diff --git a/app/models/abilities/everyone.rb b/app/models/abilities/everyone.rb index c22a3f7e4..eaa971016 100644 --- a/app/models/abilities/everyone.rb +++ b/app/models/abilities/everyone.rb @@ -19,7 +19,7 @@ module Abilities can [:read, :print], Budget::Investment can :read_results, Budget, phase: "finished" can :new, DirectMessage - can [:read, :debate, :draft_publication, :allegations, :final_version_publication], Legislation::Process + can [:read, :debate, :draft_publication, :allegations, :result_publication], Legislation::Process can [:read, :changes, :go_to_version], Legislation::DraftVersion can [:read], Legislation::Question can [:create], Legislation::Answer diff --git a/app/models/legislation/process.rb b/app/models/legislation/process.rb index 32468b834..c63d5ef1b 100644 --- a/app/models/legislation/process.rb +++ b/app/models/legislation/process.rb @@ -29,8 +29,8 @@ class Legislation::Process < ActiveRecord::Base active_phase?(:draft_publication) && today >= draft_publication_date when :allegations active_phase?(:allegations) && today >= allegations_start_date && today <= allegations_end_date - when :final_version_publication - active_phase?(:final_version_publication) && today >= final_publication_date + when :result_publication + active_phase?(:result_publication) && today >= final_publication_date end end @@ -45,8 +45,8 @@ class Legislation::Process < ActiveRecord::Base active_phase?(:draft_publication) && today >= draft_publication_date when :allegations active_phase?(:allegations) && today >= allegations_start_date - when :final_version_publication - active_phase?(:final_version_publication) && today >= final_publication_date + when :result_publication + active_phase?(:result_publication) && today >= final_publication_date end end @@ -58,7 +58,7 @@ class Legislation::Process < ActiveRecord::Base draft_publication_date.present? when :allegations allegations_start_date.present? && allegations_end_date.present? - when :final_version_publication + when :result_publication final_publication_date.present? end end diff --git a/app/views/admin/legislation/processes/_form.html.erb b/app/views/admin/legislation/processes/_form.html.erb index 9d877a3da..88cb6560b 100644 --- a/app/views/admin/legislation/processes/_form.html.erb +++ b/app/views/admin/legislation/processes/_form.html.erb @@ -145,8 +145,8 @@ id: "result_publication_date" %>
    - <%= check_box_tag :final_version_publication_phase_active, @process.active_phase?(:final_version_publication), @process.new_record? || @process.active_phase?(:final_version_publication), data: {disable_date: "final_publication"} %> - <%= label_tag :final_version_publication_phase_active, t('admin.legislation.processes.form.active') %> + <%= check_box_tag :result_publication_phase_active, @process.active_phase?(:result_publication), @process.new_record? || @process.active_phase?(:result_publication), data: {disable_date: "final_publication"} %> + <%= label_tag :result_publication_phase_active, t('admin.legislation.processes.form.active') %>

    diff --git a/app/views/legislation/processes/_key_dates.html.erb b/app/views/legislation/processes/_key_dates.html.erb index ab2bd72c9..23471d217 100644 --- a/app/views/legislation/processes/_key_dates.html.erb +++ b/app/views/legislation/processes/_key_dates.html.erb @@ -34,9 +34,9 @@ <% end %> - <% if process.active_phase?(:final_version_publication) %> -
  • > - <%= link_to legislation_process_final_version_publication_path(process) do %> + <% if process.active_phase?(:result_publication) %> +
  • > + <%= link_to legislation_process_result_publication_path(process) do %>

    <%= t('legislation.processes.shared.result_publication_date') %>

    <%= format_date(process.result_publication_date) %>

    <% end %> diff --git a/config/routes.rb b/config/routes.rb index 6cbd69c3a..05d58ffab 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -112,7 +112,7 @@ Rails.application.routes.draw do get :debate get :draft_publication get :allegations - get :final_version_publication + get :result_publication resources :questions, only: [:show] do resources :answers, only: [:create] end diff --git a/spec/features/legislation/processes_spec.rb b/spec/features/legislation/processes_spec.rb index caae66490..3ed4ccb74 100644 --- a/spec/features/legislation/processes_spec.rb +++ b/spec/features/legislation/processes_spec.rb @@ -106,7 +106,7 @@ feature 'Legislation' do scenario 'not open' do process = create(:legislation_process, result_publication_date: Date.current + 1.day) - visit legislation_process_final_version_publication_path(process) + visit legislation_process_result_publication_path(process) expect(page).to have_content("This phase is not open yet") end @@ -114,7 +114,7 @@ feature 'Legislation' do scenario 'open' do process = create(:legislation_process, result_publication_date: Date.current) - visit legislation_process_final_version_publication_path(process) + visit legislation_process_result_publication_path(process) expect(page).to have_content("Nothing published yet") end diff --git a/spec/models/legislation/process_spec.rb b/spec/models/legislation/process_spec.rb index 239abad1b..1f831aee8 100644 --- a/spec/models/legislation/process_spec.rb +++ b/spec/models/legislation/process_spec.rb @@ -155,15 +155,15 @@ RSpec.describe Legislation::Process, type: :model do it "checks final version publication phase" do # future process.update_attributes(result_publication_date: Date.current + 2.days) - expect(process.open_phase?(:final_version_publication)).to be false + expect(process.open_phase?(:result_publication)).to be false # past process.update_attributes(result_publication_date: Date.current - 2.days) - expect(process.open_phase?(:final_version_publication)).to be true + expect(process.open_phase?(:result_publication)).to be true # starts today process.update_attributes(result_publication_date: Date.current) - expect(process.open_phase?(:final_version_publication)).to be true + expect(process.open_phase?(:result_publication)).to be true end end @@ -221,15 +221,15 @@ RSpec.describe Legislation::Process, type: :model do it "checks final version publication phase" do # future process.update_attributes(result_publication_date: Date.current + 2.days) - expect(process.show_phase?(:final_version_publication)).to be false + expect(process.show_phase?(:result_publication)).to be false # past process.update_attributes(result_publication_date: Date.current - 2.days) - expect(process.show_phase?(:final_version_publication)).to be true + expect(process.show_phase?(:result_publication)).to be true # starts today process.update_attributes(result_publication_date: Date.current) - expect(process.show_phase?(:final_version_publication)).to be true + expect(process.show_phase?(:result_publication)).to be true end end From 10954859c75b534351b4670c694f55c5c723831e Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 20:10:38 +0200 Subject: [PATCH 04/11] Add debate/allegations phases and draft/result publications helper methods to Legislation Process --- app/models/legislation/process.rb | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/app/models/legislation/process.rb b/app/models/legislation/process.rb index c63d5ef1b..6fa46a606 100644 --- a/app/models/legislation/process.rb +++ b/app/models/legislation/process.rb @@ -30,7 +30,7 @@ class Legislation::Process < ActiveRecord::Base when :allegations active_phase?(:allegations) && today >= allegations_start_date && today <= allegations_end_date when :result_publication - active_phase?(:result_publication) && today >= final_publication_date + active_phase?(:result_publication) && today >= result_publication_date end end @@ -46,7 +46,7 @@ class Legislation::Process < ActiveRecord::Base when :allegations active_phase?(:allegations) && today >= allegations_start_date when :result_publication - active_phase?(:result_publication) && today >= final_publication_date + active_phase?(:result_publication) && today >= result_publication_date end end @@ -59,10 +59,26 @@ class Legislation::Process < ActiveRecord::Base when :allegations allegations_start_date.present? && allegations_end_date.present? when :result_publication - final_publication_date.present? + result_publication_date.present? end end + def debate_phase + Legislation::Process::Phase.new(debate_start_date, debate_end_date) + end + + def allegations_phase + Legislation::Process::Phase.new(allegations_start_date, allegations_end_date) + end + + def draft_publication + Legislation::Process::Publication.new(draft_publication_date) + end + + def result_publication + Legislation::Process::Publication.new(result_publication_date) + end + def total_comments questions.sum(:comments_count) + draft_versions.map(&:total_comments).sum end From 12dc7a47902bd691324c00966c5caa86ec6c3e67 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 20:33:00 +0200 Subject: [PATCH 05/11] Add specs for Legislation::Process Phase and Publication enabled?/started?/open? methods --- spec/models/legislation/process/phase_spec.rb | 99 +++++++++++++++++++ .../legislation/process/publication_spec.rb | 81 +++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 spec/models/legislation/process/phase_spec.rb create mode 100644 spec/models/legislation/process/publication_spec.rb diff --git a/spec/models/legislation/process/phase_spec.rb b/spec/models/legislation/process/phase_spec.rb new file mode 100644 index 000000000..a92b36f78 --- /dev/null +++ b/spec/models/legislation/process/phase_spec.rb @@ -0,0 +1,99 @@ +require 'rails_helper' + +RSpec.describe Legislation::Process::Phase, type: :model do + let(:process) { create(:legislation_process) } + + describe "#enabled?" do + it "checks debate phase" do + expect(process.debate_phase.enabled?).to be true + + process.update_attributes(debate_start_date: nil, debate_end_date: nil) + expect(process.debate_phase.enabled?).to be false + end + + it "checks allegations phase" do + expect(process.allegations_phase.enabled?).to be true + + process.update_attributes(allegations_start_date: nil, allegations_end_date: nil) + expect(process.allegations_phase.enabled?).to be false + end + end + + describe "#started?" do + it "checks debate phase" do + # future + process.update_attributes(debate_start_date: Date.current + 2.days, debate_end_date: Date.current + 3.days) + expect(process.debate_phase.started?).to be false + + # started + process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current + 1.day) + expect(process.debate_phase.started?).to be true + + # starts today + process.update_attributes(debate_start_date: Date.current, debate_end_date: Date.current + 1.day) + expect(process.debate_phase.started?).to be true + + # past + process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current - 1.day) + expect(process.debate_phase.started?).to be true + end + + it "checks allegations phase" do + # future + process.update_attributes(allegations_start_date: Date.current + 2.days, allegations_end_date: Date.current + 3.days) + expect(process.allegations_phase.started?).to be false + + # started + process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current + 1.day) + expect(process.allegations_phase.started?).to be true + + # starts today + process.update_attributes(allegations_start_date: Date.current, allegations_end_date: Date.current + 1.day) + expect(process.allegations_phase.started?).to be true + + # past + process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current - 1.day) + expect(process.allegations_phase.started?).to be true + end + end + + describe "#open?" do + it "checks debate phase" do + # future + process.update_attributes(debate_start_date: Date.current + 2.days, debate_end_date: Date.current + 3.days) + expect(process.debate_phase.open?).to be false + + # started + process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current + 1.day) + expect(process.debate_phase.open?).to be true + + # starts today + process.update_attributes(debate_start_date: Date.current, debate_end_date: Date.current + 1.day) + expect(process.debate_phase.open?).to be true + + # past + process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current - 1.day) + expect(process.debate_phase.open?).to be false + end + + it "checks allegations phase" do + + # future + process.update_attributes(allegations_start_date: Date.current + 2.days, allegations_end_date: Date.current + 3.days) + expect(process.allegations_phase.open?).to be false + + # started + process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current + 1.day) + expect(process.allegations_phase.open?).to be true + + # starts today + process.update_attributes(allegations_start_date: Date.current, allegations_end_date: Date.current + 1.day) + expect(process.allegations_phase.open?).to be true + + # past + process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current - 1.day) + expect(process.allegations_phase.open?).to be false + end + end + +end diff --git a/spec/models/legislation/process/publication_spec.rb b/spec/models/legislation/process/publication_spec.rb new file mode 100644 index 000000000..4731d14b2 --- /dev/null +++ b/spec/models/legislation/process/publication_spec.rb @@ -0,0 +1,81 @@ +require 'rails_helper' + +RSpec.describe Legislation::Process::Publication, type: :model do + let(:process) { create(:legislation_process) } + + describe "#enabled?" do + it "checks draft publication" do + expect(process.draft_publication.enabled?).to be true + + process.update_attributes(draft_publication_date: nil) + expect(process.draft_publication.enabled?).to be false + end + + it "checks result publication" do + expect(process.result_publication.enabled?).to be true + + process.update_attributes(result_publication_date: nil) + expect(process.result_publication.enabled?).to be false + end + end + + describe "#started?" do + it "checks draft publication" do + # future + process.update_attributes(draft_publication_date: Date.current + 2.days) + expect(process.draft_publication.started?).to be false + + # past + process.update_attributes(draft_publication_date: Date.current - 2.days) + expect(process.draft_publication.started?).to be true + + # starts today + process.update_attributes(draft_publication_date: Date.current) + expect(process.draft_publication.started?).to be true + end + + it "checks result publication" do + # future + process.update_attributes(result_publication_date: Date.current + 2.days) + expect(process.result_publication.started?).to be false + + # past + process.update_attributes(result_publication_date: Date.current - 2.days) + expect(process.result_publication.started?).to be true + + # starts today + process.update_attributes(result_publication_date: Date.current) + expect(process.result_publication.started?).to be true + end + end + + describe "#open?" do + it "checks draft publication" do + # future + process.update_attributes(draft_publication_date: Date.current + 2.days) + expect(process.draft_publication.open?).to be false + + # past + process.update_attributes(draft_publication_date: Date.current - 2.days) + expect(process.draft_publication.open?).to be true + + # starts today + process.update_attributes(draft_publication_date: Date.current) + expect(process.draft_publication.open?).to be true + end + + it "checks result publication" do + # future + process.update_attributes(result_publication_date: Date.current + 2.days) + expect(process.result_publication.open?).to be false + + # past + process.update_attributes(result_publication_date: Date.current - 2.days) + expect(process.result_publication.open?).to be true + + # starts today + process.update_attributes(result_publication_date: Date.current) + expect(process.result_publication.open?).to be true + end + end +end From 523988a29101bee7e4eda1a66425c4618c07818d Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 20:33:41 +0200 Subject: [PATCH 06/11] Replace old open_phase? method for new phase/publication open? on Legislative Process --- app/controllers/legislation/annotations_controller.rb | 2 +- app/controllers/legislation/answers_controller.rb | 2 +- app/models/legislation/question.rb | 2 +- app/views/legislation/annotations/_comments_box.html.erb | 4 ++-- app/views/legislation/annotations/_form.html.erb | 2 +- app/views/legislation/draft_versions/show.html.erb | 2 +- app/views/legislation/questions/_answer_form.html.erb | 2 +- .../legislation/questions/_participation_not_allowed.html.erb | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/controllers/legislation/annotations_controller.rb b/app/controllers/legislation/annotations_controller.rb index dc3ff4834..56f851316 100644 --- a/app/controllers/legislation/annotations_controller.rb +++ b/app/controllers/legislation/annotations_controller.rb @@ -29,7 +29,7 @@ class Legislation::AnnotationsController < ApplicationController end def create - if !@process.open_phase?(:allegations) || @draft_version.final_version? + if !@process.allegations_phase.open? || @draft_version.final_version? render json: {}, status: :not_found and return end diff --git a/app/controllers/legislation/answers_controller.rb b/app/controllers/legislation/answers_controller.rb index 372398e41..6d3c33580 100644 --- a/app/controllers/legislation/answers_controller.rb +++ b/app/controllers/legislation/answers_controller.rb @@ -9,7 +9,7 @@ class Legislation::AnswersController < Legislation::BaseController respond_to :html, :js def create - if @process.open_phase?(:debate) + if @process.debate_phase.open? @answer.user = current_user @answer.save track_event diff --git a/app/models/legislation/question.rb b/app/models/legislation/question.rb index 374c43eb5..4381b752a 100644 --- a/app/models/legislation/question.rb +++ b/app/models/legislation/question.rb @@ -37,6 +37,6 @@ class Legislation::Question < ActiveRecord::Base end def comments_open? - process.open_phase?(:debate) + process.debate_phase.open? end end diff --git a/app/views/legislation/annotations/_comments_box.html.erb b/app/views/legislation/annotations/_comments_box.html.erb index 79fdbef4b..d76d273c1 100644 --- a/app/views/legislation/annotations/_comments_box.html.erb +++ b/app/views/legislation/annotations/_comments_box.html.erb @@ -15,12 +15,12 @@ <% end %> <% end %> - <% if @process.open_phase?(:allegations) %> + <% if @process.allegations_phase.open? %> <%= t('legislation.annotations.comments.publish_comment') %>   <% end %> - <% if @process.open_phase?(:allegations) %> + <% if @process.allegations_phase.open? %> <% if user_signed_in? %> <% css_id = parent_or_commentable_dom_id(nil, annotation) %>
    - <%= check_box_tag :allegations_phase_active, @process.active_phase?(:allegations), @process.new_record? || @process.active_phase?(:allegations), data: {disable_date: "allegations"} %> + <%= check_box_tag :allegations_phase_active, @process.allegations_phase.enabled?, @process.new_record? || @process.allegations_phase.enabled?, data: {disable_date: "allegations"} %> <%= label_tag :allegations_phase_active, t('admin.legislation.processes.form.active') %>
    @@ -125,7 +125,7 @@ id: "draft_publication_date" %>
  • - <%= check_box_tag :draft_publication_phase_active, @process.active_phase?(:draft_publication), @process.new_record? || @process.active_phase?(:draft_publication), data: {disable_date: "draft_publication"} %> + <%= check_box_tag :draft_publication_phase_active, @process.draft_publication.enabled?, @process.new_record? || @process.draft_publication.enabled?, data: {disable_date: "draft_publication"} %> <%= label_tag :draft_publication_phase_active, t('admin.legislation.processes.form.active') %>
    @@ -145,7 +145,7 @@ id: "result_publication_date" %>
    - <%= check_box_tag :result_publication_phase_active, @process.active_phase?(:result_publication), @process.new_record? || @process.active_phase?(:result_publication), data: {disable_date: "final_publication"} %> + <%= check_box_tag :result_publication_phase_active, @process.result_publication.enabled?, @process.new_record? || @process.result_publication.enabled?, data: {disable_date: "final_publication"} %> <%= label_tag :result_publication_phase_active, t('admin.legislation.processes.form.active') %>
    diff --git a/app/views/legislation/processes/_key_dates.html.erb b/app/views/legislation/processes/_key_dates.html.erb index 23471d217..5e4d37ccf 100644 --- a/app/views/legislation/processes/_key_dates.html.erb +++ b/app/views/legislation/processes/_key_dates.html.erb @@ -7,7 +7,7 @@
      - <% if process.active_phase?(:debate) %> + <% if process.debate_phase.enabled? %>
    • > <%= link_to legislation_process_debate_path(process) do %>

      <%= t('legislation.processes.shared.debate_dates') %>

      @@ -16,7 +16,7 @@
    • <% end %> - <% if process.active_phase?(:draft_publication) %> + <% if process.draft_publication.enabled? %>
    • > <%= link_to legislation_process_draft_publication_path(process) do %>

      <%= t('legislation.processes.shared.draft_publication_date') %>

      @@ -25,7 +25,7 @@
    • <% end %> - <% if process.active_phase?(:allegations) %> + <% if process.allegations_phase.enabled? %>
    • > <%= link_to legislation_process_allegations_path(process) do %>

      <%= t('legislation.processes.shared.allegations_dates') %>

      @@ -34,7 +34,7 @@
    • <% end %> - <% if process.active_phase?(:result_publication) %> + <% if process.result_publication.enabled? %>
    • > <%= link_to legislation_process_result_publication_path(process) do %>

      <%= t('legislation.processes.shared.result_publication_date') %>

      From 990437dc406e629dabd59181720528c7acee3877 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 20:43:40 +0200 Subject: [PATCH 09/11] Remove no longer used active/show/open _phase helper methods from Legislation Process, and specs --- app/models/legislation/process.rb | 44 -------- spec/models/legislation/process_spec.rb | 133 ------------------------ 2 files changed, 177 deletions(-) diff --git a/app/models/legislation/process.rb b/app/models/legislation/process.rb index 6fa46a606..d7ad6cf62 100644 --- a/app/models/legislation/process.rb +++ b/app/models/legislation/process.rb @@ -19,50 +19,6 @@ class Legislation::Process < ActiveRecord::Base scope :next, -> { where("start_date > ?", Date.current).order('id DESC') } scope :past, -> { where("end_date < ?", Date.current).order('id DESC') } - def open_phase?(phase) - today = Date.current - - case phase - when :debate - active_phase?(:debate) && today >= debate_start_date && today <= debate_end_date - when :draft_publication - active_phase?(:draft_publication) && today >= draft_publication_date - when :allegations - active_phase?(:allegations) && today >= allegations_start_date && today <= allegations_end_date - when :result_publication - active_phase?(:result_publication) && today >= result_publication_date - end - end - - def show_phase?(phase) - # show past phases even if they're finished - today = Date.current - - case phase - when :debate - active_phase?(:debate) && today >= debate_start_date - when :draft_publication - active_phase?(:draft_publication) && today >= draft_publication_date - when :allegations - active_phase?(:allegations) && today >= allegations_start_date - when :result_publication - active_phase?(:result_publication) && today >= result_publication_date - end - end - - def active_phase?(phase) - case phase - when :debate - debate_start_date.present? && debate_end_date.present? - when :draft_publication - draft_publication_date.present? - when :allegations - allegations_start_date.present? && allegations_end_date.present? - when :result_publication - result_publication_date.present? - end - end - def debate_phase Legislation::Process::Phase.new(debate_start_date, debate_end_date) end diff --git a/spec/models/legislation/process_spec.rb b/spec/models/legislation/process_spec.rb index 1f831aee8..f14e81c8e 100644 --- a/spec/models/legislation/process_spec.rb +++ b/spec/models/legislation/process_spec.rb @@ -100,139 +100,6 @@ RSpec.describe Legislation::Process, type: :model do end end - describe "#open_phase?" do - it "checks debate phase" do - # future - process.update_attributes(debate_start_date: Date.current + 2.days, debate_end_date: Date.current + 3.days) - expect(process.open_phase?(:debate)).to be false - - # started - process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current + 1.day) - expect(process.open_phase?(:debate)).to be true - - # starts today - process.update_attributes(debate_start_date: Date.current, debate_end_date: Date.current + 1.day) - expect(process.open_phase?(:debate)).to be true - - # past - process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current - 1.day) - expect(process.open_phase?(:debate)).to be false - end - - it "checks allegations phase" do - - # future - process.update_attributes(allegations_start_date: Date.current + 2.days, allegations_end_date: Date.current + 3.days) - expect(process.open_phase?(:allegations)).to be false - - # started - process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current + 1.day) - expect(process.open_phase?(:allegations)).to be true - - # starts today - process.update_attributes(allegations_start_date: Date.current, allegations_end_date: Date.current + 1.day) - expect(process.open_phase?(:allegations)).to be true - - # past - process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current - 1.day) - expect(process.open_phase?(:allegations)).to be false - end - - it "checks draft publication phase" do - # future - process.update_attributes(draft_publication_date: Date.current + 2.days) - expect(process.open_phase?(:draft_publication)).to be false - - # past - process.update_attributes(draft_publication_date: Date.current - 2.days) - expect(process.open_phase?(:draft_publication)).to be true - - # starts today - process.update_attributes(draft_publication_date: Date.current) - expect(process.open_phase?(:draft_publication)).to be true - end - - it "checks final version publication phase" do - # future - process.update_attributes(result_publication_date: Date.current + 2.days) - expect(process.open_phase?(:result_publication)).to be false - - # past - process.update_attributes(result_publication_date: Date.current - 2.days) - expect(process.open_phase?(:result_publication)).to be true - - # starts today - process.update_attributes(result_publication_date: Date.current) - expect(process.open_phase?(:result_publication)).to be true - end - end - - describe "#show_phase?" do - it "checks debate phase" do - # future - process.update_attributes(debate_start_date: Date.current + 2.days, debate_end_date: Date.current + 3.days) - expect(process.show_phase?(:debate)).to be false - - # started - process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current + 1.day) - expect(process.show_phase?(:debate)).to be true - - # starts today - process.update_attributes(debate_start_date: Date.current, debate_end_date: Date.current + 1.day) - expect(process.show_phase?(:debate)).to be true - - # past - process.update_attributes(debate_start_date: Date.current - 2.days, debate_end_date: Date.current - 1.day) - expect(process.show_phase?(:debate)).to be true - end - - it "checks allegations phase" do - # future - process.update_attributes(allegations_start_date: Date.current + 2.days, allegations_end_date: Date.current + 3.days) - expect(process.show_phase?(:allegations)).to be false - - # started - process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current + 1.day) - expect(process.show_phase?(:allegations)).to be true - - # starts today - process.update_attributes(allegations_start_date: Date.current, allegations_end_date: Date.current + 1.day) - expect(process.show_phase?(:allegations)).to be true - - # past - process.update_attributes(allegations_start_date: Date.current - 2.days, allegations_end_date: Date.current - 1.day) - expect(process.show_phase?(:allegations)).to be true - end - - it "checks draft publication phase" do - # future - process.update_attributes(draft_publication_date: Date.current + 2.days) - expect(process.show_phase?(:draft_publication)).to be false - - # past - process.update_attributes(draft_publication_date: Date.current - 2.days) - expect(process.show_phase?(:draft_publication)).to be true - - # starts today - process.update_attributes(draft_publication_date: Date.current) - expect(process.show_phase?(:draft_publication)).to be true - end - - it "checks final version publication phase" do - # future - process.update_attributes(result_publication_date: Date.current + 2.days) - expect(process.show_phase?(:result_publication)).to be false - - # past - process.update_attributes(result_publication_date: Date.current - 2.days) - expect(process.show_phase?(:result_publication)).to be true - - # starts today - process.update_attributes(result_publication_date: Date.current) - expect(process.show_phase?(:result_publication)).to be true - end - end - describe "#status" do it "should detect planned phase" do process.update_attributes(start_date: Date.current + 2.days) From 2018fc0b7d954478f670b06b4f662f7713849d98 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 21:27:59 +0200 Subject: [PATCH 10/11] Fix Legislation Process Controller to correctly set both @phase and @process --- .../legislation/processes_controller.rb | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/app/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index b9a6e65fa..21951fa6f 100644 --- a/app/controllers/legislation/processes_controller.rb +++ b/app/controllers/legislation/processes_controller.rb @@ -8,17 +8,20 @@ class Legislation::ProcessesController < Legislation::BaseController end def show - if process.allegations_phase.enabled? && process.allegations_phase.started? && draft_version = process.draft_versions.published.last - redirect_to legislation_process_draft_version_path(process, draft_version) - elsif process.debate_phase.enabled? - redirect_to legislation_process_debate_path(process) + if @process.allegations_phase.enabled? && @process.allegations_phase.started? && draft_version = @process.draft_versions.published.last + redirect_to legislation_process_draft_version_path(@process, draft_version) + elsif @process.debate_phase.enabled? + redirect_to legislation_process_debate_path(@process) else - redirect_to legislation_process_allegations_path(process) + redirect_to legislation_process_allegations_path(@process) end end def debate - if process.debate_phase.started? + set_process + @phase = :debate_phase + + if @process.debate_phase.started? render :debate else render :phase_not_open @@ -26,9 +29,12 @@ class Legislation::ProcessesController < Legislation::BaseController end def draft_publication - if process.draft_publication.started? - if draft_version = process.draft_versions.published.last - redirect_to legislation_process_draft_version_path(process, draft_version) + set_process + @phase = :draft_publication + + if @process.draft_publication.started? + if draft_version = @process.draft_versions.published.last + redirect_to legislation_process_draft_version_path(@process, draft_version) else render :phase_empty end @@ -38,9 +44,12 @@ class Legislation::ProcessesController < Legislation::BaseController end def allegations - if process.allegations_phase.started? - if draft_version = process.draft_versions.published.last - redirect_to legislation_process_draft_version_path(process, draft_version) + set_process + @phase = :allegations_phase + + if @process.allegations_phase.started? + if draft_version = @process.draft_versions.published.last + redirect_to legislation_process_draft_version_path(@process, draft_version) else render :phase_empty end @@ -50,9 +59,12 @@ class Legislation::ProcessesController < Legislation::BaseController end def result_publication - if process.result_publication.started? - if final_version = process.final_draft_version - redirect_to legislation_process_draft_version_path(process, final_version) + set_process + @phase = :result_publication + + if @process.result_publication.started? + if final_version = @process.final_draft_version + redirect_to legislation_process_draft_version_path(@process, final_version) else render :phase_empty end @@ -63,7 +75,7 @@ class Legislation::ProcessesController < Legislation::BaseController private - def process - @process ||= ::Legislation::Process.find(params[:process_id]) + def set_process + @process = ::Legislation::Process.find(params[:process_id]) end end From 004c128b6c5ed89bfc10d22871bddbf5e5aa2ac4 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 13 Jun 2017 21:28:22 +0200 Subject: [PATCH 11/11] Fix phase name symbol on legislation process key_dates view --- app/views/legislation/processes/_key_dates.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/legislation/processes/_key_dates.html.erb b/app/views/legislation/processes/_key_dates.html.erb index 5e4d37ccf..d6131034b 100644 --- a/app/views/legislation/processes/_key_dates.html.erb +++ b/app/views/legislation/processes/_key_dates.html.erb @@ -8,7 +8,7 @@
        <% if process.debate_phase.enabled? %> -
      • > +
      • > <%= link_to legislation_process_debate_path(process) do %>

        <%= t('legislation.processes.shared.debate_dates') %>

        <%= format_date(process.debate_start_date) %> - <%= format_date(process.debate_end_date) %>

        @@ -26,7 +26,7 @@ <% end %> <% if process.allegations_phase.enabled? %> -
      • > +
      • > <%= link_to legislation_process_allegations_path(process) do %>

        <%= t('legislation.processes.shared.allegations_dates') %>

        <%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %>