spec/paperbin_handler_spec.rb in paperbin-0.0.2 vs spec/paperbin_handler_spec.rb in paperbin-0.0.3
- old
+ new
@@ -1,63 +1,110 @@
require "spec_helper"
describe Paperbin::Handler do
let(:item) { double(organisation_id: "org1") }
+ let(:target_id) { '123456789' }
+ let(:target_type) { 'Client' }
- subject { Paperbin::Handler.new("123456789", "client") }
+ let!(:handler) { Paperbin::Handler.new target_id, target_type }
before(:each) do
Paperbin::Config.default_options[:path] = '/path'
Paperbin::Config.default_options[:base_scope] = 'organisation_id'
- subject.stub(item: item)
+ handler.stub(item: item)
end
it "return correct formatted_id" do
- subject.formatted_id.should == "000123456789"
+ handler.formatted_id.should == "000123456789"
end
it "split formatted_id into 3 sections" do
- subject.split_id.should == ['0001', '2345', '6789']
+ handler.split_id.should == ['0001', '2345', '6789']
end
- it 'return options', focus: true do
- subject.options.should == {path: '/path', base_scope: 'organisation_id'}
+ it 'return options' do
+ handler.options.should == {path: '/path', base_scope: 'organisation_id'}
end
it "return directory" do
- subject.directory_path.should == "/path/org1/client/0001/2345/6789"
+ handler.directory_path.should == "/path/org1/Client/0001/2345/6789"
end
context 'directories' do
it 'generate directory when no exists' do
Dir.stub(exists?: false)
FileUtils.should_receive(:mkdir_p)
- subject.create_directory
+ handler.create_directory
end
it 'dont generate directory when exists' do
Dir.stub(exists?: true)
FileUtils.should_not_receive(:mkdir_p)
- subject.create_directory
+ handler.create_directory
end
end
context 'generate_files' do
-
let(:version_1) { double(id: 1, to_json: "json") }
let(:version_2) { double(id: 2, to_json: "json") }
let(:file) { double(write: true) }
before do
- subject.stub(versions: [version_1, version_2])
+ handler.stub(versions: [version_1, version_2])
File.stub(open: file)
end
it 'create correct Gzip files' do
Zlib::GzipWriter.should_receive(:open).twice
- subject.generate_files
+ handler.generate_files
+ end
+
+ end
+
+ describe '#check_versions' do
+ let(:version1) { double(id: 1, to_json: "json", delete: true) }
+ let(:version2) { double(id: 2, to_json: "json", delete: true) }
+ let(:file) { double(write: true) }
+
+ before do
+ handler.stub versions: [version1, version2]
+ handler.stub files_exist?: true
+ File.stub rename: true, delete: true
+ Paperbin::WriteWorker.stub perform_async: true
+ end
+
+ subject(:check_versions) { handler.check_versions }
+
+ context 'when md5 is valid' do
+ before { handler.stub md5_valid?: true }
+
+ it 'deletes the versions, except for the last one' do
+ expect(version1).to receive(:delete).once
+ expect(version2).to receive(:delete).never
+ check_versions
+ end
+
+ it 'renames the file' do
+ expect(File).to receive(:rename).twice
+ check_versions
+ end
+ end
+
+ context 'when md5 is invalid' do
+ before { handler.stub md5_valid?: false }
+
+ it 'removes the files' do
+ expect(File).to receive(:delete).twice
+ check_versions
+ end
+
+ it 'lodges a write worker to re-write the files' do
+ expect(Paperbin::WriteWorker).to receive(:perform_async).once
+ .with(target_id, target_type)
+ check_versions
+ end
end
end
end