Add RSpec suite with WebMock: core, OAuth, pagination, and resource behavior

This commit is contained in:
2026-05-29 15:01:18 +02:00
parent 3b4d5ae5c3
commit 6a4380637a
7 changed files with 413 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
# frozen_string_literal: true
RSpec.describe Fiken::Collection do
subject(:client) { Fiken::Client.new(token: "t") }
def page_headers(page:, page_count:, result_count:)
{
"Fiken-Api-Page" => page.to_s,
"Fiken-Api-Page-Size" => "25",
"Fiken-Api-Page-Count" => page_count.to_s,
"Fiken-Api-Result-Count" => result_count.to_s
}
end
it "exposes pagination metadata from response headers" do
stub_fiken(:get, "/companies", body: [{ "slug" => "a" }],
headers: page_headers(page: 0, page_count: 3, result_count: 3))
collection = client.companies.list
expect(collection.page).to eq(0)
expect(collection.page_count).to eq(3)
expect(collection.result_count).to eq(3)
expect(collection.last_page?).to be(false)
end
it "walks every page with auto_paging_each" do
stub_request(:get, "#{API_BASE}/companies")
.to_return(status: 200, body: JSON.generate([{ "slug" => "a" }]),
headers: { "Content-Type" => "application/json" }
.merge(page_headers(page: 0, page_count: 2, result_count: 2)))
stub_request(:get, "#{API_BASE}/companies")
.with(query: { "page" => "1" })
.to_return(status: 200, body: JSON.generate([{ "slug" => "b" }]),
headers: { "Content-Type" => "application/json" }
.merge(page_headers(page: 1, page_count: 2, result_count: 2)))
slugs = client.companies.list.auto_paging_each.map(&:slug)
expect(slugs).to eq(%w[a b])
end
end