From 26b0bd9e11bfe5eb0b1436ec79cc96ee48bc33e8 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Mon, 30 Jul 2018 14:39:23 +0200 Subject: [PATCH] Refactor tasks tree API endpoint [SCI-2609] --- .../api/v20170715/core_api_controller.rb | 53 ------------- config/routes.rb | 4 - .../api/v20170715/core_api_controller_spec.rb | 75 ------------------- 3 files changed, 132 deletions(-) delete mode 100644 app/controllers/api/v20170715/core_api_controller.rb delete mode 100644 spec/controllers/api/v20170715/core_api_controller_spec.rb diff --git a/app/controllers/api/v20170715/core_api_controller.rb b/app/controllers/api/v20170715/core_api_controller.rb deleted file mode 100644 index c8a07e8dc..000000000 --- a/app/controllers/api/v20170715/core_api_controller.rb +++ /dev/null @@ -1,53 +0,0 @@ -module Api - module V20170715 - class CoreApiController < ApiController - def tasks_tree - teams_json = [] - current_user.teams.find_each do |tm| - team = tm.as_json(only: %i(name description)) - team['team_id'] = tm.id.to_s - projects = [] - tm.projects.find_each do |pr| - project = pr.as_json(only: %i(name visibility archived)) - project['project_id'] = pr.id.to_s - experiments = [] - pr.experiments.find_each do |exp| - experiment = exp.as_json(only: %i(name description archived)) - experiment['experiment_id'] = exp.id.to_s - tasks = [] - exp.my_modules.find_each do |tk| - task = tk.as_json(only: %i(name description archived)) - task['task_id'] = tk.id.to_s - task['editable'] = can_manage_module?(tk) - tasks << task - end - experiment['tasks'] = tasks - experiments << experiment - end - project['experiments'] = experiments - projects << project - end - team['projects'] = projects - teams_json << team - end - render json: teams_json, status: :ok - end - - def task_samples - task = MyModule.find_by_id(params[:task_id]) - return render json: {}, status: :not_found unless task - return render json: {}, status: :forbidden unless - can_read_experiment?(task.experiment) - samples = task.samples - samples_json = [] - samples.find_each do |s| - sample = {} - sample['sample_id'] = s.id.to_s - sample['name'] = s.name - samples_json << sample - end - render json: samples_json, status: :ok - end - end - end -end diff --git a/config/routes.rb b/config/routes.rb index a5fecd239..7807dca3b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -540,10 +540,6 @@ Rails.application.routes.draw do get 'health', to: 'api#health' get 'status', to: 'api#status' post 'auth/token', to: 'api#authenticate' - scope '20170715', module: 'v20170715' do - get 'tasks/tree', to: 'core_api#tasks_tree' - # get 'tasks/:task_id/samples', to: 'core_api#task_samples' - end end end diff --git a/spec/controllers/api/v20170715/core_api_controller_spec.rb b/spec/controllers/api/v20170715/core_api_controller_spec.rb deleted file mode 100644 index 1d4fbe55b..000000000 --- a/spec/controllers/api/v20170715/core_api_controller_spec.rb +++ /dev/null @@ -1,75 +0,0 @@ -require 'rails_helper' - -describe Api::V20170715::CoreApiController, type: :controller do - let!(:user) { create :user } - let!(:team) { create :team, created_by: user } - let(:task) { create :my_module } - let(:sample1) { create :sample } - let(:sample2) { create :sample } - let(:sample3) { create :sample } - before do - task.samples << [sample1, sample2, sample3] - UserProject.create!(user: user, project: task.experiment.project, role: 0) - end - - describe 'GET #tasks_tree' do - let!(:user_team) { create :user_team, team: team, user: user } - context 'When valid request' do - before do - request.headers['HTTP_ACCEPT'] = 'application/json' - request.headers['Authorization'] = 'Bearer ' + generate_token(user.id) - get :tasks_tree - end - - it 'Returns HTTP success' do - expect(response).to have_http_status(200) - end - - it 'Returns JSON body containing expected Task tree' do - team = user.teams.first - experiment = task.experiment - project = experiment.project - hash_body = nil - expect { hash_body = json }.not_to raise_exception - expect(hash_body).to match( - ['name' => team.name, - 'description' => team.description, - 'team_id' => team.id.to_s, - 'projects' => [{ - 'name' => project.name, - 'visibility' => project.visibility, - 'archived' => project.archived, - 'project_id' => project.id.to_s, - 'experiments' => [{ - 'name' => experiment.name, - 'description' => experiment.description, - 'archived' => experiment.archived, - 'experiment_id' => experiment.id.to_s, - 'tasks' => [{ - 'name' => task.name, - 'description' => task.description, - 'archived' => task.archived, - 'task_id' => task.id.to_s, - 'editable' => true - }] - }] - }]] - ) - end - end - - context 'When invalid request' do - context 'When invalid token' do - before do - request.headers['HTTP_ACCEPT'] = 'application/json' - request.headers['Authorization'] = 'Bearer WroNgToken' - get :tasks_tree - end - - it 'Returns HTTP unauthorized' do - expect(response).to have_http_status(401) - end - end - end - end -end