diff --git a/spec/requests/api/fasp/data_sharing/v0/backfill_requests_spec.rb b/spec/requests/api/fasp/data_sharing/v0/backfill_requests_spec.rb index d4987261b2..2d1f1d6417 100644 --- a/spec/requests/api/fasp/data_sharing/v0/backfill_requests_spec.rb +++ b/spec/requests/api/fasp/data_sharing/v0/backfill_requests_spec.rb @@ -2,8 +2,40 @@ require 'rails_helper' -RSpec.describe 'Api::Fasp::DataSharing::V0::BackfillRequests' do - describe 'GET /index' do - pending "add some examples (or delete) #{__FILE__}" +RSpec.describe 'Api::Fasp::DataSharing::V0::BackfillRequests', feature: :fasp do + include ProviderRequestHelper + + describe 'POST /api/fasp/data_sharing/v0/backfill_requests' do + let(:provider) { Fabricate(:fasp_provider) } + + context 'with valid parameters' do + it 'creates a new backfill request' do + params = { category: 'content', maxCount: 10 } + headers = request_authentication_headers(provider, + url: api_fasp_data_sharing_v0_backfill_requests_url, + method: :post, + body: params) + + expect do + post api_fasp_data_sharing_v0_backfill_requests_path, headers:, params:, as: :json + end.to change(Fasp::BackfillRequest, :count).by(1) + expect(response).to have_http_status(201) + end + end + + context 'with invalid parameters' do + it 'does not create a backfill request' do + params = { category: 'unknown', maxCount: 10 } + headers = request_authentication_headers(provider, + url: api_fasp_data_sharing_v0_backfill_requests_url, + method: :post, + body: params) + + expect do + post api_fasp_data_sharing_v0_backfill_requests_path, headers:, params:, as: :json + end.to_not change(Fasp::BackfillRequest, :count) + expect(response).to have_http_status(422) + end + end end end diff --git a/spec/requests/api/fasp/data_sharing/v0/continuations_spec.rb b/spec/requests/api/fasp/data_sharing/v0/continuations_spec.rb index 67265fc96d..59ab44d0c4 100644 --- a/spec/requests/api/fasp/data_sharing/v0/continuations_spec.rb +++ b/spec/requests/api/fasp/data_sharing/v0/continuations_spec.rb @@ -2,8 +2,21 @@ require 'rails_helper' -RSpec.describe 'Api::Fasp::DataSharing::V0::Continuations' do - describe 'GET /index' do - pending "add some examples (or delete) #{__FILE__}" +RSpec.describe 'Api::Fasp::DataSharing::V0::Continuations', feature: :fasp do + include ProviderRequestHelper + + describe 'POST /api/fasp/data_sharing/v0/backfill_requests/:id/continuations' do + let(:backfill_request) { Fabricate(:fasp_backfill_request) } + let(:provider) { backfill_request.fasp_provider } + + it 'queues a job to continue the given backfill request' do + headers = request_authentication_headers(provider, + url: api_fasp_data_sharing_v0_backfill_request_continuation_url(backfill_request), + method: :post) + + post api_fasp_data_sharing_v0_backfill_request_continuation_path(backfill_request), headers:, as: :json + expect(response).to have_http_status(204) + expect(Fasp::BackfillWorker).to have_enqueued_sidekiq_job(backfill_request.id) + end end end diff --git a/spec/requests/api/fasp/data_sharing/v0/event_subscriptions_spec.rb b/spec/requests/api/fasp/data_sharing/v0/event_subscriptions_spec.rb index 8f6b8873db..beab9e326f 100644 --- a/spec/requests/api/fasp/data_sharing/v0/event_subscriptions_spec.rb +++ b/spec/requests/api/fasp/data_sharing/v0/event_subscriptions_spec.rb @@ -2,8 +2,56 @@ require 'rails_helper' -RSpec.describe 'Api::Fasp::DataSharing::V0::EventSubscriptions' do - describe 'GET /index' do - pending "add some examples (or delete) #{__FILE__}" +RSpec.describe 'Api::Fasp::DataSharing::V0::EventSubscriptions', feature: :fasp do + include ProviderRequestHelper + + describe 'POST /api/fasp/data_sharing/v0/event_subscriptions' do + let(:provider) { Fabricate(:fasp_provider) } + + context 'with valid parameters' do + it 'creates a new subscription' do + params = { category: 'content', subscriptionType: 'lifecycle', maxBatchSize: 10 } + headers = request_authentication_headers(provider, + url: api_fasp_data_sharing_v0_event_subscriptions_url, + method: :post, + body: params) + + expect do + post api_fasp_data_sharing_v0_event_subscriptions_path, headers:, params:, as: :json + end.to change(Fasp::Subscription, :count).by(1) + expect(response).to have_http_status(201) + end + end + + context 'with invalid parameters' do + it 'does not create a subscription' do + params = { category: 'unknown' } + headers = request_authentication_headers(provider, + url: api_fasp_data_sharing_v0_event_subscriptions_url, + method: :post, + body: params) + + expect do + post api_fasp_data_sharing_v0_event_subscriptions_path, headers:, params:, as: :json + end.to_not change(Fasp::Subscription, :count) + expect(response).to have_http_status(422) + end + end + end + + describe 'DELETE /api/fasp/data_sharing/v0/event_subscriptions/:id' do + let(:subscription) { Fabricate(:fasp_subscription) } + let(:provider) { subscription.fasp_provider } + + it 'deletes the subscription' do + headers = request_authentication_headers(provider, + url: api_fasp_data_sharing_v0_event_subscription_url(subscription), + method: :delete) + + expect do + delete api_fasp_data_sharing_v0_event_subscription_path(subscription), headers:, as: :json + end.to change(Fasp::Subscription, :count).by(-1) + expect(response).to have_http_status(204) + end end end