Skip to content

Commit 3dab92d

Browse files
committed
Add failing spec
1 parent c87e36e commit 3dab92d

File tree

4 files changed

+248
-0
lines changed

4 files changed

+248
-0
lines changed

spec/fixtures/cassettes/files_fetch_image.yml

Lines changed: 68 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/fixtures/cassettes/files_fetch_image_poll.yml

Lines changed: 75 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/fixtures/cassettes/files_fetch_image_upload.yml

Lines changed: 78 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/openai/client/files_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,5 +128,32 @@
128128
end
129129
end
130130
end
131+
132+
describe "#fetch_image" do
133+
let(:cassette) { "files fetch_image" }
134+
let(:upload_cassette) { "#{cassette} upload" }
135+
let(:filename) { "image.png" }
136+
let(:file) { File.join(RSPEC_ROOT, "fixtures/files", filename) }
137+
let(:upload_purpose) { "vision" }
138+
139+
def poll_until_processed(max_attempts: 10)
140+
VCR.use_cassette("#{cassette}_poll", record: :new_episodes) do
141+
max_attempts.times do |attempt|
142+
retrieved = OpenAI::Client.new.files.retrieve(id: upload_id)
143+
return retrieved if retrieved["status"] == "processed"
144+
raise "File not processed after #{max_attempts} attempts" if attempt == max_attempts - 1
145+
end
146+
end
147+
end
148+
149+
it "succeeds in uploading and retrieving an image" do
150+
VCR.use_cassette(cassette) do
151+
poll_until_processed
152+
response = OpenAI::Client.new.files.content(id: upload_id)
153+
expect(response).to be_a(String)
154+
expect(response.size).to be > 0
155+
end
156+
end
157+
end
131158
end
132159
end

0 commit comments

Comments
 (0)