diff --git a/spec/requests/api/v1/countries/visited_cities_spec.rb b/spec/requests/api/v1/countries/visited_cities_spec.rb index 88441b3a..65dbab07 100644 --- a/spec/requests/api/v1/countries/visited_cities_spec.rb +++ b/spec/requests/api/v1/countries/visited_cities_spec.rb @@ -1,7 +1,17 @@ +# frozen_string_literal: true + require 'rails_helper' -RSpec.describe "Api::V1::Countries::VisitedCities", type: :request do - describe "GET /index" do - pending "add some examples (or delete) #{__FILE__}" +RSpec.describe 'Api::V1::Countries::VisitedCities', type: :request do + describe 'GET /index' do + let(:user) { create(:user) } + let(:start_at) { '2023-01-01' } + let(:end_at) { '2023-12-31' } + + it 'returns visited cities' do + get "/api/v1/countries/visited_cities?api_key=#{user.api_key}&start_at=#{start_at}&end_at=#{end_at}" + + expect(response).to have_http_status(:ok) + end end end diff --git a/spec/requests/api/v1/points/tracked_months_spec.rb b/spec/requests/api/v1/points/tracked_months_spec.rb index 6abcf28b..e654fc15 100644 --- a/spec/requests/api/v1/points/tracked_months_spec.rb +++ b/spec/requests/api/v1/points/tracked_months_spec.rb @@ -1,7 +1,15 @@ +# frozen_string_literal: true + require 'rails_helper' -RSpec.describe "Api::V1::Points::TrackedMonths", type: :request do - describe "GET /index" do - pending "add some examples (or delete) #{__FILE__}" +RSpec.describe 'Api::V1::Points::TrackedMonths', type: :request do + describe 'GET /index' do + let(:user) { create(:user) } + + it 'returns tracked months' do + get "/api/v1/points/tracked_months?api_key=#{user.api_key}" + + expect(response).to have_http_status(:ok) + end end end diff --git a/spec/swagger/api/v1/points/tracked_months_controller_spec.rb b/spec/swagger/api/v1/points/tracked_months_controller_spec.rb new file mode 100644 index 00000000..fec4c633 --- /dev/null +++ b/spec/swagger/api/v1/points/tracked_months_controller_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'swagger_helper' + +describe 'Points Tracked Months API', type: :request do + path '/api/v1/points/tracked_months' do + get 'Returns list of tracked years and months' do + tags 'Points' + produces 'application/json' + parameter name: :api_key, in: :query, type: :string, required: true, description: 'API Key' + response '200', 'years and months found' do + schema type: :array, + items: { + type: :object, + properties: { + year: { type: :integer, description: 'Year in YYYY format' }, + months: { + type: :array, + items: { type: :string, description: 'Three-letter month abbreviation' } + } + }, + required: %w[year months] + }, + example: [{ + year: 2024, + months: %w[Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec] + }] + + let(:api_key) { create(:user).api_key } + run_test! + end + + response '401', 'unauthorized' do + let(:api_key) { 'invalid' } + run_test! + end + end + end +end diff --git a/swagger/v1/swagger.yaml b/swagger/v1/swagger.yaml index 07235bd6..2e6e2587 100644 --- a/swagger/v1/swagger.yaml +++ b/swagger/v1/swagger.yaml @@ -538,6 +538,56 @@ paths: - photoprism '404': description: photo not found + "/api/v1/points/tracked_months": + get: + summary: Returns list of tracked years and months + tags: + - Points + parameters: + - name: api_key + in: query + required: true + description: API Key + schema: + type: string + responses: + '200': + description: years and months found + content: + application/json: + schema: + type: array + items: + type: object + properties: + year: + type: integer + description: Year in YYYY format + months: + type: array + items: + type: string + description: Three-letter month abbreviation + required: + - year + - months + example: + - year: 2024 + months: + - Jan + - Feb + - Mar + - Apr + - May + - Jun + - Jul + - Aug + - Sep + - Oct + - Nov + - Dec + '401': + description: unauthorized "/api/v1/points": get: summary: Retrieves all points