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/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/controllers/legislation/processes_controller.rb b/app/controllers/legislation/processes_controller.rb index 7aff709d0..21951fa6f 100644 --- a/app/controllers/legislation/processes_controller.rb +++ b/app/controllers/legislation/processes_controller.rb @@ -8,9 +8,9 @@ class Legislation::ProcessesController < Legislation::BaseController end def show - if @process.active_phase?(:allegations) && @process.show_phase?(:allegations) && draft_version = @process.draft_versions.published.last + 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.active_phase?(:debate) + elsif @process.debate_phase.enabled? redirect_to legislation_process_debate_path(@process) else redirect_to legislation_process_allegations_path(@process) @@ -18,9 +18,10 @@ class Legislation::ProcessesController < Legislation::BaseController end def debate - phase :debate + set_process + @phase = :debate_phase - if @process.show_phase?(:debate) + if @process.debate_phase.started? render :debate else render :phase_not_open @@ -28,9 +29,10 @@ class Legislation::ProcessesController < Legislation::BaseController end def draft_publication - phase :draft_publication + set_process + @phase = :draft_publication - if @process.show_phase?(@phase) + if @process.draft_publication.started? if draft_version = @process.draft_versions.published.last redirect_to legislation_process_draft_version_path(@process, draft_version) else @@ -42,9 +44,10 @@ class Legislation::ProcessesController < Legislation::BaseController end def allegations - phase :allegations + set_process + @phase = :allegations_phase - if @process.show_phase?(@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 @@ -55,10 +58,11 @@ class Legislation::ProcessesController < Legislation::BaseController end end - def final_version_publication - phase :final_version_publication + def result_publication + set_process + @phase = :result_publication - if @process.show_phase?(@phase) + if @process.result_publication.started? if final_version = @process.final_draft_version redirect_to legislation_process_draft_version_path(@process, final_version) else @@ -71,8 +75,7 @@ class Legislation::ProcessesController < Legislation::BaseController private - def phase(phase) + def set_process @process = ::Legislation::Process.find(params[:process_id]) - @phase = phase end end 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..d7ad6cf62 100644 --- a/app/models/legislation/process.rb +++ b/app/models/legislation/process.rb @@ -19,48 +19,20 @@ 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 :final_version_publication - active_phase?(:final_version_publication) && today >= final_publication_date - end + def debate_phase + Legislation::Process::Phase.new(debate_start_date, debate_end_date) 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 :final_version_publication - active_phase?(:final_version_publication) && today >= final_publication_date - end + def allegations_phase + Legislation::Process::Phase.new(allegations_start_date, allegations_end_date) 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 :final_version_publication - final_publication_date.present? - 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 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 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/admin/legislation/processes/_form.html.erb b/app/views/admin/legislation/processes/_form.html.erb index ac49f8a7d..8233d5f14 100644 --- a/app/views/admin/legislation/processes/_form.html.erb +++ b/app/views/admin/legislation/processes/_form.html.erb @@ -70,7 +70,7 @@ id: "debate_end_date" %>
- <%= check_box_tag :debate_phase_active, @process.active_phase?(:debate), @process.new_record? || @process.active_phase?(:debate), data: {disable_date: "debate"} %> + <%= check_box_tag :debate_phase_active, @process.debate_phase.enabled?, @process.new_record? || @process.debate_phase.enabled?, data: {disable_date: "debate"} %> <%= label_tag :debate_phase_active, t('admin.legislation.processes.form.active') %>
@@ -104,7 +104,7 @@ id: "allegations_end_date" %>
- <%= 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') %>
@@ -135,18 +135,18 @@
- <%= 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"} %> - <%= label_tag :final_version_publication_phase_active, t('admin.legislation.processes.form.active') %> + <%= 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/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) %>
diff --git a/app/views/legislation/questions/_answer_form.html.erb b/app/views/legislation/questions/_answer_form.html.erb index 775e93faa..fd379b845 100644 --- a/app/views/legislation/questions/_answer_form.html.erb +++ b/app/views/legislation/questions/_answer_form.html.erb @@ -1,5 +1,5 @@ <% if question.question_options.any? %> - <% if process.open_phase?(:debate) && !answer.persisted? %> + <% if process.debate_phase.open? && !answer.persisted? %> <%= form_for answer, url: legislation_process_question_answers_path(process, question, answer), remote: true , html: { class: "controls-stacked"} do |f| %> <% question.question_options.each do |question_option| %> diff --git a/app/views/legislation/questions/_participation_not_allowed.html.erb b/app/views/legislation/questions/_participation_not_allowed.html.erb index b186c2f5b..463c4558b 100644 --- a/app/views/legislation/questions/_participation_not_allowed.html.erb +++ b/app/views/legislation/questions/_participation_not_allowed.html.erb @@ -17,7 +17,7 @@ signin: link_to(t("legislation.questions.participation.signin"), new_user_session_path), signup: link_to(t("legislation.questions.participation.signup"), new_user_registration_path)).html_safe %>
-<% elsif !@process.open_phase?(:debate) %> +<% elsif !@process.debate_phase.open? %> 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/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/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..3ed4ccb74 100644 --- a/spec/features/legislation/processes_spec.rb +++ b/spec/features/legislation/processes_spec.rb @@ -104,17 +104,17 @@ 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) + visit legislation_process_result_publication_path(process) expect(page).to have_content("This phase is not open yet") 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) + visit legislation_process_result_publication_path(process) expect(page).to have_content("Nothing published yet") end 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 diff --git a/spec/models/legislation/process_spec.rb b/spec/models/legislation/process_spec.rb index f89a4bfcf..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(final_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) - expect(process.open_phase?(:final_version_publication)).to be true - - # starts today - process.update_attributes(final_publication_date: Date.current) - expect(process.open_phase?(:final_version_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(final_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) - expect(process.show_phase?(:final_version_publication)).to be true - - # starts today - process.update_attributes(final_publication_date: Date.current) - expect(process.show_phase?(:final_version_publication)).to be true - end - end - describe "#status" do it "should detect planned phase" do process.update_attributes(start_date: Date.current + 2.days)