paperbin 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/paperbin/handler.rb +12 -13
- data/lib/paperbin/version.rb +1 -1
- data/spec/paperbin_handler_spec.rb +59 -12
- data/spec/spec_helper.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37c978c091cd658200ee80b49bfc08afae0d195c
|
4
|
+
data.tar.gz: 63a6141de7602abdb15b8fde994e586eb49e607b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be0a71594e218ad8ce48179b87d13acea5312663cee3307db411cf63ecd0c874e7634a22c0c12982c08e208da51a5c29031603f12ee7de77fc4b131123a98d0b
|
7
|
+
data.tar.gz: 7f44494d1dc2f4e5594f268c425d8ffd4eb20f50081bebfa9720bb78968840412b3e44e3a61d840cec99d178aed709b9731dda6a31c7961fecec6bd631e10ad5
|
data/.gitignore
CHANGED
data/lib/paperbin/handler.rb
CHANGED
@@ -93,23 +93,22 @@ class Paperbin::Handler < Struct.new(:id, :type)
|
|
93
93
|
|
94
94
|
def check_versions
|
95
95
|
versions.each_with_index do |version, index|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
96
|
+
# check both file exist or not
|
97
|
+
next unless files_exist?(md5_file(version), gz_file(version))
|
98
|
+
|
99
|
+
if md5_valid?(version)
|
100
|
+
process_valid_records(version, versions.last)
|
101
|
+
else
|
102
|
+
# remove both files
|
103
|
+
[gz_file(version), md5_file(version)].each do |f|
|
104
|
+
File.delete(f)
|
105
|
+
end
|
106
|
+
raise Errno::ENOENT
|
105
107
|
end
|
106
|
-
raise Errno::ENOENT
|
107
|
-
end
|
108
108
|
end
|
109
|
-
|
110
109
|
rescue Errno::ENOENT
|
111
110
|
# lodge worker unless valid
|
112
|
-
Paperbin::WriteWorker.perform_async(
|
111
|
+
Paperbin::WriteWorker.perform_async(id, type)
|
113
112
|
end
|
114
113
|
end
|
115
114
|
|
data/lib/paperbin/version.rb
CHANGED
@@ -3,28 +3,30 @@ require "spec_helper"
|
|
3
3
|
describe Paperbin::Handler do
|
4
4
|
|
5
5
|
let(:item) { double(organisation_id: "org1") }
|
6
|
+
let(:target_id) { '123456789' }
|
7
|
+
let(:target_type) { 'Client' }
|
6
8
|
|
7
|
-
|
9
|
+
let!(:handler) { Paperbin::Handler.new target_id, target_type }
|
8
10
|
before(:each) do
|
9
11
|
Paperbin::Config.default_options[:path] = '/path'
|
10
12
|
Paperbin::Config.default_options[:base_scope] = 'organisation_id'
|
11
|
-
|
13
|
+
handler.stub(item: item)
|
12
14
|
end
|
13
15
|
|
14
16
|
it "return correct formatted_id" do
|
15
|
-
|
17
|
+
handler.formatted_id.should == "000123456789"
|
16
18
|
end
|
17
19
|
|
18
20
|
it "split formatted_id into 3 sections" do
|
19
|
-
|
21
|
+
handler.split_id.should == ['0001', '2345', '6789']
|
20
22
|
end
|
21
23
|
|
22
|
-
it 'return options'
|
23
|
-
|
24
|
+
it 'return options' do
|
25
|
+
handler.options.should == {path: '/path', base_scope: 'organisation_id'}
|
24
26
|
end
|
25
27
|
|
26
28
|
it "return directory" do
|
27
|
-
|
29
|
+
handler.directory_path.should == "/path/org1/Client/0001/2345/6789"
|
28
30
|
end
|
29
31
|
|
30
32
|
context 'directories' do
|
@@ -32,31 +34,76 @@ describe Paperbin::Handler do
|
|
32
34
|
it 'generate directory when no exists' do
|
33
35
|
Dir.stub(exists?: false)
|
34
36
|
FileUtils.should_receive(:mkdir_p)
|
35
|
-
|
37
|
+
handler.create_directory
|
36
38
|
end
|
37
39
|
|
38
40
|
it 'dont generate directory when exists' do
|
39
41
|
Dir.stub(exists?: true)
|
40
42
|
FileUtils.should_not_receive(:mkdir_p)
|
41
|
-
|
43
|
+
handler.create_directory
|
42
44
|
end
|
43
45
|
|
44
46
|
end
|
45
47
|
|
46
48
|
context 'generate_files' do
|
47
|
-
|
48
49
|
let(:version_1) { double(id: 1, to_json: "json") }
|
49
50
|
let(:version_2) { double(id: 2, to_json: "json") }
|
50
51
|
let(:file) { double(write: true) }
|
51
52
|
|
52
53
|
before do
|
53
|
-
|
54
|
+
handler.stub(versions: [version_1, version_2])
|
54
55
|
File.stub(open: file)
|
55
56
|
end
|
56
57
|
|
57
58
|
it 'create correct Gzip files' do
|
58
59
|
Zlib::GzipWriter.should_receive(:open).twice
|
59
|
-
|
60
|
+
handler.generate_files
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#check_versions' do
|
66
|
+
let(:version1) { double(id: 1, to_json: "json", delete: true) }
|
67
|
+
let(:version2) { double(id: 2, to_json: "json", delete: true) }
|
68
|
+
let(:file) { double(write: true) }
|
69
|
+
|
70
|
+
before do
|
71
|
+
handler.stub versions: [version1, version2]
|
72
|
+
handler.stub files_exist?: true
|
73
|
+
File.stub rename: true, delete: true
|
74
|
+
Paperbin::WriteWorker.stub perform_async: true
|
75
|
+
end
|
76
|
+
|
77
|
+
subject(:check_versions) { handler.check_versions }
|
78
|
+
|
79
|
+
context 'when md5 is valid' do
|
80
|
+
before { handler.stub md5_valid?: true }
|
81
|
+
|
82
|
+
it 'deletes the versions, except for the last one' do
|
83
|
+
expect(version1).to receive(:delete).once
|
84
|
+
expect(version2).to receive(:delete).never
|
85
|
+
check_versions
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'renames the file' do
|
89
|
+
expect(File).to receive(:rename).twice
|
90
|
+
check_versions
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'when md5 is invalid' do
|
95
|
+
before { handler.stub md5_valid?: false }
|
96
|
+
|
97
|
+
it 'removes the files' do
|
98
|
+
expect(File).to receive(:delete).twice
|
99
|
+
check_versions
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'lodges a write worker to re-write the files' do
|
103
|
+
expect(Paperbin::WriteWorker).to receive(:perform_async).once
|
104
|
+
.with(target_id, target_type)
|
105
|
+
check_versions
|
106
|
+
end
|
60
107
|
end
|
61
108
|
|
62
109
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,10 @@
|
|
1
1
|
require 'paperbin'
|
2
2
|
|
3
|
+
RSpec.configure do |config|
|
4
|
+
config.mock_with :rspec
|
5
|
+
|
6
|
+
config.filter_run focus: true
|
7
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
8
|
+
config.run_all_when_everything_filtered = true
|
9
|
+
config.alias_example_to :fit, focus: true
|
10
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paperbin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- morhekil
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2014-01-
|
16
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: bundler
|