Merge pull request #2908 from betagouv/fix_2905_timezone

Fix 2905 timezone
This commit is contained in:
LeSim 2018-10-26 12:14:41 +02:00 committed by GitHub
commit c5015291a6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
75 changed files with 213 additions and 200 deletions

View file

@ -764,7 +764,7 @@ Rails/SkipsModelValidations:
Enabled: false Enabled: false
Rails/TimeZone: Rails/TimeZone:
Enabled: false Enabled: true
Rails/UniqBeforePluck: Rails/UniqBeforePluck:
Enabled: true Enabled: true

View file

@ -43,7 +43,7 @@ class Admin::AttestationTemplatesController < AdminController
@title = activated_attestation_params[:title] @title = activated_attestation_params[:title]
@body = activated_attestation_params[:body] @body = activated_attestation_params[:body]
@footer = activated_attestation_params[:footer] @footer = activated_attestation_params[:footer]
@created_at = DateTime.now @created_at = Time.zone.now
# In a case of a preview, when the user does not change its images, # In a case of a preview, when the user does not change its images,
# the images are not uploaded and thus should be retrieved from previous # the images are not uploaded and thus should be retrieved from previous

View file

@ -52,7 +52,7 @@ class Admin::GestionnairesController < AdminController
if User.exists?(email: @gestionnaire.email) if User.exists?(email: @gestionnaire.email)
GestionnaireMailer.user_to_gestionnaire(@gestionnaire.email).deliver_later GestionnaireMailer.user_to_gestionnaire(@gestionnaire.email).deliver_later
else else
User.create(email: email, password: password, confirmed_at: DateTime.now) User.create(email: email, password: password, confirmed_at: Time.zone.now)
end end
flash.notice = 'Instructeur ajouté' flash.notice = 'Instructeur ajouté'
else else

View file

@ -15,7 +15,7 @@ class FranceConnect::ParticulierController < ApplicationController
if fci.user.nil? if fci.user.nil?
user = User.find_or_create_by(email: fci.email_france_connect) do |new_user| user = User.find_or_create_by(email: fci.email_france_connect) do |new_user|
new_user.password = Devise.friendly_token[0, 20] new_user.password = Devise.friendly_token[0, 20]
new_user.confirmed_at = DateTime.now new_user.confirmed_at = Time.zone.now
end end
fci.update_attribute('user_id', user.id) fci.update_attribute('user_id', user.id)

View file

@ -89,7 +89,7 @@ module NewGestionnaire
if gestionnaire.save if gestionnaire.save
user = User.find_by(email: email) user = User.find_by(email: email)
if user.blank? if user.blank?
user = User.create(email: email, password: password, confirmed_at: DateTime.now) user = User.create(email: email, password: password, confirmed_at: Time.zone.now)
end end
sign_in(user) sign_in(user)

View file

@ -13,7 +13,7 @@ module NewUser
.select("procedures.*, COUNT(*) AS procedures_count") .select("procedures.*, COUNT(*) AS procedures_count")
.joins(:dossiers) .joins(:dossiers)
.publiees .publiees
.where(dossiers: { created_at: 7.days.ago..Time.now }) .where(dossiers: { created_at: 7.days.ago..Time.zone.now })
.group("procedures.id") .group("procedures.id")
.order("procedures_count DESC") .order("procedures_count DESC")
.limit(5) .limit(5)

View file

@ -82,7 +82,7 @@ class StatsController < ApplicationController
def procedures_numbers(procedures) def procedures_numbers(procedures)
total = procedures.count total = procedures.count
last_30_days_count = procedures.where(published_at: 1.month.ago..Time.now).count last_30_days_count = procedures.where(published_at: 1.month.ago..Time.zone.now).count
previous_count = procedures.where(published_at: 2.months.ago..1.month.ago).count previous_count = procedures.where(published_at: 2.months.ago..1.month.ago).count
if previous_count != 0 if previous_count != 0
evolution = (((last_30_days_count.to_f / previous_count) - 1) * 100).round(0) evolution = (((last_30_days_count.to_f / previous_count) - 1) * 100).round(0)
@ -100,7 +100,7 @@ class StatsController < ApplicationController
def dossiers_numbers(dossiers) def dossiers_numbers(dossiers)
total = dossiers.count total = dossiers.count
last_30_days_count = dossiers.where(en_construction_at: 1.month.ago..Time.now).count last_30_days_count = dossiers.where(en_construction_at: 1.month.ago..Time.zone.now).count
previous_count = dossiers.where(en_construction_at: 2.months.ago..1.month.ago).count previous_count = dossiers.where(en_construction_at: 2.months.ago..1.month.ago).count
if previous_count != 0 if previous_count != 0
evolution = (((last_30_days_count.to_f / previous_count) - 1) * 100).round(0) evolution = (((last_30_days_count.to_f / previous_count) - 1) * 100).round(0)
@ -178,9 +178,9 @@ class StatsController < ApplicationController
def max_date def max_date
if administration_signed_in? if administration_signed_in?
Time.now.to_date Time.zone.now.to_date
else else
Time.now.beginning_of_month - 1.second Time.zone.now.beginning_of_month - 1.second
end end
end end
@ -232,7 +232,7 @@ class StatsController < ApplicationController
# and then computing the average for all the procedures # and then computing the average for all the procedures
min_date = 11.months.ago min_date = 11.months.ago
max_date = Time.now.to_date max_date = Time.zone.now.to_date
processed_dossiers = dossiers processed_dossiers = dossiers
.where(:processed_at => min_date..max_date) .where(:processed_at => min_date..max_date)
@ -273,7 +273,7 @@ class StatsController < ApplicationController
# for a 24 champs form (the current form mean length) # for a 24 champs form (the current form mean length)
min_date = 11.months.ago min_date = 11.months.ago
max_date = Time.now.to_date max_date = Time.zone.now.to_date
processed_dossiers = dossiers processed_dossiers = dossiers
.where(:processed_at => min_date..max_date) .where(:processed_at => min_date..max_date)

View file

@ -24,7 +24,7 @@ class ChampDecorator < Draper::Decorator
if type_champ == TypeDeChamp.type_champs.fetch(:date) if type_champ == TypeDeChamp.type_champs.fetch(:date)
object.value object.value
elsif type_champ == TypeDeChamp.type_champs.fetch(:datetime) && object.value != ' 00:00' elsif type_champ == TypeDeChamp.type_champs.fetch(:datetime) && object.value != ' 00:00'
DateTime.parse(object.value, "%Y-%m-%d %H:%M").strftime("%Y-%m-%d") Time.zone.strptime(object.value, "%Y-%m-%d %H:%M").strftime("%Y-%m-%d")
end end
end end
end end

View file

@ -5,11 +5,11 @@ class DossierDecorator < Draper::Decorator
delegate_all delegate_all
def first_creation def first_creation
created_at.localtime.strftime('%d/%m/%Y %H:%M') created_at.strftime('%d/%m/%Y %H:%M')
end end
def last_update def last_update
updated_at.localtime.strftime('%d/%m/%Y %H:%M') updated_at.strftime('%d/%m/%Y %H:%M')
end end
def display_state def display_state

View file

@ -2,12 +2,12 @@ class ProcedureDecorator < Draper::Decorator
delegate_all delegate_all
def created_at_fr def created_at_fr
created_at.localtime.strftime('%d/%m/%Y %H:%M') created_at.strftime('%d/%m/%Y %H:%M')
end end
def published_at_fr def published_at_fr
if published_at.present? if published_at.present?
published_at.localtime.strftime('%d/%m/%Y %H:%M') published_at.strftime('%d/%m/%Y %H:%M')
end end
end end

View file

@ -20,7 +20,7 @@ module CommentaireHelper
def commentaire_date(commentaire) def commentaire_date(commentaire)
is_current_year = (commentaire.created_at.year == Date.current.year) is_current_year = (commentaire.created_at.year == Date.current.year)
template = is_current_year ? :message_date : :message_date_with_year template = is_current_year ? :message_date : :message_date_with_year
I18n.l(commentaire.created_at.localtime, format: template) I18n.l(commentaire.created_at, format: template)
end end
private private

View file

@ -13,7 +13,7 @@ class AntiVirusJob < ApplicationJob
else else
status = VirusScan.statuses.fetch(:infected) status = VirusScan.statuses.fetch(:infected)
end end
virus_scan.update(scanned_at: Time.now, status: status) virus_scan.update(scanned_at: Time.zone.now, status: status)
end end
end end
end end

View file

@ -1,10 +1,10 @@
class ApplicationJob < ActiveJob::Base class ApplicationJob < ActiveJob::Base
before_perform do |job| before_perform do |job|
Rails.logger.info("#{job.class.name} started at #{Time.now}") Rails.logger.info("#{job.class.name} started at #{Time.zone.now}")
end end
after_perform do |job| after_perform do |job|
Rails.logger.info("#{job.class.name} ended at #{Time.now}") Rails.logger.info("#{job.class.name} ended at #{Time.zone.now}")
end end
def error(job, exception) def error(job, exception)

View file

@ -7,14 +7,14 @@ class AutoReceiveDossiersForProcedureJob < ApplicationJob
when Dossier.states.fetch(:en_instruction) when Dossier.states.fetch(:en_instruction)
procedure.dossiers.state_en_construction.update_all( procedure.dossiers.state_en_construction.update_all(
state: Dossier.states.fetch(:en_instruction), state: Dossier.states.fetch(:en_instruction),
en_instruction_at: DateTime.now en_instruction_at: Time.zone.now
) )
when Dossier.states.fetch(:accepte) when Dossier.states.fetch(:accepte)
procedure.dossiers.state_en_construction.find_each do |dossier| procedure.dossiers.state_en_construction.find_each do |dossier|
dossier.update( dossier.update(
state: Dossier.states.fetch(:accepte), state: Dossier.states.fetch(:accepte),
en_instruction_at: DateTime.now, en_instruction_at: Time.zone.now,
processed_at: DateTime.now processed_at: Time.zone.now
) )
dossier.attestation = dossier.build_attestation dossier.attestation = dossier.build_attestation
dossier.save dossier.save

View file

@ -10,7 +10,7 @@ class ApiEntreprise::EntrepriseAdapter < ApiEntreprise::Adapter
params = data_source[:entreprise].slice(*attr_to_fetch) params = data_source[:entreprise].slice(*attr_to_fetch)
if valid_params?(params) if valid_params?(params)
params[:date_creation] = Time.at(params[:date_creation]).to_datetime params[:date_creation] = Time.zone.at(params[:date_creation]).to_datetime
params.transform_keys { |k| :"entreprise_#{k}" } params.transform_keys { |k| :"entreprise_#{k}" }
else else
{} {}

View file

@ -22,7 +22,7 @@ class Administration < ApplicationRecord
User.create({ User.create({
email: email, email: email,
password: password, password: password,
confirmed_at: DateTime.now confirmed_at: Time.zone.now
}) })
end end

View file

@ -79,7 +79,7 @@ class AttestationTemplate < ApplicationRecord
body: replace_tags(body, dossier), body: replace_tags(body, dossier),
signature: signature, signature: signature,
footer: footer, footer: footer,
created_at: Time.now) created_at: Time.zone.now)
attestation_view = action_view.render(file: 'admin/attestation_templates/show', attestation_view = action_view.render(file: 'admin/attestation_templates/show',
formats: [:pdf]) formats: [:pdf])

View file

@ -25,12 +25,12 @@ class Champs::DatetimeChamp < Champ
begin begin
hash_date = YAML.safe_load(value.gsub('=>', ': ')) hash_date = YAML.safe_load(value.gsub('=>', ': '))
year, month, day, hour, minute = hash_date.values_at(1,2,3,4,5) year, month, day, hour, minute = hash_date.values_at(1,2,3,4,5)
DateTime.new(year, month, day, hour, minute).strftime("%d/%m/%Y %H:%M") Time.zone.local(year, month, day, hour, minute).strftime("%d/%m/%Y %H:%M")
rescue rescue
nil nil
end end
elsif /^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}$/.match?(value) # old browsers can send with dd/mm/yyyy hh:mm format elsif /^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}$/.match?(value) # old browsers can send with dd/mm/yyyy hh:mm format
self.value = DateTime.parse(value, "%d/%m/%Y %H:%M").strftime("%Y-%m-%d %H:%M") self.value = Time.zone.strptime(value, "%d/%m/%Y %H:%M").strftime("%Y-%m-%d %H:%M")
elsif !(/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/.match?(value)) # a datetime not correctly formatted should not be stored elsif !(/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/.match?(value)) # a datetime not correctly formatted should not be stored
self.value = nil self.value = nil
end end

View file

@ -14,7 +14,7 @@ class Commentaire < ApplicationRecord
after_create :notify after_create :notify
def header def header
"#{sender}, #{I18n.l(created_at.localtime, format: '%d %b %Y %H:%M')}" "#{sender}, #{I18n.l(created_at, format: '%d %b %Y %H:%M')}"
end end
def sender def sender

View file

@ -126,7 +126,7 @@ module TagsSubstitutionConcern
def format_date(date) def format_date(date)
if date.present? if date.present?
date.localtime.strftime('%d/%m/%Y') date.strftime('%d/%m/%Y')
else else
'' ''
end end

View file

@ -180,7 +180,7 @@ class Dossier < ApplicationRecord
end end
def retention_expired? def retention_expired?
instruction_commencee? && retention_end_date <= DateTime.now instruction_commencee? && retention_end_date <= Time.zone.now
end end
def text_summary def text_summary
@ -194,7 +194,7 @@ class Dossier < ApplicationRecord
else else
parts = [ parts = [
"Dossier déposé le ", "Dossier déposé le ",
en_construction_at.localtime.strftime("%d/%m/%Y"), en_construction_at.strftime("%d/%m/%Y"),
" sur la démarche ", " sur la démarche ",
procedure.libelle, procedure.libelle,
" gérée par l'organisme ", " gérée par l'organisme ",
@ -275,7 +275,7 @@ class Dossier < ApplicationRecord
end end
def delete_and_keep_track def delete_and_keep_track
now = Time.now now = Time.zone.now
deleted_dossier = DeletedDossier.create!(dossier_id: id, procedure: procedure, state: state, deleted_at: now) deleted_dossier = DeletedDossier.create!(dossier_id: id, procedure: procedure, state: state, deleted_at: now)
update(hidden_at: now) update(hidden_at: now)
@ -309,11 +309,11 @@ class Dossier < ApplicationRecord
def update_state_dates def update_state_dates
if en_construction? && !self.en_construction_at if en_construction? && !self.en_construction_at
self.en_construction_at = DateTime.now self.en_construction_at = Time.zone.now
elsif en_instruction? && !self.en_instruction_at elsif en_instruction? && !self.en_instruction_at
self.en_instruction_at = DateTime.now self.en_instruction_at = Time.zone.now
elsif TERMINE.include?(state) elsif TERMINE.include?(state)
self.processed_at = DateTime.now self.processed_at = Time.zone.now
end end
end end

View file

@ -9,9 +9,9 @@ class Follow < ApplicationRecord
private private
def set_default_date def set_default_date
self.demande_seen_at ||= DateTime.now self.demande_seen_at ||= Time.zone.now
self.annotations_privees_seen_at ||= DateTime.now self.annotations_privees_seen_at ||= Time.zone.now
self.avis_seen_at ||= DateTime.now self.avis_seen_at ||= Time.zone.now
self.messagerie_seen_at ||= DateTime.now self.messagerie_seen_at ||= Time.zone.now
end end
end end

View file

@ -64,7 +64,7 @@ class Gestionnaire < ApplicationRecord
end end
def last_week_overview def last_week_overview
start_date = DateTime.now.beginning_of_week start_date = Time.zone.now.beginning_of_week
active_procedure_overviews = procedures active_procedure_overviews = procedures
.publiees .publiees
@ -180,7 +180,7 @@ class Gestionnaire < ApplicationRecord
def mark_tab_as_seen(dossier, tab) def mark_tab_as_seen(dossier, tab)
attributes = {} attributes = {}
attributes["#{tab}_seen_at"] = DateTime.now attributes["#{tab}_seen_at"] = Time.zone.now
Follow.where(gestionnaire: self, dossier: dossier).update_all(attributes) Follow.where(gestionnaire: self, dossier: dossier).update_all(attributes)
end end

View file

@ -257,7 +257,7 @@ class Procedure < ApplicationRecord
def export_filename def export_filename
procedure_identifier = path || "procedure-#{id}" procedure_identifier = path || "procedure-#{id}"
"dossiers_#{procedure_identifier}_#{Time.now.strftime('%Y-%m-%d_%H-%M')}" "dossiers_#{procedure_identifier}_#{Time.zone.now.strftime('%Y-%m-%d_%H-%M')}"
end end
def generate_export def generate_export
@ -305,7 +305,7 @@ class Procedure < ApplicationRecord
end end
def whitelist! def whitelist!
update_attribute('whitelisted_at', DateTime.now) update_attribute('whitelisted_at', Time.zone.now)
end end
def closed_mail_template_attestation_inconsistency_state def closed_mail_template_attestation_inconsistency_state
@ -344,24 +344,24 @@ class Procedure < ApplicationRecord
end end
def after_publish(path) def after_publish(path)
update!(published_at: Time.now) update!(published_at: Time.zone.now)
publish_with_path!(path) publish_with_path!(path)
end end
def after_archive def after_archive
update!(archived_at: Time.now, path: nil) update!(archived_at: Time.zone.now, path: nil)
end end
def after_hide def after_hide
now = Time.now now = Time.zone.now
update!(hidden_at: now, path: nil) update!(hidden_at: now, path: nil)
procedure_path&.hide! procedure_path&.hide!
dossiers.update_all(hidden_at: now) dossiers.update_all(hidden_at: now)
end end
def after_reopen(path) def after_reopen(path)
update!(published_at: Time.now, archived_at: nil) update!(published_at: Time.zone.now, archived_at: nil)
publish_with_path!(path) publish_with_path!(path)
end end

View file

@ -24,7 +24,7 @@ class ProcedureOverview
@created_dossiers_count = procedure @created_dossiers_count = procedure
.dossiers .dossiers
.where(created_at: start_date..DateTime.now) .where(created_at: start_date..Time.zone.now)
.state_not_brouillon .state_not_brouillon
.count .count
end end

View file

@ -111,8 +111,12 @@ class ProcedurePresentation < ApplicationRecord
column = sanitized_column(filter) column = sanitized_column(filter)
case table case table
when 'self' when 'self'
date = filter['value'].to_date rescue nil date = Time.zone.parse(filter['value'])
dossiers.where("DATE_TRUNC('day', #{column}) = ?", date) if date.present?
dossiers.where("#{column} BETWEEN ? AND ?", date, date + 1.day)
else
[]
end
when 'type_de_champ', 'type_de_champ_private' when 'type_de_champ', 'type_de_champ_private'
relation = table == 'type_de_champ' ? :champs : :champs_private relation = table == 'type_de_champ' ? :champs : :champs_private
dossiers dossiers
@ -186,7 +190,7 @@ class ProcedurePresentation < ApplicationRecord
def get_value(dossier, table, column) def get_value(dossier, table, column)
case table case table
when 'self' when 'self'
dossier.send(column) dossier.send(column)&.strftime('%d/%m/%Y')
when 'user', 'individual', 'etablissement' when 'user', 'individual', 'etablissement'
dossier.send(table)&.send(column) dossier.send(table)&.send(column)
when 'type_de_champ' when 'type_de_champ'

View file

@ -1,7 +1,7 @@
#footer #footer
%p{ class: "copyright col-md-push-#{12-main_container_size} col-md-#{main_container_size} col-lg-push-#{12-main_container_size} col-lg-#{main_container_size} text-muted small" } %p{ class: "copyright col-md-push-#{12-main_container_size} col-md-#{main_container_size} col-lg-push-#{12-main_container_size} col-lg-#{main_container_size} text-muted small" }
= link_to 'DINSIC', "http://etatplateforme.modernisation.gouv.fr" = link_to 'DINSIC', "http://etatplateforme.modernisation.gouv.fr"
= Time.now.year = Time.zone.now.year
\- \-
= link_to 'Nouveautés', 'https://github.com/betagouv/tps/releases', target: '_blank' = link_to 'Nouveautés', 'https://github.com/betagouv/tps/releases', target: '_blank'
\- \-

View file

@ -8,7 +8,7 @@
%h2.claimant %h2.claimant
Demandeur : Demandeur :
%span.email= @avis.claimant.email %span.email= @avis.claimant.email
%span.date Demande d'avis envoyée le #{I18n.l(@avis.created_at.localtime, format: '%d/%m/%y')} %span.date Demande d'avis envoyée le #{I18n.l(@avis.created_at, format: '%d/%m/%y')}
%p.introduction= @avis.introduction %p.introduction= @avis.introduction
= form_for @avis, url: gestionnaire_avis_path(@avis), html: { class: 'form' } do |f| = form_for @avis, url: gestionnaire_avis_path(@avis), html: { class: 'form' } do |f|

View file

@ -15,7 +15,7 @@
confidentiel confidentiel
%span.icon.lock{ title: "Cet avis n'est pas affiché avec les autres experts consultés" } %span.icon.lock{ title: "Cet avis n'est pas affiché avec les autres experts consultés" }
%span.date{ class: highlight_if_unseen_class(avis_seen_at, avis.created_at) } %span.date{ class: highlight_if_unseen_class(avis_seen_at, avis.created_at) }
Demande d'avis envoyée le #{I18n.l(avis.created_at.localtime, format: '%d/%m/%y à %H:%M')} Demande d'avis envoyée le #{I18n.l(avis.created_at, format: '%d/%m/%y à %H:%M')}
%p= avis.introduction %p= avis.introduction
.answer.flex.align-start .answer.flex.align-start
@ -25,7 +25,7 @@
= (avis.email_to_display == current_gestionnaire.email) ? 'Vous' : avis.email_to_display = (avis.email_to_display == current_gestionnaire.email) ? 'Vous' : avis.email_to_display
- if avis.answer.present? - if avis.answer.present?
%span.date{ class: highlight_if_unseen_class(avis_seen_at, avis.updated_at) } %span.date{ class: highlight_if_unseen_class(avis_seen_at, avis.updated_at) }
Réponse donnée le #{I18n.l(avis.updated_at.localtime, format: '%d/%m/%y à %H:%M')} Réponse donnée le #{I18n.l(avis.updated_at, format: '%d/%m/%y à %H:%M')}
- else - else
%span.waiting En attente de réponse %span.waiting En attente de réponse
%p= avis.answer %p= avis.answer

View file

@ -48,7 +48,7 @@
= render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier } = render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier }
%td.updated-at-col %td.updated-at-col
= link_to(url_for_dossier(dossier), class: 'cell-link') do = link_to(url_for_dossier(dossier), class: 'cell-link') do
= dossier.updated_at.localtime.strftime("%d/%m/%Y") = dossier.updated_at.strftime("%d/%m/%Y")
= paginate(@dossiers) = paginate(@dossiers)
- if current_user.feedbacks.empty? || current_user.feedbacks.last.created_at < 1.month.ago - if current_user.feedbacks.empty? || current_user.feedbacks.last.created_at < 1.month.ago

View file

@ -73,4 +73,4 @@
%td.updated-at %td.updated-at
%span{ class: highlight_if_unseen_class(demande_seen_at, c.updated_at) } %span{ class: highlight_if_unseen_class(demande_seen_at, c.updated_at) }
modifié le modifié le
= c.updated_at.localtime.strftime("%d/%m/%Y à %H:%M") = c.updated_at.strftime("%d/%m/%Y à %H:%M")

View file

@ -23,11 +23,11 @@
= link_to pj.content_url, { target: :blank } do = link_to pj.content_url, { target: :blank } do
%span.filename= display_pj_filename(pj) %span.filename= display_pj_filename(pj)
%span %span
ajoutée le #{pj.created_at.localtime.strftime('%d/%m/%Y à %H:%M')} ajoutée le #{pj.created_at.strftime('%d/%m/%Y à %H:%M')}
- else - else
%td Pièce non fournie %td Pièce non fournie
%td.updated-at %td.updated-at
- if pj - if pj
%span{ class: highlight_if_unseen_class(demande_seen_at, pj.updated_at) } %span{ class: highlight_if_unseen_class(demande_seen_at, pj.updated_at) }
modifié le modifié le
= pj.updated_at.localtime.strftime("%d/%m/%Y à %H:%M") = pj.updated_at.strftime("%d/%m/%Y à %H:%M")

View file

@ -1,4 +1,4 @@
- parsed_value = champ.value.present? ? DateTime.parse(champ.value) : DateTime.now - parsed_value = champ.value.present? ? Time.zone.parse(champ.value) : Time.zone.now
.datetime .datetime
= form.datetime_select(:value, selected: parsed_value, start_year: 1950, end_year: 2100, minute_step: 5) = form.datetime_select(:value, selected: parsed_value, start_year: 1950, end_year: 2100, minute_step: 5)

View file

@ -16,7 +16,7 @@ module TPS
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Central Time (US & Canada)' config.time_zone = 'Paris'
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]

View file

@ -1,6 +1,6 @@
class AddTimeStampToDossier < ActiveRecord::Migration class AddTimeStampToDossier < ActiveRecord::Migration
def change def change
add_column :dossiers, :created_at, :datetime, default: Time.now add_column :dossiers, :created_at, :datetime, default: Time.zone.now
add_column :dossiers, :updated_at, :datetime, default: Time.now add_column :dossiers, :updated_at, :datetime, default: Time.zone.now
end end
end end

View file

@ -7,7 +7,7 @@ class AddConfirmableToUserDevise < ActiveRecord::Migration[5.2]
# User.reset_column_information # Need for some types of updates, but not for update_all. # User.reset_column_information # Need for some types of updates, but not for update_all.
# To avoid a short time window between running the migration and updating all existing # To avoid a short time window between running the migration and updating all existing
# users as confirmed, do the following # users as confirmed, do the following
User.all.update_all confirmed_at: DateTime.now User.all.update_all confirmed_at: Time.zone.now
# All existing user accounts should be able to log in after this. # All existing user accounts should be able to log in after this.
end end

View file

@ -12,4 +12,4 @@ puts "Create test user '#{default_user}'"
Administration.create!(email: default_user, password: default_password) Administration.create!(email: default_user, password: default_password)
Administrateur.create!(email: default_user, password: default_password) Administrateur.create!(email: default_user, password: default_password)
Gestionnaire.create!(email: default_user, password: default_password) Gestionnaire.create!(email: default_user, password: default_password)
User.create!(email: default_user, password: default_password, confirmed_at: DateTime.now) User.create!(email: default_user, password: default_password, confirmed_at: Time.zone.now)

View file

@ -10,7 +10,7 @@ module Cellar
end end
def sign(request, key) def sign(request, key)
date = Time.now.httpdate date = Time.zone.now.httpdate
sig = signature( sig = signature(
method: request.method, method: request.method,
key: key, key: key,

View file

@ -15,7 +15,7 @@ namespace :'2017_12_05_initialize_timestamps_for_entreprises' do
entreprise.update_columns(created_at: entreprise.dossier.created_at, updated_at: entreprise.dossier.created_at) entreprise.update_columns(created_at: entreprise.dossier.created_at, updated_at: entreprise.dossier.created_at)
else else
rake_puts "dossier #{entreprise.dossier_id} is missing for entreprise #{entreprise.id}" rake_puts "dossier #{entreprise.dossier_id} is missing for entreprise #{entreprise.id}"
entreprise.update_columns(created_at: DateTime.now, updated_at: DateTime.now) entreprise.update_columns(created_at: Time.zone.now, updated_at: Time.zone.now)
end end
end end
end end

View file

@ -12,7 +12,7 @@ namespace :'2018_01_18_clean_datetime_in_champs' do
# Match "dd/mm/YYYY HH:MM" => "YYYY-mm-dd HH:MM" # Match "dd/mm/YYYY HH:MM" => "YYYY-mm-dd HH:MM"
datetime_champs.select { |c| /^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}$/ =~ c.value }.each do |c| datetime_champs.select { |c| /^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}$/ =~ c.value }.each do |c|
formated_date = DateTime.parse(c.value, "%d/%m/%Y %H:%M").strftime("%Y-%m-%d %H:%M") formated_date = Time.zone.strptime(c.value, "%d/%m/%Y %H:%M").strftime("%Y-%m-%d %H:%M")
rake_puts "cleaning #{c.value} => #{formated_date}" rake_puts "cleaning #{c.value} => #{formated_date}"
c.update_columns(value: formated_date) c.update_columns(value: formated_date)
end end

View file

@ -8,8 +8,8 @@ namespace :'2018_03_08_send_missing_accuse_reception' do
# `bug_date` and `fix_date` were determined empirically by looking at the release times, # `bug_date` and `fix_date` were determined empirically by looking at the release times,
# and checking for dossiers with a missing accusé de réception. # and checking for dossiers with a missing accusé de réception.
bug_date = DateTime.new(2018, 3, 1, 9, 50) bug_date = Time.zone.local(2018, 3, 1, 9, 50)
fix_date = DateTime.new(2018, 3, 5, 18, 40) fix_date = Time.zone.local(2018, 3, 5, 18, 40)
# Only send the accusé for dossiers that are still en construction. # Only send the accusé for dossiers that are still en construction.
# For dossiers that have moved on, other mails have been sent since, and a late # For dossiers that have moved on, other mails have been sent since, and a late

View file

@ -7,7 +7,7 @@ namespace :'2018_05_30_missed_ar_messages' do
end end
def create_commentaires(date_name, template_name, dossiers = Dossier) def create_commentaires(date_name, template_name, dossiers = Dossier)
error_range = DateTime.new(2018, 05, 28, 13, 33)..DateTime.new(2018, 05, 30, 15, 39) error_range = Time.zone.local(2018, 05, 28, 13, 33)..Time.zone.local(2018, 05, 30, 15, 39)
dossiers.includes(:procedure).where(date_name => error_range).find_each(batch_size: 100) do |dossier| dossiers.includes(:procedure).where(date_name => error_range).find_each(batch_size: 100) do |dossier|
print "#{dossier.id}\n" print "#{dossier.id}\n"

View file

@ -24,7 +24,7 @@ namespace :'2018_06_06_users_for_admins_and_gestionnaires' do
User User
.joins("INNER JOIN #{table_name} ON #{table_name}.email = users.email") .joins("INNER JOIN #{table_name} ON #{table_name}.email = users.email")
.where(confirmed_at: nil) .where(confirmed_at: nil)
.update_all(confirmed_at: DateTime.now) .update_all(confirmed_at: Time.zone.now)
rake_puts "Fixed #{count} #{table_name} with unconfirmed user" rake_puts "Fixed #{count} #{table_name} with unconfirmed user"
end end

View file

