Skip to content

Commit 0136f62

Browse files
committed
add tests
1 parent ff036ba commit 0136f62

File tree

3 files changed

+239
-2
lines changed

3 files changed

+239
-2
lines changed

lib/imagekitio/constants/url.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module URL
88
UPLOAD = "/upload"
99
REMOTE_METADATA_FULL_URL = "https://api.imagekit.io/v1/metadata"
1010
BULK_BASE_URL = 'https://api.imagekit.io/v1/bulkJobs'
11-
API_BASE_URL = 'https://api.imagekit.io/v1/'
11+
API_BASE_URL = 'https://api.imagekit.io/v1'
1212
end
1313
end
1414
end

lib/imagekitio/file.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22
require_relative "utils/formatter"
3-
3+
require 'byebug'
44
module ImageKitIo
55
class File
66
include Utils::Formatter

test/imagekit/file_test.rb

Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,5 +740,242 @@
740740
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/metadata?url=http://example.com/fakefileurl")
741741
expect(resp[:code]).to eq(200)
742742
end
743+
744+
context 'batch tags' do
745+
let!(:req_obj) { double }
746+
let(:file_ids) { %[file_id_1 file_id_2] }
747+
748+
before do
749+
allow(ImageKitIo::Request)
750+
.to receive(:new)
751+
.with(private_key, public_key, url_endpoint)
752+
.and_return(req_obj)
753+
allow(req_obj)
754+
.to receive(:create_headers)
755+
.and_return({})
756+
allow(req_obj)
757+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
758+
.and_return({code: 200, body: { successfullyUpdatedFileIds: file_ids }})
759+
@sut = ImageKitIo::File.new(req_obj)
760+
end
761+
762+
it 'test_add_batch_tags' do
763+
resp = @sut.add_batch_tags(file_ids, ['custom_tag'])
764+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/files/addTags")
765+
expect(@ac[:payload]).to eq("{\"fileIds\":\"file_id_1 file_id_2\",\"tags\":[\"custom_tag\"]}")
766+
expect(resp[:code]).to eq(200)
767+
end
768+
769+
it 'test_remove_batch_tags' do
770+
resp = @sut.remove_batch_tags(file_ids, ['custom_tag_remove'])
771+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/files/removeTags")
772+
expect(@ac[:payload]).to eq("{\"fileIds\":\"file_id_1 file_id_2\",\"tags\":[\"custom_tag_remove\"]}")
773+
expect(resp[:code]).to eq(200)
774+
end
775+
776+
it 'test_remove_batch_ai_tags' do
777+
resp = @sut.remove_batch_ai_tags(file_ids, ['custom_ai_tag'])
778+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/files/removeAITags")
779+
expect(@ac[:payload]).to eq("{\"fileIds\":\"file_id_1 file_id_2\",\"AITags\":[\"custom_ai_tag\"]}")
780+
expect(resp[:code]).to eq(200)
781+
end
782+
end
783+
784+
context 'copy' do
785+
let!(:req_obj) { double }
786+
before do
787+
allow(ImageKitIo::Request)
788+
.to receive(:new)
789+
.with(private_key, public_key, url_endpoint)
790+
.and_return(req_obj)
791+
allow(req_obj)
792+
.to receive(:create_headers)
793+
.and_return({})
794+
allow(req_obj)
795+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
796+
.and_return({code: 200, body: { success: true }})
797+
@sut = ImageKitIo::File.new(req_obj)
798+
end
799+
800+
it 'raises error when parameter not provided' do
801+
expect {
802+
@sut.copy('', nil)
803+
}.to raise_error(ArgumentError)
804+
805+
end
806+
807+
it 'test_copy' do
808+
source_file = 'test/dummy.png'
809+
destination_path = '/my_image'
810+
resp = @sut.copy(source_file, destination_path)
811+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/files/copy")
812+
expect(@ac[:payload]).to eq({:sourceFilePath=>"test/dummy.png", :destinationPath=>"/my_image"})
813+
expect(resp[:code]).to eq(200)
814+
end
815+
end
816+
817+
context 'move' do
818+
let!(:req_obj) { double }
819+
before do
820+
allow(ImageKitIo::Request)
821+
.to receive(:new)
822+
.with(private_key, public_key, url_endpoint)
823+
.and_return(req_obj)
824+
allow(req_obj)
825+
.to receive(:create_headers)
826+
.and_return({})
827+
allow(req_obj)
828+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
829+
.and_return({code: 200, body: { success: true }})
830+
@sut = ImageKitIo::File.new(req_obj)
831+
end
832+
833+
it 'raises error when parameter not provided' do
834+
expect {
835+
@sut.move('', nil)
836+
}.to raise_error(ArgumentError)
837+
838+
end
839+
840+
it 'test_move' do
841+
source_file = 'test/dummy.png'
842+
destination_path = '/my_image'
843+
resp = @sut.move(source_file, destination_path)
844+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/files/move")
845+
expect(@ac[:payload]).to eq({:sourceFilePath=>"test/dummy.png", :destinationPath=>"/my_image"})
846+
expect(resp[:code]).to eq(200)
847+
end
848+
end
849+
850+
context 'rename' do
851+
let!(:req_obj) { double }
852+
before do
853+
allow(ImageKitIo::Request)
854+
.to receive(:new)
855+
.with(private_key, public_key, url_endpoint)
856+
.and_return(req_obj)
857+
allow(req_obj)
858+
.to receive(:create_headers)
859+
.and_return({})
860+
allow(req_obj)
861+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
862+
.and_return({code: 200, body: { success: true }})
863+
@sut = ImageKitIo::File.new(req_obj)
864+
end
865+
866+
it 'raises error when parameter not provided' do
867+
expect {
868+
@sut.rename('', nil)
869+
}.to raise_error(ArgumentError)
870+
871+
end
872+
873+
it 'test_move' do
874+
source_file = 'test/dummy.png'
875+
new_name = 'my_image.png'
876+
resp = @sut.rename(source_file, new_name)
877+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/files/rename")
878+
expect(@ac[:payload]).to eq({:filePath=>"test/dummy.png", :newFileName=>"my_image.png"})
879+
expect(@ac[:method]).to eq('put')
880+
expect(resp[:code]).to eq(200)
881+
end
882+
end
883+
884+
context 'folder' do
885+
let!(:req_obj) { double }
886+
before do
887+
allow(ImageKitIo::Request)
888+
.to receive(:new)
889+
.with(private_key, public_key, url_endpoint)
890+
.and_return(req_obj)
891+
allow(req_obj)
892+
.to receive(:create_headers)
893+
.and_return({})
894+
end
895+
896+
it 'raises error when parameter not provided' do
897+
@sut = ImageKitIo::File.new(req_obj)
898+
expect {
899+
@sut.create_folder('', nil)
900+
}.to raise_error(ArgumentError)
901+
end
902+
903+
it 'test_create_folder' do
904+
allow(req_obj)
905+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
906+
.and_return({code: 201, body: { success: true }})
907+
@sut = ImageKitIo::File.new(req_obj)
908+
folder_name = 'test_folder'
909+
parent_folder = ''
910+
resp = @sut.create_folder(folder_name, parent_folder)
911+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/folder")
912+
expect(@ac[:payload]).to eq("{\"folderName\":\"test_folder\",\"parentFolderPath\":\"\"}")
913+
expect(@ac[:method]).to eq('post')
914+
expect(resp[:code]).to eq(201)
915+
end
916+
917+
it 'test_delete_folder' do
918+
allow(req_obj)
919+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
920+
.and_return({code: 204, body: { success: true }})
921+
@sut = ImageKitIo::File.new(req_obj)
922+
folder_path = 'test_folder'
923+
resp = @sut.delete_folder(folder_path)
924+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/folder")
925+
expect(@ac[:method]).to eq('delete')
926+
expect(resp[:success]).to be(true)
927+
end
928+
929+
it 'test_copy_folder' do
930+
allow(req_obj)
931+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
932+
.and_return({code: 200, body: { jobId: '123456' }})
933+
@sut = ImageKitIo::File.new(req_obj)
934+
source_folder = 'my_folder'
935+
destination_path = 'copied'
936+
resp = @sut.copy_folder(source_folder, destination_path)
937+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/bulkJobs/copyFolder")
938+
expect(@ac[:method]).to eq('post')
939+
expect(@ac[:payload]).to eq({:sourceFolderPath=>"my_folder", :destinationPath=>"copied"})
940+
expect(resp[:body][:jobId]).to eq('123456')
941+
end
942+
943+
it 'test_move_folder' do
944+
allow(req_obj)
945+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
946+
.and_return({code: 200, body: { jobId: '123456' }})
947+
@sut = ImageKitIo::File.new(req_obj)
948+
source_folder = 'my_folder/inside_folder'
949+
destination_path = 'moved/inside_another_folder'
950+
resp = @sut.move_folder(source_folder, destination_path)
951+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/bulkJobs/moveFolder")
952+
expect(@ac[:method]).to eq('post')
953+
expect(@ac[:payload]).to eq({:sourceFolderPath=>"my_folder/inside_folder", :destinationPath=>"moved/inside_another_folder"})
954+
expect(resp[:body][:jobId]).to eq('123456')
955+
end
956+
end
957+
958+
it 'test_job_status' do
959+
req_obj = double
960+
job_id = '619e038e20b7ef03efc4eeb9'
961+
allow(ImageKitIo::Request)
962+
.to receive(:new)
963+
.with(private_key, public_key, url_endpoint)
964+
.and_return(req_obj)
965+
allow(req_obj)
966+
.to receive(:create_headers)
967+
.and_return({})
968+
response_body = {"jobId"=> job_id, "type"=>"MOVE_FOLDER", "status"=>"Completed"}
969+
allow(req_obj)
970+
.to receive(:request){|method,url,headers,payload| @ac={method: method, url: url, headers: headers, payload: payload}}
971+
.and_return({code: 200, body: response_body })
972+
@sut = ImageKitIo::File.new(req_obj)
973+
resp = @sut.job_status(job_id)
974+
expect(@ac[:url]).to eq("https://api.imagekit.io/v1/bulkJobs/#{job_id}")
975+
expect(@ac[:method]).to eq('get')
976+
expect(@ac[:payload]).to eq({ :jobId => job_id})
977+
expect(resp[:body]['jobId']).to eq(job_id)
978+
expect(resp[:body]['status']).to eq('Completed')
979+
end
743980
end
744981
end

0 commit comments

Comments
 (0)