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? %>
<% 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? %>
<%= t("legislation.questions.participation.debate_phase_not_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)
- <% if process.active_phase?(:debate) %> -- >
+ <% if process.debate_phase.enabled? %>
+
- >
<%= link_to legislation_process_debate_path(process) do %>
<% end %>
- <% if process.active_phase?(:draft_publication) %>
+ <% if process.draft_publication.enabled? %>
- >
<%= link_to legislation_process_draft_publication_path(process) do %>
<% end %>
- <% if process.active_phase?(:allegations) %>
- - >
+ <% if process.allegations_phase.enabled? %>
+
- >
<%= link_to legislation_process_allegations_path(process) do %>
<% end %>
- <% if process.active_phase?(:final_version_publication) %>
- - >
- <%= link_to legislation_process_final_version_publication_path(process) do %>
-
- >
+ <%= link_to legislation_process_result_publication_path(process) do %>
+
<% 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 @@
<%= t('legislation.processes.shared.debate_dates') %>
<%= format_date(process.debate_start_date) %> - <%= format_date(process.debate_end_date) %>
@@ -16,7 +16,7 @@<%= t('legislation.processes.shared.draft_publication_date') %>
@@ -25,8 +25,8 @@<%= t('legislation.processes.shared.allegations_dates') %>
<%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %>
@@ -34,11 +34,11 @@<%= t('legislation.processes.shared.final_publication_date') %>
-<%= format_date(process.final_publication_date) %>
+ <% if process.result_publication.enabled? %> +<%= t('legislation.processes.shared.result_publication_date') %>
+<%= format_date(process.result_publication_date) %>
<% end %><%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %>