From 760efcdad3d695f752b79e586dca69b345146546 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Tue, 27 Jun 2017 14:22:43 +0200 Subject: [PATCH] Add hidden_at on procedure --- app/models/procedure.rb | 5 +++++ ...170627120928_add_hidden_at_to_procedures.rb | 6 ++++++ db/schema.rb | 4 +++- spec/models/procedure_spec.rb | 18 ++++++++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20170627120928_add_hidden_at_to_procedures.rb diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 8b6481708..202a37f97 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -31,12 +31,17 @@ class Procedure < ActiveRecord::Base mount_uploader :logo, ProcedureLogoUploader + default_scope { where(hidden_at: nil) } scope :not_archived, -> { where(archived: false) } scope :by_libelle, -> { order(libelle: :asc) } validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :description, presence: true, allow_blank: false, allow_nil: false + def hide! + self.update_attributes(hidden_at: DateTime.now) + end + def path procedure_path.path unless procedure_path.nil? end diff --git a/db/migrate/20170627120928_add_hidden_at_to_procedures.rb b/db/migrate/20170627120928_add_hidden_at_to_procedures.rb new file mode 100644 index 000000000..a0c109597 --- /dev/null +++ b/db/migrate/20170627120928_add_hidden_at_to_procedures.rb @@ -0,0 +1,6 @@ +class AddHiddenAtToProcedures < ActiveRecord::Migration[5.0] + def change + add_column :procedures, :hidden_at, :datetime + add_index :procedures, :hidden_at + end +end diff --git a/db/schema.rb b/db/schema.rb index ad99eb400..42baae83d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -381,7 +381,9 @@ ActiveRecord::Schema.define(version: 20170627143701) do t.string "lien_notice" t.boolean "for_individual", default: false t.boolean "individual_with_siret", default: false - t.datetime "auto_archive_on" + t.date "auto_archive_on" + t.datetime "hidden_at" + t.index ["hidden_at"], name: "index_procedures_on_hidden_at", using: :btree t.datetime "published_at" t.datetime "archived_at" end diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 9de535d08..fa0f82a95 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -302,4 +302,22 @@ describe Procedure do it { is_expected.to eq('a-long-libelle-with-accents-blabla-coucou-hello-un') } end + + describe ".default_scope" do + let!(:procedure) { create(:procedure, hidden_at: hidden_at) } + + context "when hidden_at is nil" do + let(:hidden_at) { nil } + + it { expect(Procedure.count).to eq(1) } + it { expect(Procedure.all).to include(procedure) } + end + + context "when hidden_at is not nil" do + let(:hidden_at) { 2.days.ago } + + it { expect(Procedure.count).to eq(0) } + it { expect { Procedure.find(procedure.id) }.to raise_error(ActiveRecord::RecordNotFound) } + end + end end