@ -7,7 +7,11 @@ namespace :'2018_09_12_fix_templates' do
end end
# 16:15 in Paris -> 14:15 UTC # 16:15 in Paris -> 14:15 UTC
DEPLOY_DATETIME = DateTime.new(2018, 9, 5, 14, 15, 0)
# rubocop:disable Rails/TimeZone
# because we are in a ruby context so Time.zone = nil
DEPLOY_DATETIME = Time.local(2018, 9, 5, 14, 15, 0)
# rubocop:enable Rails/TimeZone
def find_dossiers_with_sent_and_invalid_attestations def find_dossiers_with_sent_and_invalid_attestations
invalid_procedures_ids = AttestationTemplate invalid_procedures_ids = AttestationTemplate
@ -16,12 +20,12 @@ namespace :'2018_09_12_fix_templates' do
dossiers_with_invalid_template_ids = Dossier dossiers_with_invalid_template_ids = Dossier
.where(procedure_id: invalid_procedures_ids) .where(procedure_id: invalid_procedures_ids)
.where(processed_at: DEPLOY_DATETIME..Time.now) .where(processed_at: DEPLOY_DATETIME..Time.zone.now)
.pluck(:id) .pluck(:id)
Attestation Attestation
.includes(:dossier) .includes(:dossier)
.where(created_at: DEPLOY_DATETIME..Time.now) .where(created_at: DEPLOY_DATETIME..Time.zone.now)
.where(dossier_id: dossiers_with_invalid_template_ids) .where(dossier_id: dossiers_with_invalid_template_ids)
.map(&:dossier) .map(&:dossier)
end end

View file

@ -104,8 +104,8 @@ namespace :cloudstorage do
Rake::Task['cloudstorage:init'].invoke Rake::Task['cloudstorage:init'].invoke
@cont.objects_detail.each { |object, details| @cont.objects_detail.each { |object, details|
last_modified = DateTime.parse(details[:last_modified]) last_modified = Time.zone.parse(details[:last_modified])
@cont.delete_object(object) if last_modified.utc <= (Time.now - 2.years).utc @cont.delete_object(object) if last_modified.utc <= (Time.zone.now - 2.years).utc
} }
end end
end end

View file

@ -12,7 +12,7 @@ describe Admin::AttestationTemplatesController, type: :controller do
before do before do
sign_in admin sign_in admin
Timecop.freeze(Time.now) Timecop.freeze(Time.zone.now)
end end
after { Timecop.return } after { Timecop.return }
@ -47,7 +47,7 @@ describe Admin::AttestationTemplatesController, type: :controller do
it { expect(subject.status).to eq(200) } it { expect(subject.status).to eq(200) }
it { expect(assigns).to include(upload_params.stringify_keys) } it { expect(assigns).to include(upload_params.stringify_keys) }
it { expect(assigns[:created_at]).to eq(DateTime.now) } it { expect(assigns[:created_at]).to eq(Time.zone.now) }
it { expect(assigns(:logo).read).to eq(logo.read) } it { expect(assigns(:logo).read).to eq(logo.read) }
it { expect(assigns(:signature).read).to eq(signature.read) } it { expect(assigns(:signature).read).to eq(signature.read) }
after { procedure.attestation_template.destroy } after { procedure.attestation_template.destroy }

View file

@ -96,8 +96,8 @@ describe Admin::ProceduresController, type: :controller do
describe 'DELETE #destroy' do describe 'DELETE #destroy' do
let(:procedure_draft) { create :procedure, administrateur: admin, published_at: nil, archived_at: nil } let(:procedure_draft) { create :procedure, administrateur: admin, published_at: nil, archived_at: nil }
let(:procedure_published) { create :procedure, administrateur: admin, aasm_state: :publiee, published_at: Time.now, archived_at: nil } let(:procedure_published) { create :procedure, administrateur: admin, aasm_state: :publiee, published_at: Time.zone.now, archived_at: nil }
let(:procedure_archived) { create :procedure, administrateur: admin, aasm_state: :archivee, published_at: nil, archived_at: Time.now } let(:procedure_archived) { create :procedure, administrateur: admin, aasm_state: :archivee, published_at: nil, archived_at: Time.zone.now }
subject { delete :destroy, params: { id: procedure.id } } subject { delete :destroy, params: { id: procedure.id } }
@ -164,7 +164,7 @@ describe Admin::ProceduresController, type: :controller do
end end
context 'when procedure is published' do context 'when procedure is published' do
let(:published_at) { Time.now } let(:published_at) { Time.zone.now }
it { is_expected.to have_http_status(:success) } it { is_expected.to have_http_status(:success) }
end end

View file

@ -40,7 +40,7 @@ describe API::V1::DossiersController do
context 'when procedure is found and belongs to admin' do context 'when procedure is found and belongs to admin' do
let(:procedure_id) { procedure.id } let(:procedure_id) { procedure.id }
let(:date_creation) { Time.utc(2008, 9, 1, 10, 5, 0) } let(:date_creation) { Time.zone.local(2008, 9, 1, 10, 5, 0) }
let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, :en_construction, procedure: procedure) } } let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, :en_construction, procedure: procedure) } }
let(:body) { JSON.parse(retour.body, symbolize_names: true) } let(:body) { JSON.parse(retour.body, symbolize_names: true) }
@ -75,8 +75,8 @@ describe API::V1::DossiersController do
describe 'dossier' do describe 'dossier' do
subject { super().first } subject { super().first }
it { expect(subject[:id]).to eq(dossier.id) } it { expect(subject[:id]).to eq(dossier.id) }
it { expect(subject[:updated_at]).to eq("2008-09-01T10:05:00.000Z") } it { expect(subject[:updated_at]).to eq("2008-09-01T10:05:00.000+02:00") }
it { expect(subject[:initiated_at]).to eq("2008-09-01T10:06:00.000Z") } it { expect(subject[:initiated_at]).to eq("2008-09-01T10:06:00.000+02:00") }
it { expect(subject[:state]).to eq("initiated") } it { expect(subject[:state]).to eq("initiated") }
it { expect(subject.keys.size).to eq(4) } it { expect(subject.keys.size).to eq(4) }
end end
@ -135,7 +135,7 @@ describe API::V1::DossiersController do
context 'when dossier exists and belongs to procedure' do context 'when dossier exists and belongs to procedure' do
let(:procedure_id) { procedure.id } let(:procedure_id) { procedure.id }
let(:date_creation) { Time.utc(2008, 9, 1, 10, 5, 0) } let(:date_creation) { Time.zone.local(2008, 9, 1, 10, 5, 0) }
let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure, motivation: "Motivation") } } let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure, motivation: "Motivation") } }
let(:dossier_id) { dossier.id } let(:dossier_id) { dossier.id }
let(:body) { JSON.parse(retour.body, symbolize_names: true) } let(:body) { JSON.parse(retour.body, symbolize_names: true) }
@ -148,8 +148,8 @@ describe API::V1::DossiersController do
it { expect(subject[:id]).to eq(dossier.id) } it { expect(subject[:id]).to eq(dossier.id) }
it { expect(subject[:state]).to eq(dossier.state) } it { expect(subject[:state]).to eq(dossier.state) }
it { expect(subject[:created_at]).to eq('2008-09-01T10:05:00.000Z') } it { expect(subject[:created_at]).to eq('2008-09-01T10:05:00.000+02:00') }
it { expect(subject[:updated_at]).to eq('2008-09-01T10:05:00.000Z') } it { expect(subject[:updated_at]).to eq('2008-09-01T10:05:00.000+02:00') }
it { expect(subject[:archived]).to eq(dossier.archived) } it { expect(subject[:archived]).to eq(dossier.archived) }
it { expect(subject.keys).to match_array(field_list) } it { expect(subject.keys).to match_array(field_list) }
@ -337,7 +337,7 @@ describe API::V1::DossiersController do
it { expect(subject.size).to eq 2 } it { expect(subject.size).to eq 2 }
it { expect(subject.first[:body]).to eq 'plop' } it { expect(subject.first[:body]).to eq 'plop' }
it { expect(subject.first[:created_at]).to eq '2016-03-14T14:00:00.000Z' } it { expect(subject.first[:created_at]).to eq '2016-03-14T14:00:00.000+01:00' }
it { expect(subject.first[:email]).to eq 'plop@plip.com' } it { expect(subject.first[:email]).to eq 'plop@plip.com' }
end end

View file

@ -82,7 +82,7 @@ describe FranceConnect::ParticulierController, type: :controller do
before { subject } before { subject }
it { expect(stored_fci).to have_attributes(user_info.merge(birthdate: DateTime.parse(birthdate))) } it { expect(stored_fci).to have_attributes(user_info.merge(birthdate: Date.parse(birthdate))) }
end end
it { is_expected.to redirect_to(root_path) } it { is_expected.to redirect_to(root_path) }

View file

@ -250,11 +250,11 @@ describe NewGestionnaire::DossiersController, type: :controller do
end end
before do before do
Timecop.freeze(DateTime.now) Timecop.freeze(Time.zone.now)
expect_any_instance_of(AttestationTemplate) expect_any_instance_of(AttestationTemplate)
.to receive(:attestation_for) .to receive(:attestation_for)
.with(have_attributes(motivation: "Yallah", processed_at: DateTime.now)) .with(have_attributes(motivation: "Yallah", processed_at: Time.zone.now))
end end
after { Timecop.return } after { Timecop.return }

View file

@ -8,7 +8,7 @@ describe StatsController, type: :controller do
FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => 62.days.ago) FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => 62.days.ago)
FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => 62.days.ago) FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => 62.days.ago)
FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => 31.days.ago) FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => 31.days.ago)
FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => Time.now) FactoryBot.create(:procedure, :created_at => 2.months.ago, :updated_at => Time.zone.now)
@controller = StatsController.new @controller = StatsController.new
allow(@controller).to receive(:administration_signed_in?).and_return(false) allow(@controller).to receive(:administration_signed_in?).and_return(false)
@ -53,7 +53,7 @@ describe StatsController, type: :controller do
describe '#cumulative_hash' do describe '#cumulative_hash' do
before do before do
Timecop.freeze(Time.new(2016, 10, 2)) Timecop.freeze(Time.zone.local(2016, 10, 2))
FactoryBot.create(:procedure, :created_at => 55.days.ago, :updated_at => 43.days.ago) FactoryBot.create(:procedure, :created_at => 55.days.ago, :updated_at => 43.days.ago)
FactoryBot.create(:procedure, :created_at => 45.days.ago, :updated_at => 40.days.ago) FactoryBot.create(:procedure, :created_at => 45.days.ago, :updated_at => 40.days.ago)
FactoryBot.create(:procedure, :created_at => 45.days.ago, :updated_at => 20.days.ago) FactoryBot.create(:procedure, :created_at => 45.days.ago, :updated_at => 20.days.ago)
@ -72,9 +72,9 @@ describe StatsController, type: :controller do
it do it do
expect(subject).to eq({ expect(subject).to eq({
2.months.ago.beginning_of_month => 2, Time.utc(2016, 8, 1) => 2,
1.month.ago.beginning_of_month => 4, Time.utc(2016, 9, 1) => 4,
1.hour.ago.beginning_of_month => 5 Time.utc(2016, 10, 1) => 5
}) })
end end
end end
@ -86,8 +86,8 @@ describe StatsController, type: :controller do
it do it do
expect(subject).to eq({ expect(subject).to eq({
2.months.ago.beginning_of_month => 2, Time.utc(2016, 8, 1) => 2,
1.month.ago.beginning_of_month => 4 Time.utc(2016, 9, 1) => 4
}) })
end end
end end
@ -102,18 +102,18 @@ describe StatsController, type: :controller do
before do before do
3.times do 3.times do
create(:procedure, published_at: Time.now, administrateur: administrateur_1) create(:procedure, published_at: Time.zone.now, administrateur: administrateur_1)
end end
2.times do 2.times do
create(:procedure, published_at: Time.now, administrateur: administrateur_2) create(:procedure, published_at: Time.zone.now, administrateur: administrateur_2)
end end
8.times do 8.times do
create(:procedure, published_at: Time.now, administrateur: administrateur_3) create(:procedure, published_at: Time.zone.now, administrateur: administrateur_3)
end end
create(:procedure, published_at: Time.now, administrateur: administrateur_4) create(:procedure, published_at: Time.zone.now, administrateur: administrateur_4)
end end
let(:association){ Procedure.all } let(:association){ Procedure.all }
@ -234,7 +234,7 @@ describe StatsController, type: :controller do
let!(:avis_with_dossier) { create(:avis) } let!(:avis_with_dossier) { create(:avis) }
let!(:dossier2) { create(:dossier) } let!(:dossier2) { create(:dossier) }
before { Timecop.freeze(Time.now) } before { Timecop.freeze(Time.zone.now) }
after { Timecop.return } after { Timecop.return }
subject { StatsController.new.send(:avis_usage) } subject { StatsController.new.send(:avis_usage) }
@ -244,7 +244,7 @@ describe StatsController, type: :controller do
describe "#avis_average_answer_time" do describe "#avis_average_answer_time" do
before do before do
Timecop.freeze(Time.now) Timecop.freeze(Time.zone.now)
# 1 week ago # 1 week ago
create(:avis, answer: "voila ma réponse", created_at: 1.week.ago + 1.day, updated_at: 1.week.ago + 2.days) # 1 day create(:avis, answer: "voila ma réponse", created_at: 1.week.ago + 1.day, updated_at: 1.week.ago + 2.days) # 1 day
@ -278,7 +278,7 @@ describe StatsController, type: :controller do
subject { StatsController.new.send(:avis_answer_percentages) } subject { StatsController.new.send(:avis_answer_percentages) }
before { Timecop.freeze(Time.now) } before { Timecop.freeze(Time.zone.now) }
after { Timecop.return } after { Timecop.return }
it { is_expected.to match [[3.weeks.ago.to_i, 0], [2.weeks.ago.to_i, 0], [1.week.ago.to_i, 66.67]] } it { is_expected.to match [[3.weeks.ago.to_i, 0], [2.weeks.ago.to_i, 0], [1.week.ago.to_i, 66.67]] }
@ -289,7 +289,7 @@ describe StatsController, type: :controller do
let!(:dossier2) { create(:dossier, processed_at: 1.week.ago) } let!(:dossier2) { create(:dossier, processed_at: 1.week.ago) }
let!(:dossier3) { create(:dossier, processed_at: 1.week.ago) } let!(:dossier3) { create(:dossier, processed_at: 1.week.ago) }
before { Timecop.freeze(Time.now) } before { Timecop.freeze(Time.zone.now) }
after { Timecop.return } after { Timecop.return }
subject { StatsController.new.send(:motivation_usage_dossier) } subject { StatsController.new.send(:motivation_usage_dossier) }
@ -303,7 +303,7 @@ describe StatsController, type: :controller do
let!(:dossier2) { create(:dossier, processed_at: 1.week.ago) } let!(:dossier2) { create(:dossier, processed_at: 1.week.ago) }
let!(:dossier3) { create(:dossier, processed_at: 1.week.ago) } let!(:dossier3) { create(:dossier, processed_at: 1.week.ago) }
before { Timecop.freeze(Time.now) } before { Timecop.freeze(Time.zone.now) }
after { Timecop.return } after { Timecop.return }
subject { StatsController.new.send(:motivation_usage_procedure) } subject { StatsController.new.send(:motivation_usage_procedure) }
@ -316,7 +316,7 @@ describe StatsController, type: :controller do
let!(:procedure2) { create(:procedure, created_at: 2.weeks.ago) } let!(:procedure2) { create(:procedure, created_at: 2.weeks.ago) }
let!(:procedure3) { create(:procedure, created_at: 2.weeks.ago, cloned_from_library: true) } let!(:procedure3) { create(:procedure, created_at: 2.weeks.ago, cloned_from_library: true) }
before { Timecop.freeze(Time.now) } before { Timecop.freeze(Time.zone.now) }
after { Timecop.return } after { Timecop.return }
subject { StatsController.new.send(:cloned_from_library_procedures_ratio) } subject { StatsController.new.send(:cloned_from_library_procedures_ratio) }

View file

@ -57,7 +57,7 @@ describe Users::RegistrationsController, type: :controller do
end end
context 'and the user is confirmed' do context 'and the user is confirmed' do
let(:confirmed_at) { DateTime.now } let(:confirmed_at) { Time.zone.now }
before { subject } before { subject }

View file

@ -2,8 +2,8 @@ require 'spec_helper'
describe DossierDecorator do describe DossierDecorator do
let(:dossier) do let(:dossier) do
dossier = create(:dossier, created_at: Time.new(2015, 12, 24, 14, 10)) dossier = create(:dossier, created_at: Time.zone.local(2015, 12, 24, 14, 10))
dossier.update_column('updated_at', Time.new(2015, 12, 24, 14, 10)) dossier.update_column('updated_at', Time.zone.local(2015, 12, 24, 14, 10))
dossier dossier
end end

View file

@ -1,8 +1,8 @@
require 'spec_helper' require 'spec_helper'
describe ProcedureDecorator do describe ProcedureDecorator do
let(:published_at) { Time.new(2017, 12, 24, 14, 12) } let(:published_at) { Time.zone.local(2017, 12, 24, 14, 12) }
let(:procedure) { create(:procedure, published_at: published_at, created_at: Time.new(2015, 12, 24, 14, 10)) } let(:procedure) { create(:procedure, published_at: published_at, created_at: Time.zone.local(2015, 12, 24, 14, 10)) }
let!(:procedure_path) { create(:procedure_path, administrateur: create(:administrateur), procedure: procedure) } let!(:procedure_path) { create(:procedure_path, administrateur: create(:administrateur), procedure: procedure) }
subject { procedure.decorate } subject { procedure.decorate }

View file

@ -2,9 +2,9 @@ require 'spec_helper'
describe ProceduresDecorator do describe ProceduresDecorator do
before do before do
create(:procedure, :published, created_at: Time.new(2015, 12, 24, 14, 10)) create(:procedure, :published, created_at: Time.zone.local(2015, 12, 24, 14, 10))
create(:procedure, :published, created_at: Time.new(2015, 12, 24, 14, 10)) create(:procedure, :published, created_at: Time.zone.local(2015, 12, 24, 14, 10))
create(:procedure, :published, created_at: Time.new(2015, 12, 24, 14, 10)) create(:procedure, :published, created_at: Time.zone.local(2015, 12, 24, 14, 10))
end end
let(:procedure) { Procedure.all.page(1) } let(:procedure) { Procedure.all.page(1) }

View file

@ -2,7 +2,7 @@ FactoryBot.define do
factory :deleted_dossier do factory :deleted_dossier do
dossier_id { 1111 } dossier_id { 1111 }
state { Dossier.states.fetch(:en_construction) } state { Dossier.states.fetch(:en_construction) }
deleted_at { DateTime.now } deleted_at { Time.zone.now }
association :procedure, :published association :procedure, :published
end end

View file

@ -155,7 +155,7 @@ FactoryBot.define do
trait :whitelisted do trait :whitelisted do
after(:build) do |procedure, _evaluator| after(:build) do |procedure, _evaluator|
procedure.update(whitelisted_at: DateTime.now) procedure.update(whitelisted_at: Time.zone.now)
end end
end end

View file

@ -3,6 +3,6 @@ FactoryBot.define do
factory :user do factory :user do
email { generate(:user_email) } email { generate(:user_email) }
password { 'password' } password { 'password' }
confirmed_at { DateTime.now } confirmed_at { Time.zone.now }
end end
end end

View file

@ -35,7 +35,7 @@ feature "procedure filters" do
add_column("Créé le") add_column("Créé le")
within ".dossiers-table" do within ".dossiers-table" do
expect(page).to have_link("Créé le") expect(page).to have_link("Créé le")
expect(page).to have_link(new_unfollow_dossier.created_at) expect(page).to have_link(new_unfollow_dossier.created_at.strftime('%d/%m/%Y'))
end end
end end

View file

@ -23,7 +23,7 @@ feature 'The user' do
fill_in('text', with: 'super texte') fill_in('text', with: 'super texte')
fill_in('textarea', with: 'super textarea') fill_in('textarea', with: 'super textarea')
fill_in('date', with: '12/12/2012') fill_in('date', with: '12/12/2012')
select_date_and_time(DateTime.parse('06/01/1985 7h05'), form_id_for('datetime')) select_date_and_time(Time.zone.parse('06/01/1985 7h05'), form_id_for('datetime'))
fill_in('number', with: '42') fill_in('number', with: '42')
check('checkbox') check('checkbox')
choose('Madame') choose('Madame')
@ -67,7 +67,7 @@ feature 'The user' do
expect(page).to have_field('text', with: 'super texte') expect(page).to have_field('text', with: 'super texte')
expect(page).to have_field('textarea', with: 'super textarea') expect(page).to have_field('textarea', with: 'super textarea')
expect(page).to have_field('date', with: '2012-12-12') expect(page).to have_field('date', with: '2012-12-12')
check_date_and_time(DateTime.parse('06/01/1985 7:05'), form_id_for('datetime')) check_date_and_time(Time.zone.parse('06/01/1985 7:05'), form_id_for('datetime'))
expect(page).to have_field('number', with: '42') expect(page).to have_field('number', with: '42')
expect(page).to have_checked_field('checkbox') expect(page).to have_checked_field('checkbox')
expect(page).to have_checked_field('Madame') expect(page).to have_checked_field('Madame')

View file

