From 8f1d374eb55b08cd367613fc4e60cfa27b60f185 Mon Sep 17 00:00:00 2001 From: echarp Date: Wed, 3 Sep 2014 02:14:21 +0200 Subject: [PATCH] =?UTF-8?q?Couverture=20de=20tests=20presque=20=C3=A0=2010?= =?UTF-8?q?0%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/maps_controller.rb | 4 +- app/models/event.rb | 12 +++--- app/models/note.rb | 2 + app/models/user.rb | 2 + test/controllers/events_controller_test.rb | 20 +++++++++ .../moderations_controller_test.rb | 41 +++++++++++++++---- test/controllers/notes_controller_test.rb | 24 +++++++++-- test/controllers/users_controller_test.rb | 16 ++++++++ test/models/event_test.rb | 6 +-- 9 files changed, 103 insertions(+), 24 deletions(-) diff --git a/app/controllers/maps_controller.rb b/app/controllers/maps_controller.rb index 91af5ce2..077350ab 100644 --- a/app/controllers/maps_controller.rb +++ b/app/controllers/maps_controller.rb @@ -5,9 +5,7 @@ class MapsController < ApplicationController def index respond_to do |format| format.html - format.json do - render json: Event.moderated.future.geo.map { |event| event.to_json } - end + format.json { render json: Event.moderated.future.geo } end end end diff --git a/app/models/event.rb b/app/models/event.rb index 224ee69c..20ad105d 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -69,17 +69,15 @@ class Event < ActiveRecord::Base end end - def to_json + def as_json(_options = {}) { type: 'Feature', properties: { name: title, popupContent: "#{city}: #{title}" - }, - geometry: { - type: 'Point', - coordinates: [longitude, latitude] - } - } + }, geometry: { + type: 'Point', + coordinates: [longitude, latitude] + } } end def full_address diff --git a/app/models/note.rb b/app/models/note.rb index f0d58286..f91a38b9 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -3,6 +3,8 @@ class Note < ActiveRecord::Base belongs_to :event belongs_to :author, class_name: User + validates :contents, presence: true + # Setup the magic time stamp so it uses the "date" column def timestamp_attributes_for_create super << :date diff --git a/app/models/user.rb b/app/models/user.rb index 418efe8f..5b474232 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,6 +10,8 @@ class User < ActiveRecord::Base has_many :notes + validates :login, presence: true + def encrypted_password=(pass) self[:password] = pass end diff --git a/test/controllers/events_controller_test.rb b/test/controllers/events_controller_test.rb index 87894651..b885e556 100644 --- a/test/controllers/events_controller_test.rb +++ b/test/controllers/events_controller_test.rb @@ -57,6 +57,18 @@ class EventsControllerTest < ActionController::TestCase assert_redirected_to root_url end + test 'should not create event' do + assert_no_difference 'Event.count' do + post :create, event: { + title: @event.title, + city: @event.city, + region: @event.related_region + } + + assert_not_empty assigns(:event).errors.messages + end + end + test 'should show event' do get :show, id: @event assert_response :success @@ -93,6 +105,14 @@ class EventsControllerTest < ActionController::TestCase assert_redirected_to :root end + test 'should not update event' do + patch :update, id: @event, secret: 'MyString', event: { + title: nil + } + + assert_not_empty assigns(:event).errors.messages + end + test 'should get cancel page' do get :cancel, id: @event, secret: 'MyString' assert_response :success diff --git a/test/controllers/moderations_controller_test.rb b/test/controllers/moderations_controller_test.rb index 97debb2c..ecc6d784 100644 --- a/test/controllers/moderations_controller_test.rb +++ b/test/controllers/moderations_controller_test.rb @@ -11,6 +11,12 @@ class ModerationsControllerTest < ActionController::TestCase sign_in users(:one) end + test 'should get index' do + get :index + assert_response :success + assert_not_nil assigns(:events) + end + test 'should preview event' do patch :preview, id: @moderation, event: { title: 'hello world', @@ -26,6 +32,13 @@ class ModerationsControllerTest < ActionController::TestCase assert_redirected_to moderations_path end + test 'should not edit event' do + put :update, id: @moderation, event: { + title: nil + } + assert_not_empty assigns(:moderation).errors + end + test 'should accept event' do @moderation = events :proposed @@ -50,21 +63,23 @@ class ModerationsControllerTest < ActionController::TestCase start_time: @moderation.start_time, end_time: @moderation.end_time, description: @moderation.description, - city: @moderation.city, - region: @moderation.related_region, - locality: @moderation.locality, url: @moderation.url, contact: @moderation.contact, - moderated: @moderation.moderated, - secret: @moderation.secret, - submission_time: @moderation.submission_time, - submitter: @moderation.submitter, - tags: @moderation.tags } + tags: @moderation.tags + } assert_empty assigns(:moderation).errors assert_redirected_to moderations_path end + test 'should not update event' do + patch :update, id: @moderation, secret: 'MyString', event: { + title: nil + } + + assert_not_empty assigns(:moderation).errors + end + test 'should reject event' do assert_difference 'Event.count', -1 do delete :destroy, id: @moderation @@ -74,4 +89,14 @@ class ModerationsControllerTest < ActionController::TestCase assert_redirected_to moderations_path end + + test 'should reject event with a reason' do + assert_difference 'Event.count', -1 do + delete :destroy, id: @moderation, reason: 'r_4' + end + + assert_empty assigns(:moderation).errors + + assert_redirected_to moderations_path + end end diff --git a/test/controllers/notes_controller_test.rb b/test/controllers/notes_controller_test.rb index 24e824b2..98938349 100644 --- a/test/controllers/notes_controller_test.rb +++ b/test/controllers/notes_controller_test.rb @@ -18,12 +18,30 @@ class NotesControllerTest < ActionController::TestCase test 'should create note' do assert_difference('Note.count') do post :create, moderation_id: @note.event.id, note: { - author: @note.author, - contents: @note.contents, - date: @note.date + contents: @note.contents } end assert_redirected_to moderations_path end + + test 'should send mail' do + assert_difference('Note.count') do + post :create, moderation_id: @note.event.id, envoiParMail: 'oui', note: { + contents: @note.contents + } + end + + assert ActionMailer::Base.deliveries.present? + + assert_redirected_to moderations_path + end + + test 'should not create note' do + assert_no_difference('Note.count') do + post :create, moderation_id: @note.event.id, note: { + nothing: 'almost' + } + end + end end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 9c1918ae..a8f0060c 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb @@ -35,6 +35,14 @@ class UsersControllerTest < ActionController::TestCase assert_redirected_to user_path(assigns(:user)) end + test 'should not create user' do + assert_no_difference('User.count') do + post :create, user: { + login: nil + } + end + end + test 'should show user' do get :show, id: @user assert_response :success @@ -55,6 +63,14 @@ class UsersControllerTest < ActionController::TestCase assert_redirected_to user_path(assigns(:user)) end + test 'should not update user' do + patch :update, id: @user, user: { + login: nil + } + + assert_not_empty assigns(:user).errors + end + test 'should destroy user' do assert_difference('User.count', -1) do delete :destroy, id: @user diff --git a/test/models/event_test.rb b/test/models/event_test.rb index d1160a98..f5df7e8c 100644 --- a/test/models/event_test.rb +++ b/test/models/event_test.rb @@ -113,10 +113,10 @@ class EventTest < ActiveSupport::TestCase end test 'json transform' do - assert_not_nil @event.to_json + assert_not_nil @event.as_json - assert_equal 'Feature', @event.to_json[:type] - assert_equal 'Point', @event.to_json[:geometry][:type] + assert_equal 'Feature', @event.as_json[:type] + assert_equal 'Point', @event.as_json[:geometry][:type] end test 'full address' do