[#883] move admin part in backoffice

This commit is contained in:
Tanguy PATTE 2015-09-22 15:00:59 +02:00
parent 1238fdae23
commit 5ca014587a
17 changed files with 111 additions and 95 deletions

View file

@ -1,3 +0,0 @@
class Admin::CommentairesController < CommentairesController
before_action :authenticate_user!
end

View file

@ -0,0 +1,8 @@
class Backoffice::CommentairesController < CommentairesController
before_action :authenticate_gestionnaire!
def is_gestionnaire?
true
end
end

View file

@ -1,8 +1,8 @@
class Admin::DossierController < ApplicationController
class Backoffice::DossiersController < ApplicationController
before_action :authenticate_gestionnaire!
def show
@dossier = Dossier.find(params[:dossier_id])
@dossier = Dossier.find(params[:id])
@entreprise = @dossier.entreprise.decorate
@etablissement = @dossier.etablissement
@pieces_justificatives = @dossier.pieces_justificatives
@ -17,13 +17,6 @@ class Admin::DossierController < ApplicationController
redirect_start
end
def index
@dossier = Dossier.find(params[:dossier_id])
redirect_to url_for(controller: 'admin/dossier', action: :show, dossier_id: @dossier.id)
rescue
redirect_start
end
private
def redirect_start

View file

@ -7,10 +7,14 @@ class CommentairesController < ApplicationController
@commentaire.save
if request.referer.include? '/recapitulatif'
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params['dossier_id'])
if is_gestionnaire?
redirect_to url_for(controller: 'backoffice/dossiers', action: :show, id: params['dossier_id'])
else
redirect_to url_for(controller: 'admin/dossier', action: :show, dossier_id: params['dossier_id'])
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params['dossier_id'])
end
end
def is_gestionnaire?
false
end
end

View file

@ -1,3 +1,4 @@
#backoffice_dossier_show
%h1#dossier_id.text-info{ :style => 'text-align:right'}
= "Dossier n°#{@dossier.id}"

View file

@ -10,6 +10,7 @@
- @dossiers.each do |dossier|
%tr
%td= dossier.procedure.libelle
%td= dossier.nom_projet
%td
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
%td Mise à jour
%td= dossier.last_update

View file

@ -31,7 +31,7 @@
%a{ href: "mailto:#{@dossier.mail_contact}" }
= @dossier.mail_contact
-if !request.url.include?('admin')
/ -if !request.url.include?('admin')
.col-lg-6.col-md-6
%br
%br

View file

@ -29,18 +29,13 @@ Rails.application.routes.draw do
post '/commentaire' => 'commentaires#create'
end
namespace :admin do
get '/dossiers/:dossier_id' => 'dossier#show'
get '/dossiers' => 'dossier#index'
post '/commentaire' => 'commentaires#create'
end
get 'backoffice' => 'backoffice#index'
namespace :backoffice do
get 'sign_in' => '/gestionnaires/sessions#new'
resources :dossiers, only: [:show]
resources :commentaires, only: [:create]
end
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".

View file

@ -1,53 +0,0 @@
require 'rails_helper'
describe Admin::DossierController, type: :controller do
let(:dossier) { create(:dossier, :with_entreprise) }
let(:dossier_id) { dossier.id }
let(:bad_dossier_id) { Dossier.count + 10 }
let(:gestionnaire) { create(:gestionnaire) }
describe 'GET #show' do
context "l'utilisateur est connecté" do
before do
sign_in gestionnaire
end
it 'returns http success' do
get :show, dossier_id: dossier_id
expect(response).to have_http_status(200)
end
it "le numéro de dossier n'existe pas" do
get :show, dossier_id: bad_dossier_id
expect(response).to redirect_to('/start/error_dossier')
end
end
context "L'utilisateur n'est pas connecté mais le numéro de dossier est correct" do
subject { get :show, dossier_id: dossier_id }
it { is_expected.to redirect_to('/gestionnaires/sign_in') }
end
end
describe 'GET #index' do
let(:user) { create(:user) }
before do
sign_in gestionnaire
end
it 'le numéro de dossier est correct' do
get :index, dossier_id: dossier_id
expect(response).to redirect_to("/admin/dossiers/#{dossier_id}")
end
it 'il n\' y a pas de numéro de dossier' do
get :index
expect(response).to redirect_to('/start/error_dossier')
end
it 'le numéro de dossier n\'existe pas' do
get :index, dossier_id: bad_dossier_id
expect(response).to redirect_to('/start/error_dossier')
end
end
end

View file

