From a1c7f67735e47990fdcc8a9d7346d1ddf92013ac Mon Sep 17 00:00:00 2001 From: Ana Date: Tue, 9 Aug 2016 14:55:39 +0200 Subject: [PATCH] Render errors in JSON in the schedule correctly --- app/assets/javascripts/osem-schedule.js | 40 +++++++++---------- app/assets/javascripts/osem-switch.js | 6 +-- .../admin/event_schedules_controller.rb | 12 +++--- app/controllers/admin/programs_controller.rb | 4 +- .../admin/event_schedules_controller_spec.rb | 7 +--- 5 files changed, 32 insertions(+), 37 deletions(-) diff --git a/app/assets/javascripts/osem-schedule.js b/app/assets/javascripts/osem-schedule.js index 80b38bc8..3e69b7cb 100644 --- a/app/assets/javascripts/osem-schedule.js +++ b/app/assets/javascripts/osem-schedule.js @@ -17,21 +17,21 @@ var Schedule = { var event_schedule_id = e.attr("event_schedule_id"); if(event_schedule_id != null){ var my_url = url + '/' + event_schedule_id; - var callback = function(data) { + var success_callback = function(data) { console.log(data); - if(data.status == 'ok'){ - e.attr("event_schedule_id", null); - e.appendTo($(".unscheduled-events")); - e.find(".schedule-event-delete-button").hide(); - } - else{ - showError(data.status); - } + e.attr("event_schedule_id", null); + e.appendTo($(".unscheduled-events")); + e.find(".schedule-event-delete-button").hide(); + } + var error_callback = function(data) { + console.log(data); + showError($.parseJSON(data.responseText).errors); } $.ajax({ url: my_url, type: 'DELETE', - success: callback, + success: success_callback, + error: error_callback, dataType : 'json' }); } @@ -40,6 +40,7 @@ var Schedule = { } }, add: function (previous_parent, new_parent, event) { + event.appendTo(new_parent); var event_schedule_id = event.attr("event_schedule_id"); var my_url = url; var type = 'POST'; @@ -53,23 +54,22 @@ var Schedule = { room_id: new_parent.attr("room_id"), start_time: (new_parent.attr("date") + ' ' + new_parent.attr("hour")) }}; - var callback = function(data) { + var success_callback = function(data) { console.log(data); - if(data.status == 'ok'){ - event.appendTo(new_parent); - event.attr("event_schedule_id", data.event_schedule_id); - event.find(".schedule-event-delete-button").show(); - } - else{ - event.appendTo(previous_parent); - showError("The event couldn't been scheduled"); + event.attr("event_schedule_id", data.event_schedule_id); + event.find(".schedule-event-delete-button").show(); } + var error_callback = function(data) { + console.log(data); + showError($.parseJSON(data.responseText).errors); + event.appendTo(previous_parent); } $.ajax({ url: my_url, type: type, data: params, - success: callback, + success: success_callback, + error: error_callback, dataType : 'json' }); } diff --git a/app/assets/javascripts/osem-switch.js b/app/assets/javascripts/osem-switch.js index e2d2c405..1bdda72c 100644 --- a/app/assets/javascripts/osem-switch.js +++ b/app/assets/javascripts/osem-switch.js @@ -23,14 +23,12 @@ $(function () { } var callback = function(data) { - if(data.status != 'ok'){ - showError(data.status); - } + showError($.parseJSON(data.responseText).errors); } $.ajax({ url: url, type: method, - success: callback, + error: callback, dataType: 'json' }); }); diff --git a/app/controllers/admin/event_schedules_controller.rb b/app/controllers/admin/event_schedules_controller.rb index dd1d3813..04713093 100644 --- a/app/controllers/admin/event_schedules_controller.rb +++ b/app/controllers/admin/event_schedules_controller.rb @@ -4,25 +4,25 @@ module Admin def create if @event_schedule.save - render json: { 'status' => 'ok', event_schedule_id: @event_schedule.id } + render json: { event_schedule_id: @event_schedule.id } else - render json: { 'status' => "The event couldn't be scheduled. #{@event_schedule.errors.full_messages.join('. ')}" } + render json: { errors: "The event couldn't be scheduled. #{@event_schedule.errors.full_messages.join('. ')}" }, status: 422 end end def update if @event_schedule.update(event_schedule_params) - render json: { 'status' => 'ok', event_schedule_id: @event_schedule.id } + render json: { event_schedule_id: @event_schedule.id } else - render json: { 'status' => "The event couldn't be scheduled. #{@event_schedule.errors.full_messages.join('. ')}" } + render json: { errors: "The event couldn't be scheduled. #{@event_schedule.errors.full_messages.join('. ')}" }, status: 422 end end def destroy if @event_schedule.destroy - render json: { 'status' => 'ok' } + render json: {} else - render json: { 'status' => "The event couldn't be unscheduled. #{@event_schedule.errors.full_messages.join('. ')}" } + render json: { errors: "The event couldn't be unscheduled. #{@event_schedule.errors.full_messages.join('. ')}" }, status: 422 end end diff --git a/app/controllers/admin/programs_controller.rb b/app/controllers/admin/programs_controller.rb index e2332b60..77b45a57 100644 --- a/app/controllers/admin/programs_controller.rb +++ b/app/controllers/admin/programs_controller.rb @@ -20,7 +20,7 @@ module Admin redirect_to admin_conference_program_path(@conference.short_title), notice: 'The program was successfully updated.' end - format.js { render json: { 'status' => 'ok' } } + format.js { render json: {} } end else respond_to do |format| @@ -28,7 +28,7 @@ module Admin flash[:error] = "Updating program failed. #{@program.errors.to_a.join('. ')}." render :new end - format.js { render json: { 'status' => "The selected schedule couldn't been updated #{@program.errors.to_a.join('. ')}" } } + format.js { render json: { errors: "The selected schedule couldn't been updated #{@program.errors.to_a.join('. ')}" }, status: 422 } end end end diff --git a/spec/controllers/admin/event_schedules_controller_spec.rb b/spec/controllers/admin/event_schedules_controller_spec.rb index c8776206..09f06c6c 100644 --- a/spec/controllers/admin/event_schedules_controller_spec.rb +++ b/spec/controllers/admin/event_schedules_controller_spec.rb @@ -37,7 +37,6 @@ describe Admin::EventSchedulesController do start_time: conference.start_date) expect(response).to be_success - expect(JSON.parse(response.body)['status']).to eq('ok') end end @@ -62,7 +61,7 @@ describe Admin::EventSchedulesController do room_id: nil, start_time: nil) - expect(JSON.parse(response.body)['status']).to eq("The event couldn't be scheduled. Event can't be blank. Room can't be blank. Start time can't be blank") + expect(response.status).to eq(422) end end end @@ -94,7 +93,6 @@ describe Admin::EventSchedulesController do start_time: conference.start_date) expect(response).to be_success - expect(JSON.parse(response.body)['status']).to eq('ok') end end @@ -119,7 +117,7 @@ describe Admin::EventSchedulesController do room_id: nil, start_time: nil) - expect(JSON.parse(response.body)['status']).to eq("The event couldn't be scheduled. Event can't be blank. Room can't be blank. Start time can't be blank") + expect(response.status).to eq(422) end end end @@ -136,7 +134,6 @@ describe Admin::EventSchedulesController do delete :destroy, id: event_schedule.id, conference_id: conference.short_title expect(response).to be_success - expect(JSON.parse(response.body)['status']).to eq('ok') end end end