@ -19,7 +19,7 @@ describe 'Dossier details:' do
describe "the user can see the mean time they are expected to wait" do describe "the user can see the mean time they are expected to wait" do
context "when the dossier is in construction" do context "when the dossier is in construction" do
before do before do
other_dossier = create(:dossier, :accepte, :for_individual, procedure: procedure, en_construction_at: 10.days.ago, en_instruction_at: Time.now) other_dossier = create(:dossier, :accepte, :for_individual, procedure: procedure, en_construction_at: 10.days.ago, en_instruction_at: Time.zone.now)
visit dossier_path(dossier) visit dossier_path(dossier)
end end
@ -30,7 +30,7 @@ describe 'Dossier details:' do
let(:dossier) { create(:dossier, :en_instruction, :for_individual, :with_commentaires, user: user, procedure: procedure) } let(:dossier) { create(:dossier, :en_instruction, :for_individual, :with_commentaires, user: user, procedure: procedure) }
before do before do
other_dossier = create(:dossier, :accepte, :for_individual, procedure: procedure, en_instruction_at: 2.months.ago, processed_at: Time.now) other_dossier = create(:dossier, :accepte, :for_individual, procedure: procedure, en_instruction_at: 2.months.ago, processed_at: Time.zone.now)
visit dossier_path(dossier) visit dossier_path(dossier)
end end

View file

@ -49,7 +49,7 @@ RSpec.describe CommentaireHelper, type: :helper do
end end
describe '.commentaire_date' do describe '.commentaire_date' do
let(:present_date) { Time.local(2018, 9, 2, 10, 5, 0) } let(:present_date) { Time.zone.local(2018, 9, 2, 10, 5, 0) }
let(:creation_date) { present_date } let(:creation_date) { present_date }
let(:commentaire) do let(:commentaire) do
Timecop.freeze(creation_date) { create(:commentaire, email: "michel@pref.fr") } Timecop.freeze(creation_date) { create(:commentaire, email: "michel@pref.fr") }
@ -71,7 +71,7 @@ RSpec.describe CommentaireHelper, type: :helper do
end end
context 'when formatting the first day of the month' do context 'when formatting the first day of the month' do
let(:present_date) { Time.local(2018, 9, 1, 10, 5, 0) } let(:present_date) { Time.zone.local(2018, 9, 1, 10, 5, 0) }
it 'includes the ordinal' do it 'includes the ordinal' do
expect(subject).to eq 'le 1er septembre à 10 h 05' expect(subject).to eq 'le 1er septembre à 10 h 05'
end end

View file

@ -2,7 +2,7 @@ require 'rails_helper'
RSpec.describe DossierHelper, type: :helper do RSpec.describe DossierHelper, type: :helper do
describe ".highlight_if_unseen_class" do describe ".highlight_if_unseen_class" do
let(:seen_at) { DateTime.now } let(:seen_at) { Time.zone.now }
subject { highlight_if_unseen_class(seen_at, updated_at) } subject { highlight_if_unseen_class(seen_at, updated_at) }
@ -19,7 +19,7 @@ RSpec.describe DossierHelper, type: :helper do
end end
context "when there is no last seen datetime" do context "when there is no last seen datetime" do
let(:updated_at) { DateTime.now } let(:updated_at) { Time.zone.now }
let(:seen_at) { nil } let(:seen_at) { nil }
it { is_expected.to eq nil } it { is_expected.to eq nil }

View file

@ -8,7 +8,7 @@ RSpec.describe Administrateurs::ActivateBeforeExpirationJob, type: :job do
subject { Administrateurs::ActivateBeforeExpirationJob.perform_now } subject { Administrateurs::ActivateBeforeExpirationJob.perform_now }
before do before do
Timecop.freeze(DateTime.new(2018, 03, 20)) Timecop.freeze(Time.zone.local(2018, 03, 20))
administrateur.reload administrateur.reload
allow(AdministrateurMailer).to receive(:activate_before_expiration).and_return(mailer_double) allow(AdministrateurMailer).to receive(:activate_before_expiration).and_return(mailer_double)
end end
@ -25,7 +25,7 @@ RSpec.describe Administrateurs::ActivateBeforeExpirationJob, type: :job do
context "created a long time ago" do context "created a long time ago" do
before do before do
administrateur.update_columns(created_at: DateTime.new(2018, 03, 10)) administrateur.update_columns(created_at: Time.zone.local(2018, 03, 10))
subject subject
end end
@ -34,7 +34,7 @@ RSpec.describe Administrateurs::ActivateBeforeExpirationJob, type: :job do
context "created 3 days ago" do context "created 3 days ago" do
before do before do
administrateur.update_columns(created_at: DateTime.new(2018, 03, 17, 20, 00)) administrateur.update_columns(created_at: Time.zone.local(2018, 03, 17, 20, 00))
subject subject
end end
@ -52,7 +52,7 @@ RSpec.describe Administrateurs::ActivateBeforeExpirationJob, type: :job do
context "created a long time ago" do context "created a long time ago" do
before do before do
administrateur.update_columns(created_at: DateTime.new(2018, 03, 10)) administrateur.update_columns(created_at: Time.zone.local(2018, 03, 10))
subject subject
end end
@ -61,7 +61,7 @@ RSpec.describe Administrateurs::ActivateBeforeExpirationJob, type: :job do
context "created 2 days ago" do context "created 2 days ago" do
before do before do
administrateur.update_columns(created_at: DateTime.new(2018, 03, 18, 20, 00)) administrateur.update_columns(created_at: Time.zone.local(2018, 03, 18, 20, 00))
subject subject
end end

View file

@ -36,7 +36,7 @@ describe 'AmazonV2RequestSigner' do
before { request_signer.sign(subject, 'fichier') } before { request_signer.sign(subject, 'fichier') }
it { expect(subject['date']).to eq(Time.now.httpdate) } it { expect(subject['date']).to eq(Time.zone.now.httpdate) }
it { expect(subject['authorization']).to eq('AWS AKIAJFTRSGRH3RXX6D5Q:nkvviwZYb1V9HDrKyJZmY3Z8sSA=') } it { expect(subject['authorization']).to eq('AWS AKIAJFTRSGRH3RXX6D5Q:nkvviwZYb1V9HDrKyJZmY3Z8sSA=') }
end end
end end

View file

@ -4,8 +4,8 @@ describe '2018_03_06_clean_html_textareas#clean' do
let(:procedure) { create(:procedure) } let(:procedure) { create(:procedure) }
let(:type_champ) { create(:type_de_champ_textarea, procedure: procedure) } let(:type_champ) { create(:type_de_champ_textarea, procedure: procedure) }
let(:champ) { type_champ.champ.create(value: "<p>Gnahar<br>greu bouahaha</p>") } let(:champ) { type_champ.champ.create(value: "<p>Gnahar<br>greu bouahaha</p>") }
let(:champ_date) { Time.local(1995) } let(:champ_date) { Time.zone.local(1995) }
let(:rake_date) { Time.local(2018) } let(:rake_date) { Time.zone.local(2018) }
let(:rake_task) { Rake::Task['2018_03_06_clean_html_textareas:clean'] } let(:rake_task) { Rake::Task['2018_03_06_clean_html_textareas:clean'] }
before do before do

View file

@ -25,7 +25,7 @@ RSpec.describe GestionnaireMailer, type: :mailer do
dossiers_en_instruction_description: 'desc') dossiers_en_instruction_description: 'desc')
{ {
start_date: DateTime.now, start_date: Time.zone.now,
procedure_overviews: [procedure_overview] procedure_overviews: [procedure_overview]
} }
end end

View file

@ -115,7 +115,7 @@ describe AttestationTemplate, type: :model do
before do before do
@logo = File.open('spec/fixtures/files/white.png') @logo = File.open('spec/fixtures/files/white.png')
@signature = File.open('spec/fixtures/files/black.png') @signature = File.open('spec/fixtures/files/black.png')
Timecop.freeze(Time.now) Timecop.freeze(Time.zone.now)
end end
after do after do

View file

@ -32,7 +32,7 @@ describe TagsSubstitutionConcern, type: :model do
let(:etablissement) { create(:etablissement) } let(:etablissement) { create(:etablissement) }
let!(:dossier) { create(:dossier, procedure: procedure, individual: individual, etablissement: etablissement) } let!(:dossier) { create(:dossier, procedure: procedure, individual: individual, etablissement: etablissement) }
before { Timecop.freeze(Time.now) } before { Timecop.freeze(Time.zone.now) }
subject { template_concern.send(:replace_tags, template, dossier) } subject { template_concern.send(:replace_tags, template, dossier) }
@ -187,9 +187,9 @@ describe TagsSubstitutionConcern, type: :model do
context "when using a date tag" do context "when using a date tag" do
before do before do
dossier.en_construction_at = DateTime.new(2001, 2, 3) dossier.en_construction_at = Time.zone.local(2001, 2, 3)
dossier.en_instruction_at = DateTime.new(2004, 5, 6) dossier.en_instruction_at = Time.zone.local(2004, 5, 6)
dossier.processed_at = DateTime.new(2007, 8, 9) dossier.processed_at = Time.zone.local(2007, 8, 9)
end end
context "with date de dépôt" do context "with date de dépôt" do

View file