@ -0,0 +1,20 @@
require 'spec_helper'
describe Backoffice::CommentairesController, type: :controller do
let(:dossier) { create(:dossier) }
let(:dossier_id) { dossier.id }
let(:email_commentaire) { 'test@test.com' }
let(:texte_commentaire) { 'Commentaire de test' }
describe '#POST create' do
before do
sign_in create(:gestionnaire)
end
context "création correct d'un commentaire" do
it 'depuis la page admin' do
post :create, dossier_id: dossier_id, email_commentaire: email_commentaire, texte_commentaire: texte_commentaire
expect(response).to redirect_to("/backoffice/dossiers/#{dossier_id}")
end
end
end
end

View file

@ -0,0 +1,31 @@
require 'rails_helper'
describe Backoffice::DossiersController, type: :controller do
let(:dossier) { create(:dossier, :with_entreprise) }
let(:dossier_id) { dossier.id }
let(:bad_dossier_id) { Dossier.count + 10 }
let(:gestionnaire) { create(:gestionnaire) }
describe 'GET #show' do
context "l'utilisateur est connecté" do
before do
sign_in gestionnaire
end
it 'returns http success' do
get :show, id: dossier_id
expect(response).to have_http_status(200)
end
it "le numéro de dossier n'existe pas" do
get :show, id: bad_dossier_id
expect(response).to redirect_to('/start/error_dossier')
end
end
context "L'utilisateur n'est pas connecté mais le numéro de dossier est correct" do
subject { get :show, id: dossier_id }
it { is_expected.to redirect_to('/gestionnaires/sign_in') }
end
end
end

View file

@ -9,16 +9,9 @@ describe CommentairesController, type: :controller do
describe '#POST create' do
context 'création correct d\'un commentaire' do
it 'depuis la page récapitulatif' do
request.env['HTTP_REFERER'] = '/recapitulatif'
post :create, dossier_id: dossier_id, email_commentaire: email_commentaire, texte_commentaire: texte_commentaire
expect(response).to redirect_to("/dossiers/#{dossier_id}/recapitulatif")
end
it 'depuis la page admin' do
request.env['HTTP_REFERER'] = '/admin/dossiers'
post :create, dossier_id: dossier_id, email_commentaire: email_commentaire, texte_commentaire: texte_commentaire
expect(response).to redirect_to("/admin/dossiers/#{dossier_id}")
end
end
end
end

View file

@ -1,5 +1,6 @@
FactoryGirl.define do
factory :dossier do
nom_projet "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger"
trait :with_entreprise do
after(:build) do |dossier, _evaluator|
etablissement = create(:etablissement)

View file

@ -1,6 +1,6 @@
require 'spec_helper'
feature '_Commentaires_Flux Admin/Dossier#Show Page' do
feature 'add commentaire on backoffice' do
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure) }
let(:dossier_id) { dossier.id }
let!(:commentaire) { create(:commentaire, dossier: dossier, email: 'toto@toto.com') }
@ -11,7 +11,7 @@ feature '_Commentaires_Flux Admin/Dossier#Show Page' do
before do
login_as gestionnaire, scope: :gestionnaire
visit "/admin/dossiers/#{dossier_id}"
visit backoffice_dossier_path(dossier)
end
context 'Affichage du flux de commentaire' do
@ -30,7 +30,7 @@ feature '_Commentaires_Flux Admin/Dossier#Show Page' do
context 'Affichage du formulaire de commentaire' do
scenario 'Le formulaire envoie vers /dossiers/:dossier_id/commentaire en #POST' do
expect(page).to have_selector("form[action='/admin/commentaire?dossier_id=#{dossier_id}'][method=post]")
expect(page).to have_selector("form[action='/backoffice/commentaires?dossier_id=#{dossier_id}'][method=post]")
end
scenario 'Champs de texte' do

View file

@ -6,7 +6,7 @@ feature 'Admin/Dossier#Show Page' do
before do
login_gestionnaire
visit "/admin/dossiers/#{dossier_id}"
visit "/backoffice/dossiers/#{dossier_id}"
end
context 'sur la page admin du dossier' do

View file

@ -0,0 +1,25 @@
require 'spec_helper'
feature 'on backoffice page' do
let(:procedure) { create(:procedure) }
let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure) }
before do
visit backoffice_path
end
context 'when gestionnaire is logged in' do
let(:gestionnaire) { create(:gestionnaire) }
before do
page.find_by_id(:gestionnaire_email).set gestionnaire.email
page.find_by_id(:gestionnaire_password).set gestionnaire.password
page.click_on 'Se connecter'
end
context 'when he click on first dossier' do
before do
page.click_on dossier.nom_projet
end
scenario 'it redirect to dossier page' do
expect(page).to have_css('#backoffice_dossier_show')
end
end
end
end

View file

@ -36,7 +36,7 @@ feature 'Recapitulatif#Show Page' do
context 'lien description' do
scenario 'le lien vers description est présent' do
expect(page).to have_selector('a[id=modif_description]')
expect(page).to have_css('#modif_description')
end
scenario 'le lien vers description est correct' do