imap-backup 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/README.md +6 -2
  4. data/bin/imap-backup +1 -1
  5. data/lib/email/mboxrd/message.rb +0 -1
  6. data/lib/imap/backup/account/connection.rb +28 -21
  7. data/lib/imap/backup/account/folder.rb +0 -1
  8. data/lib/imap/backup/serializer/mbox_enumerator.rb +1 -1
  9. data/lib/imap/backup/uploader.rb +10 -1
  10. data/lib/imap/backup/version.rb +2 -2
  11. data/spec/features/restore_spec.rb +75 -27
  12. data/spec/features/support/email_server.rb +1 -3
  13. data/spec/features/support/shared/message_fixtures.rb +8 -0
  14. data/spec/unit/email/mboxrd/message_spec.rb +0 -6
  15. data/spec/unit/imap/backup/account/connection_spec.rb +58 -43
  16. data/spec/unit/imap/backup/account/folder_spec.rb +16 -20
  17. data/spec/unit/imap/backup/configuration/account_spec.rb +31 -25
  18. data/spec/unit/imap/backup/configuration/asker_spec.rb +20 -17
  19. data/spec/unit/imap/backup/configuration/connection_tester_spec.rb +6 -10
  20. data/spec/unit/imap/backup/configuration/folder_chooser_spec.rb +16 -10
  21. data/spec/unit/imap/backup/configuration/list_spec.rb +6 -3
  22. data/spec/unit/imap/backup/configuration/setup_spec.rb +40 -25
  23. data/spec/unit/imap/backup/configuration/store_spec.rb +18 -16
  24. data/spec/unit/imap/backup/downloader_spec.rb +14 -14
  25. data/spec/unit/imap/backup/serializer/mbox_enumerator_spec.rb +6 -1
  26. data/spec/unit/imap/backup/serializer/mbox_spec.rb +54 -40
  27. data/spec/unit/imap/backup/serializer/mbox_store_spec.rb +49 -31
  28. data/spec/unit/imap/backup/uploader_spec.rb +20 -7
  29. data/spec/unit/imap/backup/utils_spec.rb +8 -9
  30. metadata +2 -2
@@ -2,7 +2,9 @@ describe Imap::Backup::Uploader do
2
2
  subject { described_class.new(folder, serializer) }
3
3
 
4
4
  let(:folder) do
5
- instance_double(Imap::Backup::Account::Folder, uids: [2, 3], append: 99)
5
+ instance_double(
6
+ Imap::Backup::Account::Folder, uids: [2, 3], append: 99, name: "foo"
7
+ )
6
8
  end
7
9
  let(:serializer) do
8
10
  instance_double(
@@ -11,27 +13,38 @@ describe Imap::Backup::Uploader do
11
13
  update_uid: nil
12
14
  )
13
15
  end
16
+ let(:missing_message) do
17
+ instance_double(Email::Mboxrd::Message, supplied_body: "missing message")
18
+ end
19
+ let(:existing_message) do
20
+ instance_double(Email::Mboxrd::Message, supplied_body: "existing message")
21
+ end
14
22
 
15
23
  describe "#run" do
16
24
  before do
17
- allow(serializer).to receive(:load).with(1) { "missing message" }
18
- allow(serializer).to receive(:load).with(2) { "existing message" }
19
- subject.run
25
+ allow(serializer).to receive(:load).with(1) { missing_message }
26
+ allow(serializer).to receive(:load).with(2) { existing_message }
20
27
  end
21
28
 
22
29
  context "with messages that are missing" do
23
30
  it "restores them" do
24
- expect(folder).to have_received(:append).with("missing message")
31
+ expect(folder).to receive(:append).with(missing_message)
32
+
33
+ subject.run
25
34
  end
26
35
 
27
36
  it "updates the local message id" do
28
- expect(serializer).to have_received(:update_uid).with(1, 99)
37
+ expect(serializer).to receive(:update_uid).with(1, 99)
38
+
39
+ subject.run
29
40
  end
30
41
  end
31
42
 
32
43
  context "with messages that are present on server" do
33
44
  it "does nothing" do
34
- expect(folder).to_not have_received(:append).with("existing message")
45
+ expect(folder).to_not receive(:append).with(existing_message)
46
+
47
+ subject.run
35
48
  end
36
49
  end
37
50
  end
@@ -5,8 +5,8 @@ describe Imap::Backup::Utils do
5
5
  let(:exists) { true }
6
6
 
7
7
  before do
8
- allow(File).to receive(:stat).and_return(stat)
9
- allow(File).to receive(:exist?).with(filename).and_return(exists)
8
+ allow(File).to receive(:stat) { stat }
9
+ allow(File).to receive(:exist?).with(filename) { exists }
10
10
  end
11
11
 
12
12
  describe ".check_permissions" do
@@ -72,22 +72,21 @@ describe Imap::Backup::Utils do
72
72
  end
73
73
 
74
74
  it "does nothing if an empty path is supplied" do
75
- described_class.make_folder("aaa", "", 0o222)
75
+ expect(FileUtils).to_not receive(:mkdir_p)
76
76
 
77
- expect(FileUtils).to_not have_received(:mkdir_p)
77
+ described_class.make_folder("aaa", "", 0o222)
78
78
  end
79
79
 
80
80
  it "creates the path" do
81
- described_class.make_folder("/base/path", "new/folder", 0o222)
81
+ expect(FileUtils).to receive(:mkdir_p).with("/base/path/new/folder")
82
82
 
83
- expect(FileUtils).to have_received(:mkdir_p).with("/base/path/new/folder")
83
+ described_class.make_folder("/base/path", "new/folder", 0o222)
84
84
  end
85
85
 
86
86
  it "sets permissions on the path" do
87
- described_class.make_folder("/base/path/new", "folder", 0o222)
87
+ expect(FileUtils).to receive(:chmod).with(0o222, "/base/path/new/folder")
88
88
 
89
- expect(FileUtils).
90
- to have_received(:chmod).with(0o222, "/base/path/new/folder")
89
+ described_class.make_folder("/base/path/new", "folder", 0o222)
91
90
  end
92
91
  end
93
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imap-backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Yates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-12 00:00:00.000000000 Z
11
+ date: 2019-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline