# frozen_string_literal: true require "swagger_helper" RSpec.describe "groups" do let(:admin) { Fabricate(:admin) } before do Jobs.run_immediately! sign_in(admin) end path "/search.json" do get "Search for a term" do tags "Search" operationId "search" consumes "application/json" parameter( name: :q, in: :query, type: :string, example: "api @blake #support tags:api after:2021-06-04 in:unseen in:open order:latest_topic", description: <<~MD, The query string needs to be url encoded and is made up of the following options: - Search term. This is just a string. Usually it would be the first item in the query. - `@`: Use the `@` followed by the username to specify posts by this user. - `#`: Use the `#` followed by the category slug to search within this category. - `tags:`: `api,solved` or for posts that have all the specified tags `api+solved`. - `before:`: `yyyy-mm-dd` - `after:`: `yyyy-mm-dd` - `order:`: `latest`, `likes`, `views`, `latest_topic` - `assigned:`: username (without `@`) - `in:`: `title`, `likes`, `personal`, `messages`, `seen`, `unseen`, `posted`, `created`, `watching`, `tracking`, `bookmarks`, `assigned`, `unassigned`, `first`, `pinned`, `wiki` - `with:`: `images` - `status:`: `open`, `closed`, `public`, `archived`, `noreplies`, `single_user`, `solved`, `unsolved` - `group:`: group_name or group_id - `group_messages:`: group_name or group_id - `min_posts:`: 1 - `max_posts:`: 10 - `min_views:`: 1 - `max_views:`: 10 If you are using cURL you can use the `-G` and the `--data-urlencode` flags to encode the query: ``` curl -i -sS -X GET -G "http://localhost:4200/search.json" \\ --data-urlencode 'q=wordpress @scossar #fun after:2020-01-01' ``` MD ) parameter name: :page, in: :query, type: :integer, example: 1 produces "application/json" response "200", "success response" do expected_response_schema = load_spec_schema("search_response") schema expected_response_schema let(:q) { "awesome post" } let(:page) { 1 } run_test! end end end end