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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57b99cdc2558a90d6f5bf066f1277e8f7cb04585
4
- data.tar.gz: 8cacd606f0b71d8aa5f9ea02c01932d9231b028f
3
+ metadata.gz: 37c978c091cd658200ee80b49bfc08afae0d195c
4
+ data.tar.gz: 63a6141de7602abdb15b8fde994e586eb49e607b
5
5
  SHA512:
6
- metadata.gz: 97b57662315dce3d78bfe4ec3d0d4c909b95eed5c172267298eaff605b84a3c6a27656b1f989811202dcfe175978fa34b3ad23ecda6c751de2811c982f958aa9
7
- data.tar.gz: 4439227f06d3c90236761801db296629054bdd20dc22b6ae82add253e7567eafab6c67d769a683d5c0637c79087774bf1fc2b3011503c3483fe6a06cf6131d7c
6
+ metadata.gz: be0a71594e218ad8ce48179b87d13acea5312663cee3307db411cf63ecd0c874e7634a22c0c12982c08e208da51a5c29031603f12ee7de77fc4b131123a98d0b
7
+ data.tar.gz: 7f44494d1dc2f4e5594f268c425d8ffd4eb20f50081bebfa9720bb78968840412b3e44e3a61d840cec99d178aed709b9731dda6a31c7961fecec6bd631e10ad5
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ tmp
19
19
  .ruby-version
20
20
  .ruby-gemset
21
21
  .*.swp
22
+ bin
@@ -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
- # 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)
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(version.item_id, version.item_type)
111
+ Paperbin::WriteWorker.perform_async(id, type)
113
112
  end
114
113
  end
115
114
 
@@ -1,3 +1,3 @@
1
1
  module Paperbin
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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
- subject { Paperbin::Handler.new("123456789", "client") }
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
- subject.stub(item: item)
13
+ handler.stub(item: item)
12
14
  end
13
15
 
14
16
  it "return correct formatted_id" do
15
- subject.formatted_id.should == "000123456789"
17
+ handler.formatted_id.should == "000123456789"
16
18
  end
17
19
 
18
20
  it "split formatted_id into 3 sections" do
19
- subject.split_id.should == ['0001', '2345', '6789']
21
+ handler.split_id.should == ['0001', '2345', '6789']
20
22
  end
21
23
 
22
- it 'return options', focus: true do
23
- subject.options.should == {path: '/path', base_scope: 'organisation_id'}
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
- subject.directory_path.should == "/path/org1/client/0001/2345/6789"
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
- subject.create_directory
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
- subject.create_directory
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
- subject.stub(versions: [version_1, version_2])
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
- subject.generate_files
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.2
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-17 00:00:00.000000000 Z
16
+ date: 2014-01-22 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: bundler