@ -479,9 +479,9 @@ describe Dossier do
end end
context 'when they are a lot of advice' do context 'when they are a lot of advice' do
let!(:avis_1) { Avis.create(dossier: dossier, claimant: expert_1, gestionnaire: expert_2, confidentiel: false, created_at: DateTime.parse('10/01/2010')) } let!(:avis_1) { Avis.create(dossier: dossier, claimant: expert_1, gestionnaire: expert_2, confidentiel: false, created_at: Time.zone.parse('10/01/2010')) }
let!(:avis_2) { Avis.create(dossier: dossier, claimant: expert_1, gestionnaire: expert_2, confidentiel: false, created_at: DateTime.parse('9/01/2010')) } let!(:avis_2) { Avis.create(dossier: dossier, claimant: expert_1, gestionnaire: expert_2, confidentiel: false, created_at: Time.zone.parse('9/01/2010')) }
let!(:avis_3) { Avis.create(dossier: dossier, claimant: expert_1, gestionnaire: expert_2, confidentiel: false, created_at: DateTime.parse('11/01/2010')) } let!(:avis_3) { Avis.create(dossier: dossier, claimant: expert_1, gestionnaire: expert_2, confidentiel: false, created_at: Time.zone.parse('11/01/2010')) }
it { expect(dossier.avis_for(gestionnaire)).to match([avis_2, avis_1, avis_3]) } it { expect(dossier.avis_for(gestionnaire)).to match([avis_2, avis_1, avis_3]) }
it { expect(dossier.avis_for(expert_1)).to match([avis_2, avis_1, avis_3]) } it { expect(dossier.avis_for(expert_1)).to match([avis_2, avis_1, avis_3]) }
@ -491,7 +491,7 @@ describe Dossier do
describe '#update_state_dates' do describe '#update_state_dates' do
let(:state) { Dossier.states.fetch(:brouillon) } let(:state) { Dossier.states.fetch(:brouillon) }
let(:dossier) { create(:dossier, state: state) } let(:dossier) { create(:dossier, state: state) }
let(:beginning_of_day) { Time.now.beginning_of_day } let(:beginning_of_day) { Time.zone.now.beginning_of_day }
before { Timecop.freeze(beginning_of_day) } before { Timecop.freeze(beginning_of_day) }
after { Timecop.return } after { Timecop.return }
@ -566,9 +566,9 @@ describe Dossier do
describe '.downloadable_sorted' do describe '.downloadable_sorted' do
let(:procedure) { create(:procedure) } let(:procedure) { create(:procedure) }
let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:brouillon)) } let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:brouillon)) }
let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:en_construction), en_construction_at: DateTime.parse('03/01/2010')) } let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:en_construction), en_construction_at: Time.zone.parse('03/01/2010')) }
let!(:dossier3) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:en_instruction), en_construction_at: DateTime.parse('01/01/2010')) } let!(:dossier3) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:en_instruction), en_construction_at: Time.zone.parse('01/01/2010')) }
let!(:dossier4) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:en_instruction), archived: true, en_construction_at: DateTime.parse('02/01/2010')) } let!(:dossier4) { create(:dossier, :with_entreprise, procedure: procedure, state: Dossier.states.fetch(:en_instruction), archived: true, en_construction_at: Time.zone.parse('02/01/2010')) }
subject { procedure.dossiers.downloadable_sorted } subject { procedure.dossiers.downloadable_sorted }
@ -734,7 +734,7 @@ describe Dossier do
describe 'updated_at' do describe 'updated_at' do
let!(:dossier) { create(:dossier) } let!(:dossier) { create(:dossier) }
let(:modif_date) { DateTime.parse('01/01/2100') } let(:modif_date) { Time.zone.parse('01/01/2100') }
before { Timecop.freeze(modif_date) } before { Timecop.freeze(modif_date) }
after { Timecop.return } after { Timecop.return }
@ -982,10 +982,10 @@ describe Dossier do
context "retention date" do context "retention date" do
let(:procedure) { create(:procedure, duree_conservation_dossiers_dans_ds: 6) } let(:procedure) { create(:procedure, duree_conservation_dossiers_dans_ds: 6) }
let(:uninstructed_dossier) { create(:dossier, :en_construction, procedure: procedure) } let(:uninstructed_dossier) { create(:dossier, :en_construction, procedure: procedure) }
let(:young_dossier) { create(:dossier, :en_instruction, en_instruction_at: DateTime.now, procedure: procedure) } let(:young_dossier) { create(:dossier, :en_instruction, en_instruction_at: Time.zone.now, procedure: procedure) }
let(:just_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: 6.months.ago, procedure: procedure) } let(:just_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: 6.months.ago, procedure: procedure) }
let(:long_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: 1.year.ago, procedure: procedure) } let(:long_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: 1.year.ago, procedure: procedure) }
let(:modif_date) { DateTime.parse('01/01/2100') } let(:modif_date) { Time.zone.parse('01/01/2100') }
before { Timecop.freeze(modif_date) } before { Timecop.freeze(modif_date) }
after { Timecop.return } after { Timecop.return }
@ -993,7 +993,7 @@ describe Dossier do
describe "#retention_end_date" do describe "#retention_end_date" do
it { expect(uninstructed_dossier.retention_end_date).to be_nil } it { expect(uninstructed_dossier.retention_end_date).to be_nil }
it { expect(young_dossier.retention_end_date).to eq(6.months.from_now) } it { expect(young_dossier.retention_end_date).to eq(6.months.from_now) }
it { expect(just_expired_dossier.retention_end_date).to eq(DateTime.now) } it { expect(just_expired_dossier.retention_end_date).to eq(Time.zone.now) }
it { expect(long_expired_dossier.retention_end_date).to eq(6.months.ago) } it { expect(long_expired_dossier.retention_end_date).to eq(6.months.ago) }
end end

View file

@ -138,8 +138,8 @@ describe Gestionnaire, type: :model do
describe 'last_week_overview' do describe 'last_week_overview' do
let!(:gestionnaire2) { create(:gestionnaire) } let!(:gestionnaire2) { create(:gestionnaire) }
subject { gestionnaire2.last_week_overview } subject { gestionnaire2.last_week_overview }
let(:friday) { DateTime.new(2017, 5, 12) } let(:friday) { Time.zone.local(2017, 5, 12) }
let(:monday) { DateTime.now.beginning_of_week } let(:monday) { Time.zone.now.beginning_of_week }
before { Timecop.freeze(friday) } before { Timecop.freeze(friday) }
after { Timecop.return } after { Timecop.return }
@ -313,7 +313,7 @@ describe Gestionnaire, type: :model do
context 'when gestionnaire update it s public champs last seen' do context 'when gestionnaire update it s public champs last seen' do
let(:follow) { gestionnaire.follows.find_by(dossier: dossier) } let(:follow) { gestionnaire.follows.find_by(dossier: dossier) }
before { follow.update_attribute('demande_seen_at', DateTime.now) } before { follow.update_attribute('demande_seen_at', Time.zone.now) }
it { is_expected.to match([]) } it { is_expected.to match([]) }
it { expect(gestionnaire_2.notifications_for_procedure(procedure)).to match([dossier.id]) } it { expect(gestionnaire_2.notifications_for_procedure(procedure)).to match([dossier.id]) }
@ -376,7 +376,7 @@ describe Gestionnaire, type: :model do
describe '#mark_tab_as_seen' do describe '#mark_tab_as_seen' do
let!(:dossier) { create(:dossier, :followed, state: Dossier.states.fetch(:en_construction)) } let!(:dossier) { create(:dossier, :followed, state: Dossier.states.fetch(:en_construction)) }
let(:gestionnaire) { dossier.follows.first.gestionnaire } let(:gestionnaire) { dossier.follows.first.gestionnaire }
let(:freeze_date) { DateTime.parse('12/12/2012') } let(:freeze_date) { Time.zone.parse('12/12/2012') }
context 'when demande is acknowledged' do context 'when demande is acknowledged' do
let(:follow) { gestionnaire.follows.find_by(dossier: dossier) } let(:follow) { gestionnaire.follows.find_by(dossier: dossier) }

View file

@ -2,8 +2,8 @@ require 'spec_helper'
describe ProcedureOverview, type: :model do describe ProcedureOverview, type: :model do
let(:procedure) { create(:procedure, libelle: 'libelle') } let(:procedure) { create(:procedure, libelle: 'libelle') }
let(:friday) { DateTime.new(2017, 5, 12) } # vendredi 12 mai 2017, de la semaine du 8 mai let(:friday) { Time.zone.local(2017, 5, 12) } # vendredi 12 mai 2017, de la semaine du 8 mai
let(:monday) { DateTime.new(2017, 5, 8) } let(:monday) { Time.zone.local(2017, 5, 8) }
before { Timecop.freeze(friday) } before { Timecop.freeze(friday) }
after { Timecop.return } after { Timecop.return }

View file

@ -133,25 +133,25 @@ describe ProcedurePresentation do
context 'for created_at column' do context 'for created_at column' do
let(:column) { 'created_at' } let(:column) { 'created_at' }
let(:dossier) { Timecop.freeze(DateTime.new(1992, 3, 22)) { create(:dossier, procedure: procedure) } } let(:dossier) { Timecop.freeze(Time.zone.local(1992, 3, 22)) { create(:dossier, procedure: procedure) } }
it { is_expected.to eq(DateTime.new(1992, 3, 22)) } it { is_expected.to eq(Time.zone.local(1992, 3, 22).strftime('%d/%m/%Y')) }
end end
context 'for en_construction_at column' do context 'for en_construction_at column' do
let(:column) { 'en_construction_at' } let(:column) { 'en_construction_at' }
let(:dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: DateTime.new(2018, 10, 17)) } let(:dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2018, 10, 17)) }
it { is_expected.to eq(DateTime.new(2018, 10, 17)) } it { is_expected.to eq(Time.zone.local(2018, 10, 17).strftime('%d/%m/%Y')) }
end end
context 'for updated_at column' do context 'for updated_at column' do
let(:column) { 'updated_at' } let(:column) { 'updated_at' }
let(:dossier) { create(:dossier, procedure: procedure) } let(:dossier) { create(:dossier, procedure: procedure) }
before { dossier.touch(time: DateTime.new(2018, 9, 25)) } before { dossier.touch(time: Time.zone.local(2018, 9, 25)) }
it { is_expected.to eq(DateTime.new(2018, 9, 25)) } it { is_expected.to eq(Time.zone.local(2018, 9, 25).strftime('%d/%m/%Y')) }
end end
end end
@ -236,11 +236,11 @@ describe ProcedurePresentation do
let!(:older_dossier) { create(:dossier, :en_construction, procedure: procedure) } let!(:older_dossier) { create(:dossier, :en_construction, procedure: procedure) }
before do before do
notified_dossier.champs.first.touch(time: DateTime.new(2018, 9, 20)) notified_dossier.champs.first.touch(time: Time.zone.local(2018, 9, 20))
create(:follow, gestionnaire: gestionnaire, dossier: notified_dossier, demande_seen_at: DateTime.new(2018, 9, 10)) create(:follow, gestionnaire: gestionnaire, dossier: notified_dossier, demande_seen_at: Time.zone.local(2018, 9, 10))
notified_dossier.touch(time: DateTime.new(2018, 9, 20)) notified_dossier.touch(time: Time.zone.local(2018, 9, 20))
recent_dossier.touch(time: DateTime.new(2018, 9, 25)) recent_dossier.touch(time: Time.zone.local(2018, 9, 25))
older_dossier.touch(time: DateTime.new(2018, 5, 13)) older_dossier.touch(time: Time.zone.local(2018, 5, 13))
end end
context 'in ascending order' do context 'in ascending order' do
@ -269,16 +269,16 @@ describe ProcedurePresentation do
context 'for created_at column' do context 'for created_at column' do
let(:column) { 'created_at' } let(:column) { 'created_at' }
let!(:recent_dossier) { Timecop.freeze(DateTime.new(2018, 10, 17)) { create(:dossier, procedure: procedure) } } let!(:recent_dossier) { Timecop.freeze(Time.zone.local(2018, 10, 17)) { create(:dossier, procedure: procedure) } }
let!(:older_dossier) { Timecop.freeze(DateTime.new(2003, 11, 11)) { create(:dossier, procedure: procedure) } } let!(:older_dossier) { Timecop.freeze(Time.zone.local(2003, 11, 11)) { create(:dossier, procedure: procedure) } }
it { is_expected.to eq([older_dossier, recent_dossier].map(&:id)) } it { is_expected.to eq([older_dossier, recent_dossier].map(&:id)) }
end end
context 'for en_construction_at column' do context 'for en_construction_at column' do
let(:column) { 'en_construction_at' } let(:column) { 'en_construction_at' }
let!(:recent_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: DateTime.new(2018, 10, 17)) } let!(:recent_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2018, 10, 17)) }
let!(:older_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: DateTime.new(2013, 1, 1)) } let!(:older_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2013, 1, 1)) }
it { is_expected.to eq([older_dossier, recent_dossier].map(&:id)) } it { is_expected.to eq([older_dossier, recent_dossier].map(&:id)) }
end end
@ -289,8 +289,8 @@ describe ProcedurePresentation do
let(:older_dossier) { create(:dossier, procedure: procedure) } let(:older_dossier) { create(:dossier, procedure: procedure) }
before do before do
recent_dossier.touch(time: DateTime.new(2018, 9, 25)) recent_dossier.touch(time: Time.zone.local(2018, 9, 25))
older_dossier.touch(time: DateTime.new(2018, 5, 13)) older_dossier.touch(time: Time.zone.local(2018, 5, 13))
end end
it { is_expected.to eq([older_dossier, recent_dossier].map(&:id)) } it { is_expected.to eq([older_dossier, recent_dossier].map(&:id)) }
@ -377,16 +377,16 @@ describe ProcedurePresentation do
context 'for self table' do context 'for self table' do
context 'for created_at column' do context 'for created_at column' do
let!(:kept_dossier) { create(:dossier, procedure: procedure, created_at: DateTime.new(2018, 9, 18, 14, 28)) } let!(:kept_dossier) { create(:dossier, procedure: procedure, created_at: Time.zone.local(2018, 9, 18, 14, 28)) }
let!(:discarded_dossier) { create(:dossier, procedure: procedure, created_at: DateTime.new(2018, 9, 17, 23, 59)) } let!(:discarded_dossier) { create(:dossier, procedure: procedure, created_at: Time.zone.local(2018, 9, 17, 23, 59)) }
let(:filter) { [{ 'table' => 'self', 'column' => 'created_at', 'value' => '18/9/2018' }] } let(:filter) { [{ 'table' => 'self', 'column' => 'created_at', 'value' => '18/9/2018' }] }
it { is_expected.to contain_exactly(kept_dossier.id) } it { is_expected.to contain_exactly(kept_dossier.id) }
end end
context 'for en_construction_at column' do context 'for en_construction_at column' do
let!(:kept_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: DateTime.new(2018, 10, 17)) } let!(:kept_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2018, 10, 17)) }
let!(:discarded_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: DateTime.new(2013, 1, 1)) } let!(:discarded_dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: Time.zone.local(2013, 1, 1)) }
let(:filter) { [{ 'table' => 'self', 'column' => 'en_construction_at', 'value' => '17/10/2018' }] } let(:filter) { [{ 'table' => 'self', 'column' => 'en_construction_at', 'value' => '17/10/2018' }] }
it { is_expected.to contain_exactly(kept_dossier.id) } it { is_expected.to contain_exactly(kept_dossier.id) }
@ -398,12 +398,17 @@ describe ProcedurePresentation do
let(:filter) { [{ 'table' => 'self', 'column' => 'updated_at', 'value' => '18/9/2018' }] } let(:filter) { [{ 'table' => 'self', 'column' => 'updated_at', 'value' => '18/9/2018' }] }
before do before do
kept_dossier.touch(time: DateTime.new(2018, 9, 18, 14, 28)) kept_dossier.touch(time: Time.zone.local(2018, 9, 18, 14, 28))
discarded_dossier.touch(time: DateTime.new(2018, 9, 17, 23, 59)) discarded_dossier.touch(time: Time.zone.local(2018, 9, 17, 23, 59))
end end
it { is_expected.to contain_exactly(kept_dossier.id) } it { is_expected.to contain_exactly(kept_dossier.id) }
end end
context 'for a malformed date' do
let(:filter) { [{ 'table' => 'self', 'column' => 'updated_at', 'value' => 'malformed date' }] }
it { is_expected.to match([]) }
end
end end
context 'for type_de_champ table' do context 'for type_de_champ table' do
@ -436,8 +441,8 @@ describe ProcedurePresentation do
context 'for etablissement table' do context 'for etablissement table' do
context 'for entreprise_date_creation column' do context 'for entreprise_date_creation column' do
let!(:kept_dossier) { create(:dossier, procedure: procedure, etablissement: create(:etablissement, entreprise_date_creation: DateTime.new(2018, 6, 21))) } let!(:kept_dossier) { create(:dossier, procedure: procedure, etablissement: create(:etablissement, entreprise_date_creation: Time.zone.local(2018, 6, 21))) }
let!(:discarded_dossier) { create(:dossier, procedure: procedure, etablissement: create(:etablissement, entreprise_date_creation: DateTime.new(2008, 6, 21))) } let!(:discarded_dossier) { create(:dossier, procedure: procedure, etablissement: create(:etablissement, entreprise_date_creation: Time.zone.local(2008, 6, 21))) }
let(:filter) { [{ 'table' => 'etablissement', 'column' => 'entreprise_date_creation', 'value' => '21/6/2018' }] } let(:filter) { [{ 'table' => 'etablissement', 'column' => 'entreprise_date_creation', 'value' => '21/6/2018' }] }
it { is_expected.to contain_exactly(kept_dossier.id) } it { is_expected.to contain_exactly(kept_dossier.id) }

View file

@ -429,7 +429,7 @@ describe Procedure do
describe '#publish!' do describe '#publish!' do
let(:procedure) { create(:procedure) } let(:procedure) { create(:procedure) }
let(:now) { Time.now.beginning_of_minute } let(:now) { Time.zone.now.beginning_of_minute }
before do before do
Timecop.freeze(now) Timecop.freeze(now)
@ -446,8 +446,8 @@ describe Procedure do
describe "#brouillon?" do describe "#brouillon?" do
let(:procedure_brouillon) { Procedure.new() } let(:procedure_brouillon) { Procedure.new() }
let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.now) } let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.zone.now) }
let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.now, archived_at: Time.now) } let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.zone.now, archived_at: Time.zone.now) }
it { expect(procedure_brouillon.brouillon?).to be_truthy } it { expect(procedure_brouillon.brouillon?).to be_truthy }
it { expect(procedure_publiee.brouillon?).to be_falsey } it { expect(procedure_publiee.brouillon?).to be_falsey }
@ -456,8 +456,8 @@ describe Procedure do
describe "#publiee?" do describe "#publiee?" do
let(:procedure_brouillon) { Procedure.new() } let(:procedure_brouillon) { Procedure.new() }
let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.now) } let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.zone.now) }
let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.now, archived_at: Time.now) } let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.zone.now, archived_at: Time.zone.now) }
it { expect(procedure_brouillon.publiee?).to be_falsey } it { expect(procedure_brouillon.publiee?).to be_falsey }
it { expect(procedure_publiee.publiee?).to be_truthy } it { expect(procedure_publiee.publiee?).to be_truthy }
@ -466,8 +466,8 @@ describe Procedure do
describe "#archivee?" do describe "#archivee?" do
let(:procedure_brouillon) { Procedure.new() } let(:procedure_brouillon) { Procedure.new() }
let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.now) } let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.zone.now) }
let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.now, archived_at: Time.now) } let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.zone.now, archived_at: Time.zone.now) }
it { expect(procedure_brouillon.archivee?).to be_falsey } it { expect(procedure_brouillon.archivee?).to be_falsey }
it { expect(procedure_publiee.archivee?).to be_falsey } it { expect(procedure_publiee.archivee?).to be_falsey }
@ -476,8 +476,8 @@ describe Procedure do
describe "#publiee_ou_archivee?" do describe "#publiee_ou_archivee?" do
let(:procedure_brouillon) { Procedure.new() } let(:procedure_brouillon) { Procedure.new() }
let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.now) } let(:procedure_publiee) { Procedure.new(aasm_state: :publiee, published_at: Time.zone.now) }
let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.now, archived_at: Time.now) } let(:procedure_archivee) { Procedure.new(aasm_state: :archivee, published_at: Time.zone.now, archived_at: Time.zone.now) }
it { expect(procedure_brouillon.publiee_ou_archivee?).to be_falsey } it { expect(procedure_brouillon.publiee_ou_archivee?).to be_falsey }
it { expect(procedure_publiee.publiee_ou_archivee?).to be_truthy } it { expect(procedure_publiee.publiee_ou_archivee?).to be_truthy }
@ -487,7 +487,7 @@ describe Procedure do
describe 'archive' do describe 'archive' do
let(:procedure) { create(:procedure, :published) } let(:procedure) { create(:procedure, :published) }
let(:procedure_path) { ProcedurePath.find(procedure.procedure_path.id) } let(:procedure_path) { ProcedurePath.find(procedure.procedure_path.id) }
let(:now) { Time.now.beginning_of_minute } let(:now) { Time.zone.now.beginning_of_minute }
before do before do
Timecop.freeze(now) Timecop.freeze(now)
procedure.archive! procedure.archive!
@ -627,7 +627,7 @@ describe Procedure do
end end
describe "#export_filename" do describe "#export_filename" do
before { Timecop.freeze(Time.new(2018, 1, 2, 23, 11, 14)) } before { Timecop.freeze(Time.zone.local(2018, 1, 2, 23, 11, 14)) }
subject { procedure.export_filename } subject { procedure.export_filename }
@ -716,7 +716,7 @@ describe Procedure do
context 'which is termine' do context 'which is termine' do
before do before do
dossier.accepte! dossier.accepte!
processed_date = DateTime.parse('12/12/2012') processed_date = Time.zone.parse('12/12/2012')
instruction_date = processed_date - 1.day instruction_date = processed_date - 1.day
dossier.update(en_instruction_at: instruction_date, processed_at: processed_date) dossier.update(en_instruction_at: instruction_date, processed_at: processed_date)
end end

View file

@ -33,7 +33,7 @@ describe FranceConnectService do
expect(subject).to have_attributes({ expect(subject).to have_attributes({
given_name: given_name, given_name: given_name,
family_name: family_name, family_name: family_name,
birthdate: DateTime.parse(birthdate), birthdate: Date.parse(birthdate),
birthplace: birthplace, birthplace: birthplace,
gender: gender, gender: gender,
email_france_connect: email, email_france_connect: email,