Administrateur can be define private champs => same as typical champs
This commit is contained in:
parent
26b5e4cb24
commit
116dd0d94f
41 changed files with 601 additions and 113 deletions
|
@ -121,7 +121,7 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
end
|
||||
end
|
||||
context 'when procedure and type de champs are not linked' do
|
||||
let(:type_de_champ) { create(:type_de_champ) }
|
||||
let(:type_de_champ) { create(:type_de_champ_public) }
|
||||
let(:type_de_champ_id) { type_de_champ.id }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
|
@ -136,20 +136,20 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
end
|
||||
context 'when procedure have only one type de champ' do
|
||||
let(:index) { 1 }
|
||||
let!(:type_de_champ) { create(:type_de_champ, procedure: procedure) }
|
||||
let!(:type_de_champ) { create(:type_de_champ_public, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have tow type de champs' do
|
||||
context 'when index == 0' do
|
||||
let(:index) { 0 }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ_public, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when index > 0' do
|
||||
let(:index) { 1 }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
|
||||
it { expect(subject.status).to eq(200) }
|
||||
it { expect(subject).to render_template('show') }
|
||||
|
@ -174,12 +174,12 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have only one type de champ' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have 2 type de champ' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
context 'when index represent last type_de_champ' do
|
||||
let(:index) { 1 }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
|
|
202
spec/controllers/admin/types_de_champ_private_controller_spec.rb
Normal file
202
spec/controllers/admin/types_de_champ_private_controller_spec.rb
Normal file
|
@ -0,0 +1,202 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Admin::TypesDeChampPrivateController, type: :controller do
|
||||
let(:admin) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: admin) }
|
||||
|
||||
before do
|
||||
sign_in admin
|
||||
end
|
||||
|
||||
describe 'GET #show' do
|
||||
let(:published) { false }
|
||||
let(:procedure) { create(:procedure, administrateur: admin, published: published) }
|
||||
let(:procedure_id) { procedure.id }
|
||||
|
||||
subject { get :show, procedure_id: procedure_id }
|
||||
|
||||
context 'when procedure is not found' do
|
||||
let(:procedure_id) { 9_999_999 }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
|
||||
context 'when procedure is published' do
|
||||
let(:published) { true }
|
||||
it { is_expected.to redirect_to admin_procedure_path id: procedure_id }
|
||||
end
|
||||
|
||||
context 'when procedure does not belong to admin' do
|
||||
let(:admin_2) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: admin_2) }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#update' do
|
||||
let(:libelle) { 'mon libelle' }
|
||||
let(:type_champ) { 'text' }
|
||||
let(:description) { 'titi' }
|
||||
let(:order_place) { '' }
|
||||
let(:types_de_champ_id) { '' }
|
||||
let(:mandatory) { 'on' }
|
||||
|
||||
let(:procedure_params) do
|
||||
{ types_de_champ_private_attributes:
|
||||
{ '0' =>
|
||||
{
|
||||
libelle: libelle,
|
||||
type_champ: type_champ,
|
||||
description: description,
|
||||
order_place: order_place,
|
||||
id: types_de_champ_id,
|
||||
mandatory: mandatory,
|
||||
type: 'TypeDeChampPrivate'
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
let(:request) { put :update, format: :js, procedure_id: procedure.id, procedure: procedure_params }
|
||||
|
||||
context 'when procedure is found' do
|
||||
it { expect{ request }.to change(TypeDeChamp, :count).by(1) }
|
||||
|
||||
describe 'created type de champ' do
|
||||
before do
|
||||
request
|
||||
procedure.reload
|
||||
end
|
||||
subject { procedure.types_de_champ_private.first }
|
||||
|
||||
it { expect(subject.libelle).to eq('mon libelle') }
|
||||
it { expect(subject.type_champ).to eq('text') }
|
||||
it { expect(subject.description).to eq('titi') }
|
||||
it { expect(subject.mandatory).to be_truthy }
|
||||
end
|
||||
|
||||
context 'when type_de_champ already exist' do
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ_private, administrateur: admin) }
|
||||
let(:type_de_champ) { procedure.types_de_champ_private.first }
|
||||
let(:types_de_champ_id) { type_de_champ.id }
|
||||
let(:libelle) { 'toto' }
|
||||
let(:type_champ) { 'text' }
|
||||
let(:description) { 'citrouille' }
|
||||
let(:order_place) { '0' }
|
||||
let(:mandatory) { 'on' }
|
||||
before do
|
||||
request
|
||||
procedure.reload
|
||||
end
|
||||
subject { procedure.types_de_champ_private.first }
|
||||
it { expect(subject.libelle).to eq('toto') }
|
||||
it { expect(subject.type_champ).to eq('text') }
|
||||
it { expect(subject.description).to eq('citrouille') }
|
||||
it { expect(subject.order_place).to eq(0) }
|
||||
it { expect(subject.order_place).to be_truthy }
|
||||
end
|
||||
end
|
||||
context 'when procedure is not found' do
|
||||
subject { put :update, format: :js, procedure_id: 9_999_999, procedure: procedure_params }
|
||||
it 'creates type de champ' do
|
||||
expect(subject.status).to eq(404)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#destroy' do
|
||||
before do
|
||||
delete :destroy, procedure_id: procedure.id, id: type_de_champ_id, format: :js
|
||||
end
|
||||
|
||||
context 'when type de champs does not exist' do
|
||||
let(:type_de_champ_id) { 99999999 }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
context 'when types_de_champ exists' do
|
||||
let(:procedure) { create(:procedure, :with_type_de_champ_private, administrateur: admin) }
|
||||
let(:type_de_champ_id) { procedure.types_de_champ_private.first.id }
|
||||
it { expect(subject.status).to eq(200) }
|
||||
it 'destroy type de champ' do
|
||||
procedure.reload
|
||||
expect(procedure.types_de_champ.count).to eq(0)
|
||||
end
|
||||
end
|
||||
context 'when procedure and type de champs are not linked' do
|
||||
let(:type_de_champ) { create(:type_de_champ_public) }
|
||||
let(:type_de_champ_id) { type_de_champ.id }
|
||||
it { expect(subject.status).to eq(404) }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #move_up' do
|
||||
subject { post :move_up, procedure_id: procedure.id, index: index, format: :js }
|
||||
|
||||
context 'when procedure have no type de champ' do
|
||||
let(:index) { 0 }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have only one type de champ' do
|
||||
let(:index) { 1 }
|
||||
let!(:type_de_champ) { create(:type_de_champ_private, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have tow type de champs' do
|
||||
context 'when index == 0' do
|
||||
let(:index) { 0 }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ_private, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when index > 0' do
|
||||
let(:index) { 1 }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) }
|
||||
|
||||
it { expect(subject.status).to eq(200) }
|
||||
it { expect(subject).to render_template('show') }
|
||||
it 'changes order places' do
|
||||
post :move_up, procedure_id: procedure.id, index: index, format: :js
|
||||
type_de_champ_0.reload
|
||||
type_de_champ_1.reload
|
||||
expect(type_de_champ_0.order_place).to eq(1)
|
||||
expect(type_de_champ_1.order_place).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #move_down' do
|
||||
let(:request) { post :move_down, procedure_id: procedure.id, index: index, format: :js }
|
||||
let(:index) { 0 }
|
||||
|
||||
subject { request }
|
||||
|
||||
context 'when procedure have no type de champ' do
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have only one type de champ' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure) }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when procedure have 2 type de champ' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) }
|
||||
context 'when index represent last type_de_champ' do
|
||||
let(:index) { 1 }
|
||||
it { expect(subject.status).to eq(400) }
|
||||
end
|
||||
context 'when index does not represent last type_de_champ' do
|
||||
let(:index) { 0 }
|
||||
it { expect(subject.status).to eq(200) }
|
||||
it { expect(subject).to render_template('show') }
|
||||
it 'changes order place' do
|
||||
request
|
||||
type_de_champ_0.reload
|
||||
type_de_champ_1.reload
|
||||
expect(type_de_champ_0.order_place).to eq(1)
|
||||
expect(type_de_champ_1.order_place).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -230,7 +230,7 @@ describe API::V1::DossiersController do
|
|||
it { expect(subject[:libelle]).to eq('Description') }
|
||||
it { expect(subject[:description]).to eq('description de votre projet') }
|
||||
it { expect(subject.keys.include?(:order_place)).to be_truthy }
|
||||
it { expect(subject[:type]).to eq('text') }
|
||||
it { expect(subject[:type_champ]).to eq('text') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,9 +5,9 @@ describe TypeDeChampDecorator do
|
|||
let(:procedure) { create(:procedure) }
|
||||
let(:url) { 'http://localhost' }
|
||||
let(:params) { { url: url, index: index } }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure, order_place: 2) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ_public, procedure: procedure, order_place: 2) }
|
||||
|
||||
describe '#button_up' do
|
||||
|
||||
|
|
|
@ -24,15 +24,23 @@ FactoryGirl.define do
|
|||
|
||||
trait :with_type_de_champ do
|
||||
after(:build) do |procedure, _evaluator|
|
||||
type_de_champ = create(:type_de_champ)
|
||||
type_de_champ = create(:type_de_champ_public)
|
||||
|
||||
procedure.types_de_champ << type_de_champ
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_type_de_champ_private do
|
||||
after(:build) do |procedure, _evaluator|
|
||||
type_de_champ = create(:type_de_champ_private)
|
||||
|
||||
procedure.types_de_champ_private << type_de_champ
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_type_de_champ_mandatory do
|
||||
after(:build) do |procedure, _evaluator|
|
||||
type_de_champ = create(:type_de_champ, mandatory: true)
|
||||
type_de_champ = create(:type_de_champ_public, mandatory: true)
|
||||
|
||||
procedure.types_de_champ << type_de_champ
|
||||
end
|
||||
|
@ -40,7 +48,7 @@ FactoryGirl.define do
|
|||
|
||||
trait :with_datetime do
|
||||
after(:build) do |procedure, _evaluator|
|
||||
type_de_champ = create(:type_de_champ, mandatory: true, type_champ: :datetime)
|
||||
type_de_champ = create(:type_de_champ_public, mandatory: true, type_champ: :datetime)
|
||||
|
||||
procedure.types_de_champ << type_de_champ
|
||||
end
|
||||
|
|
9
spec/factories/type_de_champ_private.rb
Normal file
9
spec/factories/type_de_champ_private.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
FactoryGirl.define do
|
||||
factory :type_de_champ_private do
|
||||
libelle 'Description'
|
||||
description 'description de votre projet'
|
||||
type_champ 'text'
|
||||
order_place 1
|
||||
mandatory false
|
||||
end
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
FactoryGirl.define do
|
||||
factory :type_de_champ do
|
||||
factory :type_de_champ_public do
|
||||
libelle 'Description'
|
||||
description 'description de votre projet'
|
||||
type_champ 'text'
|
29
spec/features/admin/move_down_type_de_champ_private_spec.rb
Normal file
29
spec/features/admin/move_down_type_de_champ_private_spec.rb
Normal file
|
@ -0,0 +1,29 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'move down button type de champs', js: true do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
|
||||
before do
|
||||
login_as administrateur, scope: :administrateur
|
||||
end
|
||||
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ_private, procedure: procedure, order_place: 2) }
|
||||
let!(:type_de_champ_3) { create(:type_de_champ_private, procedure: procedure, order_place: 3) }
|
||||
|
||||
context 'when clicking on move down for type de champ 1' do
|
||||
before do
|
||||
visit admin_procedure_types_de_champ_private_path procedure.id
|
||||
page.find_by_id('btn_down_1').click
|
||||
wait_for_ajax
|
||||
type_de_champ_1.reload
|
||||
type_de_champ_2.reload
|
||||
end
|
||||
scenario 'it switches type_de_champ 1 and 2 place ' do
|
||||
expect(type_de_champ_1.order_place).to eq(2)
|
||||
expect(type_de_champ_2.order_place).to eq(1)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -8,10 +8,10 @@ feature 'move down button type de champs', js: true do
|
|||
end
|
||||
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure, order_place: 2) }
|
||||
let!(:type_de_champ_3) { create(:type_de_champ, procedure: procedure, order_place: 3) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ_public, procedure: procedure, order_place: 2) }
|
||||
let!(:type_de_champ_3) { create(:type_de_champ_public, procedure: procedure, order_place: 3) }
|
||||
|
||||
context 'when clicking on move down for type de champ 1' do
|
||||
before do
|
||||
|
|
29
spec/features/admin/move_up_type_de_champ_private_spec.rb
Normal file
29
spec/features/admin/move_up_type_de_champ_private_spec.rb
Normal file
|
@ -0,0 +1,29 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'move up button type de champs', js: true do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
|
||||
before do
|
||||
login_as administrateur, scope: :administrateur
|
||||
end
|
||||
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ_private, procedure: procedure, order_place: 2) }
|
||||
let!(:type_de_champ_3) { create(:type_de_champ_private, procedure: procedure, order_place: 3) }
|
||||
|
||||
context 'when clicking on move down for type de champ 1' do
|
||||
before do
|
||||
visit admin_procedure_types_de_champ_private_path procedure.id
|
||||
page.find_by_id('btn_up_1').click
|
||||
wait_for_ajax
|
||||
type_de_champ_0.reload
|
||||
type_de_champ_1.reload
|
||||
end
|
||||
scenario 'it switches type_de_champ 1 and 2 place ' do
|
||||
expect(type_de_champ_0.order_place).to eq(1)
|
||||
expect(type_de_champ_1.order_place).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -8,10 +8,10 @@ feature 'move up button type de champs', js: true do
|
|||
end
|
||||
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ, procedure: procedure, order_place: 2) }
|
||||
let!(:type_de_champ_3) { create(:type_de_champ, procedure: procedure, order_place: 3) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_2) { create(:type_de_champ_public, procedure: procedure, order_place: 2) }
|
||||
let!(:type_de_champ_3) { create(:type_de_champ_public, procedure: procedure, order_place: 3) }
|
||||
|
||||
context 'when clicking on move down for type de champ 1' do
|
||||
before do
|
||||
|
|
|
@ -23,7 +23,7 @@ describe Champ do
|
|||
|
||||
context 'when type_champ is datetime' do
|
||||
before do
|
||||
champ.type_de_champ = create :type_de_champ, type_champ: 'datetime'
|
||||
champ.type_de_champ = create :type_de_champ_public, type_champ: 'datetime'
|
||||
end
|
||||
|
||||
it { is_expected.to eq 'datepicker' }
|
||||
|
@ -31,7 +31,7 @@ describe Champ do
|
|||
|
||||
context 'when type_champ is address' do
|
||||
before do
|
||||
champ.type_de_champ = create :type_de_champ, type_champ: 'address'
|
||||
champ.type_de_champ = create :type_de_champ_public, type_champ: 'address'
|
||||
end
|
||||
|
||||
it { is_expected.to eq 'typeahead' }
|
||||
|
|
|
@ -591,12 +591,12 @@ describe Dossier do
|
|||
let(:dossier_2) { Dossier.new(id: 0, procedure: procedure_2) }
|
||||
|
||||
before do
|
||||
create :type_de_champ, libelle: 'type_1_1', order_place: 1, procedure: dossier_1.procedure
|
||||
create :type_de_champ, libelle: 'type_1_2', order_place: 2, procedure: dossier_1.procedure
|
||||
create :type_de_champ_public, libelle: 'type_1_1', order_place: 1, procedure: dossier_1.procedure
|
||||
create :type_de_champ_public, libelle: 'type_1_2', order_place: 2, procedure: dossier_1.procedure
|
||||
|
||||
create :type_de_champ, libelle: 'type_2_1', order_place: 1, procedure: dossier_2.procedure
|
||||
create :type_de_champ, libelle: 'type_2_2', order_place: 2, procedure: dossier_2.procedure
|
||||
create :type_de_champ, libelle: 'type_2_3', order_place: 3, procedure: dossier_2.procedure
|
||||
create :type_de_champ_public, libelle: 'type_2_1', order_place: 1, procedure: dossier_2.procedure
|
||||
create :type_de_champ_public, libelle: 'type_2_2', order_place: 2, procedure: dossier_2.procedure
|
||||
create :type_de_champ_public, libelle: 'type_2_3', order_place: 3, procedure: dossier_2.procedure
|
||||
|
||||
dossier_1.build_default_champs
|
||||
dossier_2.build_default_champs
|
||||
|
|
|
@ -44,8 +44,8 @@ describe Procedure do
|
|||
|
||||
describe '#types_de_champ_ordered' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
subject { procedure.types_de_champ_ordered }
|
||||
it { expect(subject.first).to eq(type_de_champ_1) }
|
||||
it { expect(subject.last).to eq(type_de_champ_0) }
|
||||
|
@ -60,8 +60,8 @@ describe Procedure do
|
|||
it { expect(subject).to eq(false) }
|
||||
end
|
||||
context 'when procedure have 2 types de champ' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
context 'when index is not the last element' do
|
||||
it { expect(subject).to eq(true) }
|
||||
it 'switch order place' do
|
||||
|
@ -128,8 +128,8 @@ describe Procedure do
|
|||
let(:archived) { false }
|
||||
let(:published) { false }
|
||||
let(:procedure) { create(:procedure, archived: archived, published: published) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
let!(:piece_justificative_0) { create(:type_de_piece_justificative, procedure: procedure, order_place: 0) }
|
||||
let!(:piece_justificative_1) { create(:type_de_piece_justificative, procedure: procedure, order_place: 1) }
|
||||
subject { procedure.clone }
|
||||
|
|
7
spec/models/type_de_champ_private_spec.rb
Normal file
7
spec/models/type_de_champ_private_spec.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe TypeDeChampPrivate do
|
||||
require 'models/type_de_champ_shared_example'
|
||||
|
||||
it_should_behave_like "type_de_champ_spec"
|
||||
end
|
7
spec/models/type_de_champ_public_spec.rb
Normal file
7
spec/models/type_de_champ_public_spec.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe TypeDeChampPublic do
|
||||
require 'models/type_de_champ_shared_example'
|
||||
|
||||
it_should_behave_like "type_de_champ_spec"
|
||||
end
|
44
spec/models/type_de_champ_shared_example.rb
Normal file
44
spec/models/type_de_champ_shared_example.rb
Normal file
|
@ -0,0 +1,44 @@
|
|||
shared_examples 'type_de_champ_spec' do
|
||||
describe 'database columns' do
|
||||
it { is_expected.to have_db_column(:libelle) }
|
||||
it { is_expected.to have_db_column(:type_champ) }
|
||||
it { is_expected.to have_db_column(:order_place) }
|
||||
it { is_expected.to have_db_column(:description) }
|
||||
end
|
||||
|
||||
describe 'associations' do
|
||||
it { is_expected.to belong_to(:procedure) }
|
||||
it { is_expected.to have_many(:champ) }
|
||||
end
|
||||
|
||||
describe 'validation' do
|
||||
context 'libelle' do
|
||||
it { is_expected.not_to allow_value(nil).for(:libelle) }
|
||||
it { is_expected.not_to allow_value('').for(:libelle) }
|
||||
it { is_expected.to allow_value('Montant projet').for(:libelle) }
|
||||
end
|
||||
|
||||
context 'type' do
|
||||
it { is_expected.not_to allow_value(nil).for(:type_champ) }
|
||||
it { is_expected.not_to allow_value('').for(:type_champ) }
|
||||
|
||||
it { is_expected.to allow_value('text').for(:type_champ) }
|
||||
it { is_expected.to allow_value('textarea').for(:type_champ) }
|
||||
it { is_expected.to allow_value('datetime').for(:type_champ) }
|
||||
it { is_expected.to allow_value('number').for(:type_champ) }
|
||||
it { is_expected.to allow_value('checkbox').for(:type_champ) }
|
||||
end
|
||||
|
||||
context 'order_place' do
|
||||
# it { is_expected.not_to allow_value(nil).for(:order_place) }
|
||||
# it { is_expected.not_to allow_value('').for(:order_place) }
|
||||
it { is_expected.to allow_value(1).for(:order_place) }
|
||||
end
|
||||
|
||||
context 'description' do
|
||||
it { is_expected.to allow_value(nil).for(:description) }
|
||||
it { is_expected.to allow_value('').for(:description) }
|
||||
it { is_expected.to allow_value('blabla').for(:description) }
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,46 +1,9 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe TypeDeChamp do
|
||||
describe 'database columns' do
|
||||
it { is_expected.to have_db_column(:libelle) }
|
||||
it { is_expected.to have_db_column(:type_champ) }
|
||||
it { is_expected.to have_db_column(:order_place) }
|
||||
it { is_expected.to have_db_column(:description) }
|
||||
end
|
||||
|
||||
describe 'associations' do
|
||||
it { is_expected.to belong_to(:procedure) }
|
||||
it { is_expected.to have_many(:champ) }
|
||||
end
|
||||
require 'models/type_de_champ_shared_example'
|
||||
|
||||
describe 'validation' do
|
||||
context 'libelle' do
|
||||
it { is_expected.not_to allow_value(nil).for(:libelle) }
|
||||
it { is_expected.not_to allow_value('').for(:libelle) }
|
||||
it { is_expected.to allow_value('Montant projet').for(:libelle) }
|
||||
end
|
||||
|
||||
context 'type' do
|
||||
it { is_expected.not_to allow_value(nil).for(:type_champ) }
|
||||
it { is_expected.not_to allow_value('').for(:type_champ) }
|
||||
|
||||
it { is_expected.to allow_value('text').for(:type_champ) }
|
||||
it { is_expected.to allow_value('textarea').for(:type_champ) }
|
||||
it { is_expected.to allow_value('datetime').for(:type_champ) }
|
||||
it { is_expected.to allow_value('number').for(:type_champ) }
|
||||
it { is_expected.to allow_value('checkbox').for(:type_champ) }
|
||||
end
|
||||
|
||||
context 'order_place' do
|
||||
# it { is_expected.not_to allow_value(nil).for(:order_place) }
|
||||
# it { is_expected.not_to allow_value('').for(:order_place) }
|
||||
it { is_expected.to allow_value(1).for(:order_place) }
|
||||
end
|
||||
|
||||
context 'description' do
|
||||
it { is_expected.to allow_value(nil).for(:description) }
|
||||
it { is_expected.to allow_value('').for(:description) }
|
||||
it { is_expected.to allow_value('blabla').for(:description) }
|
||||
end
|
||||
end
|
||||
it_should_behave_like "type_de_champ_spec"
|
||||
end
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@ describe 'admin/types_de_champ/show.html.haml', type: :view do
|
|||
describe 'fields sorted' do
|
||||
let(:first_libelle) { 'salut la compagnie' }
|
||||
let(:last_libelle) { 'je suis bien sur la page' }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1, libelle: last_libelle) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0, libelle: first_libelle) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1, libelle: last_libelle) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0, libelle: first_libelle) }
|
||||
before do
|
||||
procedure.reload
|
||||
assign(:procedure, procedure)
|
||||
|
@ -30,15 +30,15 @@ describe 'admin/types_de_champ/show.html.haml', type: :view do
|
|||
it { expect(subject).not_to have_css('.fa-chevron-up') }
|
||||
end
|
||||
context 'when there is only one field in database' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
it { expect(subject).not_to have_css('#btn_down_0') }
|
||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
||||
it { expect(subject).not_to have_css('#btn_up_1') }
|
||||
it { expect(subject).not_to have_css('#btn_down_1') }
|
||||
end
|
||||
context 'when there are 2 fields in database' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ, procedure: procedure, order_place: 1) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) }
|
||||
it { expect(subject).to have_css('#btn_down_0') }
|
||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
||||
it { expect(subject).to have_css('#btn_up_1') }
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'admin/types_de_champ_private/show.html.haml', type: :view do
|
||||
let(:procedure) { create(:procedure) }
|
||||
|
||||
describe 'fields sorted' do
|
||||
let(:first_libelle) { 'salut la compagnie' }
|
||||
let(:last_libelle) { 'je suis bien sur la page' }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1, libelle: last_libelle) }
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0, libelle: first_libelle) }
|
||||
before do
|
||||
procedure.reload
|
||||
assign(:procedure, procedure)
|
||||
render
|
||||
end
|
||||
it 'sorts by order place' do
|
||||
expect(rendered).to match(/#{first_libelle}.*#{last_libelle}/m)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'arrow button' do
|
||||
subject do
|
||||
procedure.reload
|
||||
assign(:procedure, procedure)
|
||||
render
|
||||
rendered
|
||||
end
|
||||
context 'when there is no field in database' do
|
||||
it { expect(subject).not_to have_css('.fa-chevron-down') }
|
||||
it { expect(subject).not_to have_css('.fa-chevron-up') }
|
||||
end
|
||||
context 'when there is only one field in database' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||
it { expect(subject).not_to have_css('#btn_down_0') }
|
||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
||||
it { expect(subject).not_to have_css('#btn_up_1') }
|
||||
it { expect(subject).not_to have_css('#btn_down_1') }
|
||||
end
|
||||
context 'when there are 2 fields in database' do
|
||||
let!(:type_de_champ_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) }
|
||||
let!(:type_de_champ_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) }
|
||||
it { expect(subject).to have_css('#btn_down_0') }
|
||||
it { expect(subject).not_to have_css('#btn_up_0') }
|
||||
it { expect(subject).to have_css('#btn_up_1') }
|
||||
it { expect(subject).not_to have_css('#btn_down_1') }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue