Skip to content

Commit

Permalink
feat: Add project preview endpoint & specs.rb (#1477)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nitish145 committed Jun 25, 2020
1 parent ef8590c commit 8b29336
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 1 deletion.
7 changes: 6 additions & 1 deletion app/controllers/api/v1/projects_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class Api::V1::ProjectsController < Api::V1::BaseController
include ActionView::Helpers::SanitizeHelper

before_action :authenticate_user, only: %i[index show]
before_action :authenticate_user!, except: %i[index show]
before_action :authenticate_user!, except: %i[index show image_preview]
before_action :load_index_projects, only: %i[index]
before_action :load_user_projects, only: %i[user_projects]
before_action :load_featured_circuits, only: %i[featured_circuits]
Expand Down Expand Up @@ -37,6 +37,11 @@ def show
render json: Api::V1::ProjectSerializer.new(@project, @options)
end

def image_preview
@project = Project.open.find(params[:id])
render json: { "project_preview": request.base_url + @project.image_preview.url }
end

# PATCH /api/v1/projects/:id
def update
authorize @project, :check_edit_access?
Expand Down
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
member do
get 'toggle-star', to: 'projects#toggle_star'
get 'fork', to: 'projects#create_fork'
get 'image_preview', to: 'projects#image_preview'
end
end
resources :users do
Expand Down
34 changes: 34 additions & 0 deletions spec/requests/api/v1/projects_controller/image_preview_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# frozen_string_literal: true

require "rails_helper"

RSpec.describe Api::V1::ProjectsController, "#image_preview", type: :request do
describe "get project image preview" do
let!(:public_project) { FactoryBot.create(:project, project_access_type: "Public") }
let!(:private_project) { FactoryBot.create(:project) }

context "when private project image_preview is requested" do
before do
get "/api/v1/projects/#{private_project.id}/image_preview", as: :json
end

it "returns status :not_found" do
expect(response).to have_http_status(404)
expect(response.parsed_body).to have_jsonapi_errors
end
end

context "when public project image_preview is requested" do
before do
get "/api/v1/projects/#{public_project.id}/image_preview", as: :json
end

it "returns image preview" do
expect(response).to have_http_status(200)
expect(response.parsed_body["project_preview"]).to eq(
request.base_url + public_project.image_preview.url
)
end
end
end
end

0 comments on commit 8b29336

Please sign in to comment.