diff --git a/app/controllers/admin/legislation/processes_controller.rb b/app/controllers/admin/legislation/processes_controller.rb
index 2c352a2db..995e34eee 100644
--- a/app/controllers/admin/legislation/processes_controller.rb
+++ b/app/controllers/admin/legislation/processes_controller.rb
@@ -45,7 +45,11 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
:draft_publication_date,
:allegations_start_date,
:allegations_end_date,
- :result_publication_date
+ :result_publication_date,
+ :debate_phase_enabled,
+ :allegations_phase_enabled,
+ :draft_publication_enabled,
+ :result_publication_enabled
)
end
end
diff --git a/app/models/legislation/process.rb b/app/models/legislation/process.rb
index d7ad6cf62..61dc1f7a0 100644
--- a/app/models/legislation/process.rb
+++ b/app/models/legislation/process.rb
@@ -2,6 +2,8 @@ class Legislation::Process < ActiveRecord::Base
acts_as_paranoid column: :hidden_at
include ActsAsParanoidAliases
+ PHASES_AND_PUBLICATIONS = %i(debate_phase allegations_phase draft_publication result_publication).freeze
+
has_many :draft_versions, -> { order(:id) }, class_name: 'Legislation::DraftVersion', foreign_key: 'legislation_process_id', dependent: :destroy
has_one :final_draft_version, -> { where final_version: true, status: 'published' }, class_name: 'Legislation::DraftVersion', foreign_key: 'legislation_process_id'
has_many :questions, -> { order(:id) }, class_name: 'Legislation::Question', foreign_key: 'legislation_process_id', dependent: :destroy
@@ -20,19 +22,23 @@ class Legislation::Process < ActiveRecord::Base
scope :past, -> { where("end_date < ?", Date.current).order('id DESC') }
def debate_phase
- Legislation::Process::Phase.new(debate_start_date, debate_end_date)
+ Legislation::Process::Phase.new(debate_start_date, debate_end_date, debate_phase_enabled)
end
def allegations_phase
- Legislation::Process::Phase.new(allegations_start_date, allegations_end_date)
+ Legislation::Process::Phase.new(allegations_start_date, allegations_end_date, allegations_phase_enabled)
end
def draft_publication
- Legislation::Process::Publication.new(draft_publication_date)
+ Legislation::Process::Publication.new(draft_publication_date, draft_publication_enabled)
end
def result_publication
- Legislation::Process::Publication.new(result_publication_date)
+ Legislation::Process::Publication.new(result_publication_date, result_publication_enabled)
+ end
+
+ def enabled_phases_and_publications_count
+ PHASES_AND_PUBLICATIONS.count { |process| send(process).enabled? }
end
def total_comments
diff --git a/app/models/legislation/process/phase.rb b/app/models/legislation/process/phase.rb
index 1b8482a9a..5d677251d 100644
--- a/app/models/legislation/process/phase.rb
+++ b/app/models/legislation/process/phase.rb
@@ -2,13 +2,14 @@
class Legislation::Process::Phase
- def initialize(start_date, end_date)
+ def initialize(start_date, end_date, enabled)
@start_date = start_date
@end_date = end_date
+ @enabled = enabled
end
def enabled?
- @start_date.present? && @end_date.present?
+ @enabled
end
def started?
diff --git a/app/models/legislation/process/publication.rb b/app/models/legislation/process/publication.rb
index 10110f0e7..650914f95 100644
--- a/app/models/legislation/process/publication.rb
+++ b/app/models/legislation/process/publication.rb
@@ -2,12 +2,13 @@
class Legislation::Process::Publication
- def initialize(publication_date)
+ def initialize(publication_date, enabled)
@publication_date = publication_date
+ @enabled = enabled
end
def enabled?
- @publication_date.present?
+ @enabled
end
def started?
diff --git a/app/views/admin/legislation/processes/_form.html.erb b/app/views/admin/legislation/processes/_form.html.erb
index 8233d5f14..7d2b21703 100644
--- a/app/views/admin/legislation/processes/_form.html.erb
+++ b/app/views/admin/legislation/processes/_form.html.erb
@@ -70,8 +70,7 @@
id: "debate_end_date" %>
- <%= 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') %>
+ <%= f.check_box :debate_phase_enabled, checked: @process.debate_phase.enabled?, label: t('admin.legislation.processes.form.enabled') %>
@@ -104,8 +103,7 @@
id: "allegations_end_date" %>
- <%= 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') %>
+ <%= f.check_box :allegations_phase_enabled, checked: @process.allegations_phase.enabled?, label: t('admin.legislation.processes.form.enabled') %>
@@ -125,8 +123,7 @@
id: "draft_publication_date" %>
- <%= 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') %>
+ <%= f.check_box :draft_publication_enabled, checked: @process.draft_publication.enabled?, label: t('admin.legislation.processes.form.enabled') %>
@@ -145,8 +142,7 @@
id: "result_publication_date" %>
- <%= 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') %>
+ <%= f.check_box :result_publication_enabled, checked: @process.result_publication.enabled?, label: t('admin.legislation.processes.form.enabled') %>
diff --git a/app/views/legislation/processes/_process.html.erb b/app/views/legislation/processes/_process.html.erb
index a0a2d2e37..d5e44076a 100644
--- a/app/views/legislation/processes/_process.html.erb
+++ b/app/views/legislation/processes/_process.html.erb
@@ -17,28 +17,42 @@
-
-
-
<%= t('legislation.processes.shared.key_dates') %>
+ <% if process.enabled_phases_and_publications_count.positive? %>
+ <% column_width = 12 / process.enabled_phases_and_publications_count %>
+
+
+
<%= t('legislation.processes.shared.key_dates') %>
+
-
-
-
-
<%= t('legislation.processes.shared.debate_dates') %>
-
<%= format_date(process.debate_start_date) %> - <%= format_date(process.debate_end_date) %>
+
+ <% if process.debate_phase.enabled? %>
+
+
<%= t('legislation.processes.shared.debate_dates') %>
+
<%= format_date(process.debate_start_date) %> - <%= format_date(process.debate_end_date) %>
+
+ <% end %>
+
+ <% if process.draft_publication.enabled? %>
+
+
<%= t('legislation.processes.shared.draft_publication_date') %>
+
<%= format_date(process.draft_publication_date) %>
+
+ <% end %>
+
+ <% if process.allegations_phase.enabled? %>
+
+
<%= t('legislation.processes.shared.allegations_dates') %>
+
<%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %>
+
+ <% end %>
+
+ <% if process.result_publication.enabled? %>
+
+
<%= t('legislation.processes.shared.result_publication_date') %>
+
<%= format_date(process.result_publication_date) %>
+
+ <% end %>
-
-
<%= t('legislation.processes.shared.draft_publication_date') %>
-
<%= format_date(process.draft_publication_date) %>
-
-
-
<%= t('legislation.processes.shared.allegations_dates') %>
-
<%= format_date(process.allegations_start_date) %> - <%= format_date(process.allegations_end_date) %>
-
-
-
<%= t('legislation.processes.shared.result_publication_date') %>
-
<%= format_date(process.result_publication_date) %>
-
-
+ <% end %>
diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml
index 15e0d2ed7..1ba256dfe 100755
--- a/config/locales/admin.en.yml
+++ b/config/locales/admin.en.yml
@@ -211,7 +211,7 @@ en:
form:
error: Error
form:
- active: Active
+ enabled: Enabled
process: Process
debate_phase: Debate phase
allegations_phase: Allegations phase
diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml
index bee867531..1cd133da4 100644
--- a/config/locales/admin.es.yml
+++ b/config/locales/admin.es.yml
@@ -211,7 +211,7 @@ es:
form:
error: Error
form:
- active: Activa
+ enabled: Habilitado
process: Proceso
debate_phase: Fase previa
allegations_phase: Fase de alegaciones
diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb
index d828262bf..2ac996f44 100644
--- a/db/dev_seeds.rb
+++ b/db/dev_seeds.rb
@@ -643,7 +643,11 @@ 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,
- result_publication_date: Date.current + 4.days
+ result_publication_date: Date.current + 4.days,
+ debate_phase_enabled: true,
+ allegations_phase_enabled: true,
+ draft_publication_enabled: true,
+ result_publication_enabled: true
)
end
diff --git a/db/migrate/20170613203256_add_phase_pub_enabled_status_to_legislative_process.rb b/db/migrate/20170613203256_add_phase_pub_enabled_status_to_legislative_process.rb
new file mode 100644
index 000000000..7e6ecda96
--- /dev/null
+++ b/db/migrate/20170613203256_add_phase_pub_enabled_status_to_legislative_process.rb
@@ -0,0 +1,8 @@
+class AddPhasePubEnabledStatusToLegislativeProcess < ActiveRecord::Migration
+ def change
+ add_column :legislation_processes, :debate_phase_enabled, :boolean, default: false
+ add_column :legislation_processes, :allegations_phase_enabled, :boolean, default: false
+ add_column :legislation_processes, :draft_publication_enabled, :boolean, default: false
+ add_column :legislation_processes, :result_publication_enabled, :boolean, default: false
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 39c9d97a5..1062b3f91 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: 20170613174317) do
+ActiveRecord::Schema.define(version: 20170613203256) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -417,6 +417,10 @@ ActiveRecord::Schema.define(version: 20170613174317) do
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.text "summary"
+ t.boolean "debate_phase_enabled", default: false
+ t.boolean "allegations_phase_enabled", default: false
+ t.boolean "draft_publication_enabled", default: false
+ t.boolean "result_publication_enabled", default: false
end
add_index "legislation_processes", ["allegations_end_date"], name: "index_legislation_processes_on_allegations_end_date", using: :btree
diff --git a/spec/factories.rb b/spec/factories.rb
index cc39af5d7..c63792dce 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -612,6 +612,10 @@ FactoryGirl.define do
allegations_start_date Date.current
allegations_end_date Date.current + 3.days
result_publication_date Date.current + 5.days
+ debate_phase_enabled true
+ allegations_phase_enabled true
+ draft_publication_enabled true
+ result_publication_enabled true
trait :next do
start_date Date.current + 2.days
diff --git a/spec/features/admin/legislation/processes_spec.rb b/spec/features/admin/legislation/processes_spec.rb
index 2c8de0d95..e945f6ce8 100644
--- a/spec/features/admin/legislation/processes_spec.rb
+++ b/spec/features/admin/legislation/processes_spec.rb
@@ -73,7 +73,7 @@ feature 'Admin legislation processes' do
end
context 'Update' do
- scenario 'Deactivate debate phase', js: true do
+ scenario 'Remove summary text', js: true do
process = create(:legislation_process,
title: 'An example legislation process',
summary: 'Summarizing the process',
@@ -87,19 +87,43 @@ feature 'Admin legislation processes' do
click_link "An example legislation process"
expect(page).to have_selector("h2", text: "An example legislation process")
- expect(find("#debate_phase_active")).to be_checked
+ expect(find("#legislation_process_debate_phase_enabled")).to be_checked
- uncheck "debate_phase_active"
fill_in 'legislation_process_summary', with: ''
click_button "Save changes"
expect(page).to have_content "Process updated successfully"
- expect(find("#debate_start_date").value).to be_blank
- expect(find("#debate_end_date").value).to be_blank
visit legislation_processes_path
expect(page).not_to have_content 'Summarizing the process'
expect(page).to have_content 'Description of the process'
end
+
+ scenario 'Deactivate draft publication', js: true do
+ process = create(:legislation_process,
+ title: 'An example legislation process',
+ summary: 'Summarizing the process',
+ description: 'Description of the process')
+ visit admin_root_path
+
+ within('#side_menu') do
+ click_link "Collaborative Legislation"
+ end
+
+ click_link "An example legislation process"
+
+ expect(find("#legislation_process_draft_publication_enabled")).to be_checked
+
+ uncheck "legislation_process_draft_publication_enabled"
+ click_button "Save changes"
+
+ expect(page).to have_content "Process updated successfully"
+ expect(find("#debate_start_date").value).not_to be_blank
+ expect(find("#debate_end_date").value).not_to be_blank
+
+ click_link 'Click to visit'
+
+ expect(page).not_to have_content 'Draft publication'
+ end
end
end
diff --git a/spec/models/legislation/process/phase_spec.rb b/spec/models/legislation/process/phase_spec.rb
index a92b36f78..40d6296b2 100644
--- a/spec/models/legislation/process/phase_spec.rb
+++ b/spec/models/legislation/process/phase_spec.rb
@@ -7,14 +7,14 @@ RSpec.describe Legislation::Process::Phase, type: :model 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)
+ process.update_attributes(debate_phase_enabled: false)
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)
+ process.update_attributes(allegations_phase_enabled: false)
expect(process.allegations_phase.enabled?).to be false
end
end
diff --git a/spec/models/legislation/process/publication_spec.rb b/spec/models/legislation/process/publication_spec.rb
index 4731d14b2..a489568d4 100644
--- a/spec/models/legislation/process/publication_spec.rb
+++ b/spec/models/legislation/process/publication_spec.rb
@@ -7,14 +7,14 @@ RSpec.describe Legislation::Process::Publication, type: :model do
it "checks draft publication" do
expect(process.draft_publication.enabled?).to be true
- process.update_attributes(draft_publication_date: nil)
+ process.update_attributes(draft_publication_enabled: false)
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)
+ process.update_attributes(result_publication_enabled: false)
expect(process.result_publication.enabled?).to be false
end
end