mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 18:23:37 +08:00
130 lines
4.1 KiB
Ruby
130 lines
4.1 KiB
Ruby
# frozen_string_literal: true
|
|
require "swagger_helper"
|
|
|
|
RSpec.describe "categories" do
|
|
let(:admin) { Fabricate(:admin) }
|
|
let!(:category) { Fabricate(:category, user: admin) }
|
|
|
|
before do
|
|
Jobs.run_immediately!
|
|
sign_in(admin)
|
|
end
|
|
|
|
path "/categories.json" do
|
|
post "Creates a category" do
|
|
tags "Categories"
|
|
operationId "createCategory"
|
|
consumes "application/json"
|
|
expected_request_schema = load_spec_schema("category_create_request")
|
|
parameter name: :params, in: :body, schema: expected_request_schema
|
|
|
|
produces "application/json"
|
|
response "200", "success response" do
|
|
expected_response_schema = load_spec_schema("category_create_response")
|
|
schema expected_response_schema
|
|
|
|
let(:params) { { "name" => "todo" } }
|
|
|
|
it_behaves_like "a JSON endpoint", 200 do
|
|
let(:expected_response_schema) { expected_response_schema }
|
|
let(:expected_request_schema) { expected_request_schema }
|
|
end
|
|
end
|
|
end
|
|
|
|
get "Retrieves a list of categories" do
|
|
tags "Categories"
|
|
operationId "listCategories"
|
|
consumes "application/json"
|
|
expected_request_schema = nil
|
|
parameter name: :include_subcategories, in: :query, schema: { type: :boolean, enum: [true] }
|
|
|
|
produces "application/json"
|
|
response "200", "success response" do
|
|
expected_response_schema = load_spec_schema("category_list_response")
|
|
schema expected_response_schema
|
|
|
|
let(:include_subcategories) { true }
|
|
|
|
it_behaves_like "a JSON endpoint", 200 do
|
|
let(:expected_response_schema) { expected_response_schema }
|
|
let(:expected_request_schema) { expected_request_schema }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
path "/categories/{id}.json" do
|
|
put "Updates a category" do
|
|
tags "Categories"
|
|
operationId "updateCategory"
|
|
consumes "application/json"
|
|
expected_request_schema = load_spec_schema("category_create_request")
|
|
parameter name: :id, in: :path, schema: { type: :integer }
|
|
parameter name: :params, in: :body, schema: expected_request_schema
|
|
|
|
produces "application/json"
|
|
response "200", "success response" do
|
|
expected_response_schema = load_spec_schema("category_update_response")
|
|
schema expected_response_schema
|
|
|
|
let(:id) { category.id }
|
|
let(:params) { { "name" => "todo" } }
|
|
|
|
it_behaves_like "a JSON endpoint", 200 do
|
|
let(:expected_response_schema) { expected_response_schema }
|
|
let(:expected_request_schema) { expected_request_schema }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
path "/c/{slug}/{id}.json" do
|
|
get "List topics" do
|
|
tags "Categories"
|
|
operationId "listCategoryTopics"
|
|
produces "application/json"
|
|
parameter name: :slug, in: :path, schema: { type: :string }
|
|
parameter name: :id, in: :path, schema: { type: :integer }
|
|
expected_request_schema = nil
|
|
|
|
produces "application/json"
|
|
response "200", "success response" do
|
|
expected_response_schema = load_spec_schema("category_topics_response")
|
|
schema expected_response_schema
|
|
|
|
let(:id) { category.id }
|
|
let(:slug) { category.slug_path.join("/") }
|
|
|
|
it_behaves_like "a JSON endpoint", 200 do
|
|
let(:expected_response_schema) { expected_response_schema }
|
|
let(:expected_request_schema) { expected_request_schema }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
path "/c/{id}/show.json" do
|
|
get "Show category" do
|
|
tags "Categories"
|
|
operationId "getCategory"
|
|
consumes "application/json"
|
|
parameter name: :id, in: :path, schema: { type: :integer }
|
|
expected_request_schema = nil
|
|
|
|
produces "application/json"
|
|
response "200", "response" do
|
|
expected_response_schema = load_spec_schema("category_create_response")
|
|
schema expected_response_schema
|
|
|
|
let(:id) { category.id }
|
|
|
|
it_behaves_like "a JSON endpoint", 200 do
|
|
let(:expected_response_schema) { expected_response_schema }
|
|
let(:expected_request_schema) { expected_request_schema }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|