From 139dbe2c8dddc32ff14c48e0dba7b5b511dd5c47 Mon Sep 17 00:00:00 2001 From: Rafael Reggiani Manzo Date: Fri, 27 Feb 2015 23:36:17 -0300 Subject: [PATCH] RepositoriesController#state splited into two simpler actions --- app/controllers/repositories_controller.rb | 41 ++++++++++++++++++++++++----------------- app/views/repositories/show.html.erb | 3 +-- config/routes.rb | 1 + spec/controllers/repositories_controller_spec.rb | 28 +++++++++++++++------------- spec/routing/repositories_routing_spec.rb | 2 ++ 5 files changed, 43 insertions(+), 32 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index fe9866d..4c3cab4 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -2,10 +2,10 @@ include OwnershipAuthentication include ResourceFinder class RepositoriesController < ApplicationController - before_action :authenticate_user!, except: [:show, :state] + before_action :authenticate_user!, except: [:show, :state, :state_with_date] before_action :project_owner?, only: [:new, :create] before_action :repository_owner?, only: [:edit, :update, :destroy, :process_repository] - before_action :set_repository, only: [:show, :edit, :update, :destroy, :state, :process_repository] + before_action :set_repository, only: [:show, :edit, :update, :destroy, :state, :state_with_date, :process_repository] # GET /projects/1/repositories/1 # GET /projects/1/repositories/1.json @@ -64,27 +64,22 @@ class RepositoriesController < ApplicationController # POST /projects/1/repositories/1/state def state if params[:last_state] != 'READY' - if params[:day].nil? - @processing = @repository.last_processing - else - year, month, day = params[:year], params[:month], params[:day] - @processing = Processing.processing_with_date_of(@repository.id, "#{year}-#{month}-#{day}") - end + @processing = @repository.last_processing - respond_to do |format| - if @processing.state == 'READY' - format.js { render action: 'load_ready_processing' } - elsif @processing.state == 'ERROR' - format.js { render action: 'load_error' } - else - format.js { render action: 'reload_processing' } - end - end + respond_to_processing_state else head :ok, :content_type => 'text/html' # Just don't do anything end end + # POST /projects/1/repositories/1/state_with_date + def state_with_date + year, month, day = params[:year], params[:month], params[:day] + @processing = Processing.processing_with_date_of(@repository.id, "#{year}-#{month}-#{day}") + + respond_to_processing_state + end + # GET /projects/1/repositories/1/process def process_repository @repository.process @@ -128,4 +123,16 @@ private failed_action(format, 'new') end end + + def respond_to_processing_state + respond_to do |format| + if @processing.state == 'READY' + format.js { render action: 'load_ready_processing' } + elsif @processing.state == 'ERROR' + format.js { render action: 'load_error' } + else + format.js { render action: 'reload_processing' } + end + end + end end diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index 1ac85cb..a4a1c9f 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -34,12 +34,11 @@

Retrieve the closest processing information from:

-<%= form_tag(project_repository_state_path(@repository.project_id, @repository.id), method: "post", remote: true) do %> +<%= form_tag(project_repository_state_with_date_path(@repository.project_id, @repository.id), method: "post", remote: true) do %>

Day: <%= select_tag(:day, options_for_select(day_options), :style => "width:55px; margin-top:5px") %> Month: <%= select_tag(:month, options_for_select(month_options), :style => "width:55px; margin-top:5px") %> Year: <%= select_tag(:year, options_for_select(year_options), :style => "width:70px; margin-top:5px") %> - <%= hidden_field_tag(:last_state, "") %> <%= submit_tag("Search", class: 'btn btn-info', style: 'margin-bottom:5px', onClick: "Module.Repository.set_loader('#{image_tag 'loader.gif'} Loading data. Please, wait.')") %>

<% end %> diff --git a/config/routes.rb b/config/routes.rb index 43f177c..acc6c6b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,6 +6,7 @@ Rails.application.routes.draw do resources :repositories, except: [:update, :index] get '/repositories/:id/modules/:module_result_id' => 'repositories#show', as: :repository_module post '/repositories/:id/state' => 'repositories#state', as: :repository_state + post '/repositories/:id/state_with_date' => 'repositories#state_with_date', as: :repository_state_with_date put '/repositories/:id' => 'repositories#update', as: :repository_update get '/repositories/:id/process' => 'repositories#process_repository', as: :repository_process end diff --git a/spec/controllers/repositories_controller_spec.rb b/spec/controllers/repositories_controller_spec.rb index 54d2012..999b576 100644 --- a/spec/controllers/repositories_controller_spec.rb +++ b/spec/controllers/repositories_controller_spec.rb @@ -295,19 +295,6 @@ describe RepositoriesController, :type => :controller do it { is_expected.not_to render_with_layout } end - context 'with a given date' do - let(:processing) { FactoryGirl.build(:processing) } - - before :each do - Repository.expects(:find).at_least_once.with(repository.id).returns(repository) - Processing.expects(:processing_with_date_of).with(repository.id, "2013-11-11").returns(processing) - - xhr :get, :state, {project_id: project.id.to_s, id: repository.id, last_state: '', day: '11', month: '11', year: '2013'} - end - - it { is_expected.to respond_with(:ok) } - it { is_expected.not_to render_with_layout } - end context 'with a ERROR state' do let(:errored_processing) { FactoryGirl.build(:errored_processing) } @@ -324,6 +311,21 @@ describe RepositoriesController, :type => :controller do end end + describe 'state_with_date' do + let(:processing) { FactoryGirl.build(:processing) } + let(:repository) { FactoryGirl.build(:repository) } + + before :each do + Repository.expects(:find).at_least_once.with(repository.id).returns(repository) + Processing.expects(:processing_with_date_of).with(repository.id, "2013-11-11").returns(processing) + + xhr :get, :state_with_date, {project_id: project.id.to_s, id: repository.id, day: '11', month: '11', year: '2013'} + end + + it { is_expected.to respond_with(:ok) } + it { is_expected.not_to render_with_layout } + end + describe 'process_repository' do let(:repository) { FactoryGirl.build(:repository) } before :each do diff --git a/spec/routing/repositories_routing_spec.rb b/spec/routing/repositories_routing_spec.rb index 102ecc6..006f072 100644 --- a/spec/routing/repositories_routing_spec.rb +++ b/spec/routing/repositories_routing_spec.rb @@ -20,6 +20,8 @@ describe RepositoriesController, :type => :routing do to(controller: :repositories, action: :index, project_id: 1) } it { is_expected.to route(:post, '/projects/1/repositories/1/state'). to(controller: :repositories, action: :state, project_id: 1, id: 1) } + it { is_expected.to route(:post, '/projects/1/repositories/1/state_with_date'). + to(controller: :repositories, action: :state_with_date, project_id: 1, id: 1) } it { is_expected.to route(:get, '/projects/1/repositories/1/process'). to(controller: :repositories, action: :process_repository, project_id: 1, id: 1) } end -- libgit2 0.21.2