From e866578b9e52fc40de6f7e3f33305bf5c4cd5104 Mon Sep 17 00:00:00 2001 From: echarp Date: Mon, 28 Jul 2014 16:16:27 +0200 Subject: [PATCH] =?UTF-8?q?Les=20heures=20de=20soumission=20et=20de=20vali?= =?UTF-8?q?dation=20d'evt=20=C3=A9taient=20mal=20g=C3=A9r=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/event.rb | 10 ++++++++-- app/views/moderations/index.html.haml | 2 +- .../moderations_controller_test.rb | 12 ++++++++++- test/fixtures/events.yml | 19 ++++++++++++++++++ test/models/event_test.rb | 20 +++++++++++++++++++ 5 files changed, 59 insertions(+), 4 deletions(-) diff --git a/app/models/event.rb b/app/models/event.rb index 469a9e1f..530e28e2 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -32,8 +32,8 @@ class Event < ActiveRecord::Base before_validation on: :create do - self.submission_time = Date.today - self.decision_time = Date.today + self.submission_time = DateTime.now + self.decision_time = DateTime.now if self.submitter.empty? self.submitter = self.contact @@ -46,6 +46,12 @@ class Event < ActiveRecord::Base self.submitter_mail_id = SecureRandom.urlsafe_base64(32)[0...32] end + before_update do + if moderated? and moderated_was != moderated + self.decision_time = DateTime.now + end + end + def same_day? start_time.to_date == end_time.to_date end diff --git a/app/views/moderations/index.html.haml b/app/views/moderations/index.html.haml index 303468e5..2ab51707 100644 --- a/app/views/moderations/index.html.haml +++ b/app/views/moderations/index.html.haml @@ -33,7 +33,7 @@ =l event.end_time, format: :at %td= event.city %td= event.related_region.name - %td= time_ago_in_words event.submission_time.to_date + %td= time_ago_in_words event.submission_time %th.actions = link_to edit_moderation_path event do %em.fa.fa-pencil diff --git a/test/controllers/moderations_controller_test.rb b/test/controllers/moderations_controller_test.rb index 476fa34e..78a7c4f4 100644 --- a/test/controllers/moderations_controller_test.rb +++ b/test/controllers/moderations_controller_test.rb @@ -18,10 +18,20 @@ class ModerationsControllerTest < ActionController::TestCase end test 'should accept event' do - put :accept, id: @moderation + @moderation = events :proposed + + decision = @moderation.decision_time + assert !@moderation.moderated? + + assert_difference 'Event.moderated.count' do + put :accept, id: @moderation + end assert assigns(:moderation).moderated? assert_empty assigns(:moderation).errors + + assert decision < assigns(:moderation).decision_time + assert_redirected_to moderations_path end diff --git a/test/fixtures/events.yml b/test/fixtures/events.yml index ff01e2ea..c1ad414b 100644 --- a/test/fixtures/events.yml +++ b/test/fixtures/events.yml @@ -37,3 +37,22 @@ two: submission_time: 2013-12-28 16:04:56 moderator_mail_id: MyString submitter_mail_id: MyString + +proposed: + title: MyString + description: MyText + start_time: 2013-12-28 16:04:56 + end_time: 2013-12-28 16:04:56 + city: city_two.name + related_region: region_two + locality: 1 + url: http://exemple.com + contact: test2@example.com + submitter: test2@example.com + moderated: 0 + tags: MyString + secret: MyString + decision_time: 2013-12-28 16:04:56 + submission_time: 2013-12-28 16:04:56 + moderator_mail_id: MyString + submitter_mail_id: MyString diff --git a/test/models/event_test.rb b/test/models/event_test.rb index b6f4a311..5c7d059d 100644 --- a/test/models/event_test.rb +++ b/test/models/event_test.rb @@ -48,4 +48,24 @@ class EventTest < ActiveSupport::TestCase @event.url = 'http:/truc.com' assert !@event.valid?, @event.errors.messages end + + test 'moderation' do + @event = Event.new( + title: 'hello world', + start_time: Time.new(), + end_time: Time.new() + 1, + description: 'et hop!', + city: City.first(), + related_region: Region.first(), + url: 'http://example.com', + contact: 'contact@example.com' + ) + + assert @event.save(), @event.errors.messages + assert !@event.moderated? + + @event.update(moderated: 1) + + assert @event.moderated?, @event.errors.messages + end end