Merge pull request #1649 from consul/refactor/legislative_process_phases_and_publications

Refactor legislative process phases and publications
This commit is contained in:
Raimond Garcia
2017-06-14 11:39:15 +02:00
committed by GitHub
32 changed files with 306 additions and 236 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -37,6 +37,6 @@ class Legislation::Question < ActiveRecord::Base
end
def comments_open?
process.open_phase?(:debate)
process.debate_phase.open?
end
end

View File

@@ -70,7 +70,7 @@
id: "debate_end_date" %>
</div>
<div class="small-12 medium-2 column">
<%= 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') %>
</div>
@@ -104,7 +104,7 @@
id: "allegations_end_date" %>
</div>
<div class="small-12 medium-2 column">
<%= 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') %>
</div>
@@ -125,7 +125,7 @@
id: "draft_publication_date" %>
</div>
<div class="small-12 medium-2 column">
<%= 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') %>
</div>
<div class="small-12 column">
@@ -135,18 +135,18 @@
<div class="row">
<div class="small-12 medium-4 column">
<%= f.label :final_publication_date %>
<%= f.label :result_publication_date %>
</div>
<div class="small-12 medium-2 column end">
<%= 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" %>
</div>
<div class="small-12 medium-2 column">
<%= 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') %>
</div>
<div class="small-12 column">
<hr>

View File

@@ -15,12 +15,12 @@
<% end %>
<% end %>
<% if @process.open_phase?(:allegations) %>
<% if @process.allegations_phase.open? %>
<a class="button publish-comment" href="#"><strong><%= t('legislation.annotations.comments.publish_comment') %></strong></a>
&nbsp;
<% end %>
<% if @process.open_phase?(:allegations) %>
<% if @process.allegations_phase.open? %>
<% if user_signed_in? %>
<% css_id = parent_or_commentable_dom_id(nil, annotation) %>
<div id="js-comment-form-annotation-<%= annotation.id %>" style="display:none" class="comment-form js-comment-form-annotation">

View File

@@ -6,7 +6,7 @@
<div class="comments-wrapper">
<div class="comment-input">
<% if !@process.open_phase?(:allegations) %>
<% if !@process.allegations_phase.open? %>
<div data-alert class="callout primary">
<%= t("legislation.annotations.form.phase_not_open") %>
</div>

View File

@@ -60,7 +60,7 @@
<section class="legislation-annotatable"
data-legislation-draft-version-id="<%= @draft_version.id %>"
data-legislation-annotatable-base-url="<%= legislation_process_draft_version_path(@process, @draft_version) %>"
data-legislation-open-phase="<%= @process.open_phase?(:allegations) %>"
data-legislation-open-phase="<%= @process.allegations_phase.open? %>"
>
<% end %>
<%= @draft_version.body_html.html_safe %>

View File

@@ -7,8 +7,8 @@
</div>
<ul>
<% if process.active_phase?(:debate) %>
<li <%= "class=active" if phase == :debate %>>
<% if process.debate_phase.enabled? %>
<li <%= "class=active" if phase == :debate_phase %>>
<%= link_to legislation_process_debate_path(process) do %>
<h4><%= t('legislation.processes.shared.debate_dates') %></h4>
<p><%= format_date(process.debate_start_date) %> - <%= format_date(process.debate_end_date) %></p>
@@ -16,7 +16,7 @@
</li>
<% end %>
<% if process.active_phase?(:draft_publication) %>
<% if process.draft_publication.enabled? %>
<li <%= "class=active" if phase == :draft_publication %>>
<%= link_to legislation_process_draft_publication_path(process) do %>
<h4><%= t('legislation.processes.shared.draft_publication_date') %></h4>
@@ -25,8 +25,8 @@
</li>
<% end %>
<% if process.active_phase?(:allegations) %>
<li <%= "class=active" if phase == :allegations %>>
<% if process.allegations_phase.enabled? %>
<li <%= "class=active" if phase == :allegations_phase %>>
<%= link_to legislation_process_allegations_path(process) do %>
<h4><%= t('legislation.processes.shared.allegations_dates') %></h4>
<p><%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %></p>
@@ -34,11 +34,11 @@
</li>
<% end %>
<% if process.active_phase?(:final_version_publication) %>
<li <%= "class=active" if phase == :final_version_publication %>>
<%= link_to legislation_process_final_version_publication_path(process) do %>
<h4><%= t('legislation.processes.shared.final_publication_date') %></h4>
<p><%= format_date(process.final_publication_date) %></p>
<% if process.result_publication.enabled? %>
<li <%= "class=active" if phase == :result_publication %>>
<%= link_to legislation_process_result_publication_path(process) do %>
<h4><%= t('legislation.processes.shared.result_publication_date') %></h4>
<p><%= format_date(process.result_publication_date) %></p>
<% end %>
</li>
<% end %>

View File

@@ -37,8 +37,8 @@
<p><%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %></p>
</div>
<div class="small-6 medium-3 column">
<h5><%= t('legislation.processes.shared.final_publication_date') %></h5>
<p><%= format_date(process.final_publication_date) %></p>
<h5><%= t('legislation.processes.shared.result_publication_date') %></h5>
<p><%= format_date(process.result_publication_date) %></p>
</div>
</div>
</div>

View File

@@ -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| %>

View File

@@ -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 %>
</div>
<% elsif !@process.open_phase?(:debate) %>
<% elsif !@process.debate_phase.open? %>
<div class="participation-not-allowed" style='display:none' aria-hidden="false">
<%= t("legislation.questions.participation.debate_phase_not_open") %>
</div>

View File

@@ -71,10 +71,10 @@
</div>
<div class="small-12 medium-4 column">
<label for="legislation_process_final_publication_date">Publicación de resultados</label>
<label for="legislation_process_result_publication_date">Publicación de resultados</label>
</div>
<div class="small-12 medium-2 column end">
<input class="js-calendar-full" id="final_publication_date" type="text" value="2016-12-30" name="legislation_process[final_publication_date]" />
<input class="js-calendar-full" id="result_publication_date" type="text" value="2016-12-30" name="legislation_process[result_publication_date]" />
</div>
</div>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,5 @@
class RenameLegislationProcessFinalPubToResultPub < ActiveRecord::Migration
def change
rename_column :legislation_processes, :final_publication_date, :result_publication_date
end
end

View File

@@ -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|

View File

@@ -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

View File

@@ -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'

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)