ppl 4.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +1 -0
- data/features/step_definitions/ppl_steps.rb +3 -3
- data/ppl.gemspec +1 -1
- data/spec/ppl/adapter/color/colored_spec.rb +3 -3
- data/spec/ppl/adapter/email_scraper/mail_spec.rb +13 -13
- data/spec/ppl/adapter/output_spec.rb +7 -7
- data/spec/ppl/adapter/storage/disk_spec.rb +18 -18
- data/spec/ppl/adapter/storage/factory_spec.rb +3 -3
- data/spec/ppl/adapter/storage/git_spec.rb +31 -31
- data/spec/ppl/adapter/storage_spec.rb +3 -3
- data/spec/ppl/adapter/vcard/greencard_spec.rb +45 -45
- data/spec/ppl/application/bootstrap_spec.rb +128 -128
- data/spec/ppl/application/command_spec.rb +8 -8
- data/spec/ppl/application/command_suite_spec.rb +7 -7
- data/spec/ppl/application/configuration_spec.rb +16 -16
- data/spec/ppl/application/input_spec.rb +2 -2
- data/spec/ppl/application/router_spec.rb +8 -8
- data/spec/ppl/application/shell_spec.rb +39 -39
- data/spec/ppl/command/add_spec.rb +6 -6
- data/spec/ppl/command/age_spec.rb +7 -7
- data/spec/ppl/command/attribute_spec.rb +22 -22
- data/spec/ppl/command/bday_spec.rb +11 -11
- data/spec/ppl/command/completion_spec.rb +7 -7
- data/spec/ppl/command/email_spec.rb +19 -19
- data/spec/ppl/command/external_spec.rb +7 -7
- data/spec/ppl/command/help_spec.rb +15 -15
- data/spec/ppl/command/init_spec.rb +5 -5
- data/spec/ppl/command/ls_spec.rb +12 -12
- data/spec/ppl/command/mutt_spec.rb +33 -33
- data/spec/ppl/command/mv_spec.rb +11 -11
- data/spec/ppl/command/name_spec.rb +17 -17
- data/spec/ppl/command/nick_spec.rb +1 -1
- data/spec/ppl/command/org_spec.rb +1 -1
- data/spec/ppl/command/phone_spec.rb +15 -15
- data/spec/ppl/command/post_spec.rb +29 -29
- data/spec/ppl/command/rm_spec.rb +3 -3
- data/spec/ppl/command/scrape_spec.rb +24 -24
- data/spec/ppl/command/shell_spec.rb +41 -41
- data/spec/ppl/command/show_spec.rb +4 -4
- data/spec/ppl/command/url_spec.rb +1 -1
- data/spec/ppl/command/version_spec.rb +4 -4
- data/spec/ppl/entity/address_book_spec.rb +1 -1
- data/spec/ppl/entity/contact_spec.rb +16 -16
- data/spec/ppl/entity/email_address_spec.rb +3 -3
- data/spec/ppl/entity/name_spec.rb +1 -1
- data/spec/ppl/entity/phone_number_spec.rb +5 -5
- data/spec/ppl/entity/postal_address_spec.rb +2 -2
- data/spec/ppl/format/address_book/ages_spec.rb +3 -3
- data/spec/ppl/format/address_book/birthdays_spec.rb +3 -3
- data/spec/ppl/format/address_book/email_addresses_spec.rb +3 -3
- data/spec/ppl/format/address_book/mutt_query_spec.rb +3 -3
- data/spec/ppl/format/address_book/names_spec.rb +3 -3
- data/spec/ppl/format/address_book/nicknames_spec.rb +4 -4
- data/spec/ppl/format/address_book/one_line_spec.rb +5 -5
- data/spec/ppl/format/address_book/organizations_spec.rb +3 -3
- data/spec/ppl/format/address_book/phone_numbers_spec.rb +3 -3
- data/spec/ppl/format/address_book/postal_addresses_spec.rb +2 -2
- data/spec/ppl/format/address_book/urls_spec.rb +3 -3
- data/spec/ppl/format/contact/age_spec.rb +8 -8
- data/spec/ppl/format/contact/birthday_spec.rb +4 -4
- data/spec/ppl/format/contact/email_addresses_spec.rb +3 -3
- data/spec/ppl/format/contact/full_spec.rb +11 -11
- data/spec/ppl/format/contact/nicknames_spec.rb +4 -4
- data/spec/ppl/format/contact/organization_spec.rb +4 -4
- data/spec/ppl/format/contact/phone_number_spec.rb +4 -4
- data/spec/ppl/format/contact/postal_address_spec.rb +1 -1
- data/spec/ppl/format/contact/postal_addresses_spec.rb +3 -3
- data/spec/ppl/format/contact/urls_spec.rb +4 -4
- data/spec/ppl/format/custom/contact_spec.rb +13 -13
- data/spec/ppl/format/custom/email_address_spec.rb +3 -3
- data/spec/ppl/format/custom/phone_number_spec.rb +4 -4
- data/spec/ppl/format/custom_spec.rb +6 -6
- data/spec/ppl/format/name/full_only_spec.rb +4 -4
- data/spec/ppl/format/postal_address/multi_line_spec.rb +10 -10
- data/spec/ppl/format/postal_address/one_line_spec.rb +9 -9
- data/spec/ppl/format/table_spec.rb +11 -11
- data/spec/ppl/service/email_address_spec.rb +13 -13
- data/spec/ppl/service/name_spec.rb +9 -9
- data/spec/ppl/service/phone_number_spec.rb +11 -11
- data/spec/ppl/service/postal_address_spec.rb +20 -20
- data/spec/spec_helper.rb +3 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4cc246db0a4e91b85f3f04c9c7961ff4e564c9ce91ba87631d4efdabe6c0aec0
|
4
|
+
data.tar.gz: cc829862f67814f88a44a8f50367b7a453d2deee549d2f73af9b4f7c47855b4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e32285452876a1a7312a4a683b18bbdca0ff2e45bea87034def7bd794a0044bbd8c5e6a8b2067da36a12a070345afeb46ff03b8e698ae8dda1003c3bc491f7a4
|
7
|
+
data.tar.gz: aab66b67e9def63ef307be8ea85619d7346f4a77897fbe1dd29bc3db847d1dbe496dfe69007e515da2c282a7f128f516c870d24d069710c6f703888262822cd8
|
data/.github/workflows/build.yml
CHANGED
@@ -11,11 +11,11 @@ When /^I run "ppl ([^"]+)"$/ do |command|
|
|
11
11
|
end
|
12
12
|
|
13
13
|
Then /^it should succeed$/ do
|
14
|
-
$?.exitstatus.
|
14
|
+
expect($?.exitstatus).to eq 0
|
15
15
|
end
|
16
16
|
|
17
17
|
Then /^it should fail$/ do
|
18
|
-
$?.exitstatus.
|
18
|
+
expect($?.exitstatus).not_to eq 0
|
19
19
|
end
|
20
20
|
|
21
21
|
Then /^there should be (\d+) contacts?$/ do |n|
|
@@ -28,7 +28,7 @@ end
|
|
28
28
|
|
29
29
|
Then /^(bob) should have (\d+) email addresse?s?$/ do |name, number|
|
30
30
|
@email_addresses = ppl("email #{name}").split("\n")
|
31
|
-
@email_addresses.length.
|
31
|
+
expect(@email_addresses.length).to eq number.to_i
|
32
32
|
end
|
33
33
|
|
34
34
|
Then /^(bob) should have (\d+) nicknames?$/ do |name, number|
|
data/ppl.gemspec
CHANGED
@@ -8,13 +8,13 @@ describe Ppl::Adapter::Color::Colored do
|
|
8
8
|
|
9
9
|
it "should colorize the string using the monkeypatched String method" do
|
10
10
|
string = "example"
|
11
|
-
string.
|
12
|
-
@adapter.colorize(string, "red").
|
11
|
+
expect(string).to receive(:red).and_return("red example")
|
12
|
+
expect(@adapter.colorize(string, "red")).to eq "red example"
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should only attempt to colorize the string if the color exists" do
|
16
16
|
string = "example"
|
17
|
-
@adapter.colorize(string, "neon").
|
17
|
+
expect(@adapter.colorize(string, "neon")).to eq "example"
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
@@ -11,7 +11,7 @@ describe Ppl::Adapter::EmailScraper::Mail do
|
|
11
11
|
describe "#scrape_contacts" do
|
12
12
|
|
13
13
|
it "should return an array" do
|
14
|
-
@adapter.scrape_contacts("").
|
14
|
+
expect(@adapter.scrape_contacts("")).to eq []
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should scrape the sender's name" do
|
@@ -26,9 +26,9 @@ describe Ppl::Adapter::EmailScraper::Mail do
|
|
26
26
|
"This is a test email.",
|
27
27
|
"Bye!",
|
28
28
|
].join("\n")
|
29
|
-
@storage.
|
29
|
+
expect(@storage).to receive(:load_contact).and_return(nil)
|
30
30
|
contacts = @adapter.scrape_contacts(email)
|
31
|
-
contacts.first.name.full.
|
31
|
+
expect(contacts.first.name.full).to eq "Test User"
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should scrape the sender's email address" do
|
@@ -43,9 +43,9 @@ describe Ppl::Adapter::EmailScraper::Mail do
|
|
43
43
|
"This is a test email.",
|
44
44
|
"Bye!",
|
45
45
|
].join("\n")
|
46
|
-
@storage.
|
46
|
+
expect(@storage).to receive(:load_contact).and_return(nil)
|
47
47
|
contacts = @adapter.scrape_contacts(email)
|
48
|
-
contacts.first.email_addresses.first.address.
|
48
|
+
expect(contacts.first.email_addresses.first.address).to eq "test@example.org"
|
49
49
|
end
|
50
50
|
|
51
51
|
it "should generate an ID for the sender based on their name" do
|
@@ -60,9 +60,9 @@ describe Ppl::Adapter::EmailScraper::Mail do
|
|
60
60
|
"This is a test email.",
|
61
61
|
"Bye!",
|
62
62
|
].join("\n")
|
63
|
-
@storage.
|
63
|
+
expect(@storage).to receive(:load_contact).and_return(nil)
|
64
64
|
contacts = @adapter.scrape_contacts(email)
|
65
|
-
contacts.first.id.
|
65
|
+
expect(contacts.first.id).to eq "test_user"
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should generate a sender ID based on email address if there's no name" do
|
@@ -78,7 +78,7 @@ describe Ppl::Adapter::EmailScraper::Mail do
|
|
78
78
|
"Bye!",
|
79
79
|
].join("\n")
|
80
80
|
contacts = @adapter.scrape_contacts(email)
|
81
|
-
contacts.first.id.
|
81
|
+
expect(contacts.first.id).to eq "test@example.org"
|
82
82
|
end
|
83
83
|
|
84
84
|
it "avoids overwriting an existing contact ID" do
|
@@ -93,10 +93,10 @@ describe Ppl::Adapter::EmailScraper::Mail do
|
|
93
93
|
"This is a test email.",
|
94
94
|
"Bye!",
|
95
95
|
].join("\n")
|
96
|
-
@storage.
|
97
|
-
@storage.
|
96
|
+
expect(@storage).to receive(:load_contact).with("test_user").and_return(Ppl::Entity::Contact.new)
|
97
|
+
expect(@storage).to receive(:load_contact).with("test_user_1").and_return(nil)
|
98
98
|
contacts = @adapter.scrape_contacts(email)
|
99
|
-
contacts.first.id.
|
99
|
+
expect(contacts.first.id).to eq "test_user_1"
|
100
100
|
end
|
101
101
|
|
102
102
|
it "allows non-ASCII sender names" do
|
@@ -112,10 +112,10 @@ describe Ppl::Adapter::EmailScraper::Mail do
|
|
112
112
|
"Bye!",
|
113
113
|
].join("\n")
|
114
114
|
|
115
|
-
@storage.
|
115
|
+
expect(@storage).to receive(:load_contact).and_return(nil)
|
116
116
|
contacts = @adapter.scrape_contacts(email)
|
117
117
|
|
118
|
-
contacts.first.name.full.
|
118
|
+
expect(contacts.first.name.full).to eq "Александр"
|
119
119
|
end
|
120
120
|
|
121
121
|
end
|
@@ -3,13 +3,13 @@ describe Ppl::Application::Output, "#initialize" do
|
|
3
3
|
it "should accept stdout" do
|
4
4
|
stdout = Object.new
|
5
5
|
@output = Ppl::Application::Output.new(stdout, nil)
|
6
|
-
@output.stdout.
|
6
|
+
expect(@output.stdout).to be stdout
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should accept stderr" do
|
10
10
|
stderr = Object.new
|
11
11
|
@output = Ppl::Application::Output.new(nil, stderr)
|
12
|
-
@output.stderr.
|
12
|
+
expect(@output.stderr).to be stderr
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
@@ -25,7 +25,7 @@ describe Ppl::Application::Output do
|
|
25
25
|
describe "#error" do
|
26
26
|
it "should delegate to stderr's puts method" do
|
27
27
|
string = "COMPUTER OVER. VIRUS = VERY YES"
|
28
|
-
@stderr.
|
28
|
+
expect(@stderr).to receive(:puts).with(string)
|
29
29
|
@output.error(string)
|
30
30
|
end
|
31
31
|
end
|
@@ -33,25 +33,25 @@ describe Ppl::Application::Output do
|
|
33
33
|
describe "#line" do
|
34
34
|
it "should delegate to stdout's puts method" do
|
35
35
|
string = "The quick brown fox"
|
36
|
-
@stdout.
|
36
|
+
expect(@stdout).to receive(:puts).with(string)
|
37
37
|
@output.line(string)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should not send carriage returns to stdout" do
|
41
41
|
string = "The quick brown fox
|
42
|
-
@stdout.
|
42
|
+
expect(@stdout).to receive(:puts).with("The quick brown fox")
|
43
43
|
@output.line(string)
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should not send carriage returns to stderr" do
|
47
47
|
string = "The quick brown fox
|
48
|
-
@stderr.
|
48
|
+
expect(@stderr).to receive(:puts).with("The quick brown fox")
|
49
49
|
@output.error(string)
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should not sanitise output if nil" do
|
53
53
|
string = nil
|
54
|
-
@stdout.
|
54
|
+
expect(@stdout).to receive(:puts).with(nil)
|
55
55
|
@output.line(string)
|
56
56
|
end
|
57
57
|
end
|
@@ -11,13 +11,13 @@ describe Ppl::Adapter::Storage::Disk, "#create_address_book" do
|
|
11
11
|
describe "#create_address_book" do
|
12
12
|
it "should create the directory if it doesn't exist yet" do
|
13
13
|
Ppl::Adapter::Storage::Disk.create_address_book("/contacts")
|
14
|
-
Dir.exists?("/contacts").
|
14
|
+
expect(Dir.exists?("/contacts")).to eq true
|
15
15
|
FileUtils.rm_rf("/contacts")
|
16
16
|
end
|
17
17
|
it "should return a Ppl::Adapter::Storage::Disk" do
|
18
18
|
disk = Ppl::Adapter::Storage::Disk.create_address_book("/contacts")
|
19
19
|
FileUtils.rm_rf("/contacts")
|
20
|
-
disk.
|
20
|
+
expect(disk).to be_a(Ppl::Adapter::Storage::Disk)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -28,7 +28,7 @@ describe Ppl::Adapter::Storage::Disk, "#initialize" do
|
|
28
28
|
it "should accept a Dir object" do
|
29
29
|
directory = Dir.new("/tmp")
|
30
30
|
@storage = Ppl::Adapter::Storage::Disk.new(directory)
|
31
|
-
@storage.directory.
|
31
|
+
expect(@storage.directory).to be directory
|
32
32
|
end
|
33
33
|
|
34
34
|
end
|
@@ -43,7 +43,7 @@ describe Ppl::Adapter::Storage::Disk do
|
|
43
43
|
it "should accept a vcard adapter" do
|
44
44
|
adapter = double(Ppl::Adapter::Vcard)
|
45
45
|
@storage.vcard_adapter = adapter
|
46
|
-
@storage.vcard_adapter.
|
46
|
+
expect(@storage.vcard_adapter).to be adapter
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
@@ -70,24 +70,24 @@ describe Ppl::Adapter::Storage::Disk do
|
|
70
70
|
|
71
71
|
describe "#path" do
|
72
72
|
it "should return the path of the directory" do
|
73
|
-
@storage.path.
|
73
|
+
expect(@storage.path).to eq "/contacts"
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
77
|
describe "#load_address_book" do
|
78
78
|
|
79
79
|
it "should return a Ppl::Entity::AddressBook" do
|
80
|
-
@storage.load_address_book.
|
80
|
+
expect(@storage.load_address_book).to be_a(Ppl::Entity::AddressBook)
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should fill the address book with the contacts in the directory" do
|
84
84
|
FileUtils.touch "/contacts/one.vcf"
|
85
85
|
FileUtils.touch "/contacts/two.vcf"
|
86
86
|
|
87
|
-
@adapter.
|
87
|
+
expect(@adapter).to receive(:decode).twice
|
88
88
|
|
89
89
|
address_book = @storage.load_address_book
|
90
|
-
address_book.contacts.count.
|
90
|
+
expect(address_book.contacts.count).to eq 2
|
91
91
|
end
|
92
92
|
|
93
93
|
end
|
@@ -95,19 +95,19 @@ describe Ppl::Adapter::Storage::Disk do
|
|
95
95
|
describe "#load_contact" do
|
96
96
|
|
97
97
|
it "should return nil if the given contact doesn't exist" do
|
98
|
-
@storage.load_contact("xyz").
|
98
|
+
expect(@storage.load_contact("xyz")).to be nil
|
99
99
|
end
|
100
100
|
|
101
101
|
it "should return a Ppl::Entity::Contact" do
|
102
102
|
FileUtils.touch "/contacts/one.vcf"
|
103
|
-
@adapter.
|
104
|
-
@storage.load_contact("one").
|
103
|
+
expect(@adapter).to receive(:decode).once.and_return(@contact)
|
104
|
+
expect(@storage.load_contact("one")).to be_a(Ppl::Entity::Contact)
|
105
105
|
end
|
106
106
|
|
107
107
|
it "should populate the contact's id" do
|
108
108
|
FileUtils.touch "/contacts/one.vcf"
|
109
|
-
@adapter.
|
110
|
-
@storage.load_contact("one").id.
|
109
|
+
expect(@adapter).to receive(:decode).once.and_return(@contact)
|
110
|
+
expect(@storage.load_contact("one").id).to eq "one"
|
111
111
|
end
|
112
112
|
|
113
113
|
end
|
@@ -115,12 +115,12 @@ describe Ppl::Adapter::Storage::Disk do
|
|
115
115
|
describe "#save_contact" do
|
116
116
|
|
117
117
|
it "should write the contact to disk" do
|
118
|
-
@adapter.
|
118
|
+
expect(@adapter).to receive(:encode).with(@contact).and_return("asdfg")
|
119
119
|
|
120
120
|
@contact.id = "test"
|
121
121
|
@storage.save_contact(@contact)
|
122
122
|
|
123
|
-
File.read("/contacts/test.vcf").
|
123
|
+
expect(File.read("/contacts/test.vcf")).to eq "asdfg"
|
124
124
|
end
|
125
125
|
|
126
126
|
end
|
@@ -130,20 +130,20 @@ describe Ppl::Adapter::Storage::Disk do
|
|
130
130
|
FileUtils.touch "/contacts/test.vcf"
|
131
131
|
@contact.id = "test"
|
132
132
|
@storage.delete_contact(@contact)
|
133
|
-
File.exists?("/contacts/test.vcf").
|
133
|
+
expect(File.exists?("/contacts/test.vcf")).to eq false
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
137
|
describe "#filename_for_contact" do
|
138
138
|
it "should base the filename on the contact's id" do
|
139
139
|
@contact.id = "test"
|
140
|
-
@storage.filename_for_contact(@contact).
|
140
|
+
expect(@storage.filename_for_contact(@contact)).to eq "/contacts/test.vcf"
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
144
144
|
describe "#filename_for_contact_id" do
|
145
145
|
it "should base the filename on the directory path" do
|
146
|
-
@storage.filename_for_contact_id("test").
|
146
|
+
expect(@storage.filename_for_contact_id("test")).to eq "/contacts/test.vcf"
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
@@ -8,7 +8,7 @@ describe Ppl::Adapter::Storage::Factory do
|
|
8
8
|
@directory = Dir.new("/contacts")
|
9
9
|
@repo = double(Rugged::Repository)
|
10
10
|
|
11
|
-
Rugged::Repository.
|
11
|
+
allow(Rugged::Repository).to receive(:new).and_return(@repo)
|
12
12
|
end
|
13
13
|
|
14
14
|
after(:each) do
|
@@ -19,12 +19,12 @@ describe Ppl::Adapter::Storage::Factory do
|
|
19
19
|
describe "#load_adapter" do
|
20
20
|
|
21
21
|
it "should return a disk adapter by default" do
|
22
|
-
@factory.load_adapter(@directory).
|
22
|
+
expect(@factory.load_adapter(@directory)).to be_a(Ppl::Adapter::Storage::Disk)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should return a git adapter if the directory is a git repository" do
|
26
26
|
Dir.mkdir "/contacts/.git"
|
27
|
-
@factory.load_adapter(@directory).
|
27
|
+
expect(@factory.load_adapter(@directory)).to be_a(Ppl::Adapter::Storage::Git)
|
28
28
|
end
|
29
29
|
|
30
30
|
end
|
@@ -13,11 +13,11 @@ describe Ppl::Adapter::Storage::Git do
|
|
13
13
|
@vcard = double(Ppl::Adapter::Vcard)
|
14
14
|
@target = double(Rugged::Commit)
|
15
15
|
|
16
|
-
Rugged::Repository.
|
16
|
+
allow(Rugged::Repository).to receive(:new).and_return(@repo)
|
17
17
|
|
18
|
-
@disk.
|
19
|
-
@disk.
|
20
|
-
@contact.
|
18
|
+
allow(@disk).to receive(:directory).and_return(Dir.new("/contacts"))
|
19
|
+
allow(@disk).to receive(:path).and_return("/contacts")
|
20
|
+
allow(@contact).to receive(:id).and_return("test")
|
21
21
|
|
22
22
|
@git = Ppl::Adapter::Storage::Git.new(@disk)
|
23
23
|
@git.vcard_adapter = @vcard
|
@@ -30,16 +30,16 @@ describe Ppl::Adapter::Storage::Git do
|
|
30
30
|
|
31
31
|
describe "#path" do
|
32
32
|
it "should return the path of the repository" do
|
33
|
-
@git.path.
|
33
|
+
expect(@git.path).to eq "/contacts"
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
describe "#initialize" do
|
38
38
|
it "should accept a disk storage adapter" do
|
39
|
-
@git.disk.
|
39
|
+
expect(@git.disk).to be @disk
|
40
40
|
end
|
41
41
|
it "should instantiate rugged" do
|
42
|
-
@git.repository.
|
42
|
+
expect(@git.repository).to be @repo
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -50,12 +50,12 @@ describe Ppl::Adapter::Storage::Git do
|
|
50
50
|
|
51
51
|
@files = [{:name => "test.vcf"}]
|
52
52
|
|
53
|
-
@commit.
|
54
|
-
@target.
|
55
|
-
@repo.
|
56
|
-
@repo.
|
53
|
+
expect(@commit).to receive(:target).and_return(@target)
|
54
|
+
expect(@target).to receive(:oid)
|
55
|
+
expect(@repo).to receive(:lookup).and_return(@head)
|
56
|
+
expect(@repo).to receive(:head).and_return(@commit)
|
57
57
|
|
58
|
-
@git.
|
58
|
+
allow(@git).to receive(:load_contact) do |id|
|
59
59
|
contact = Ppl::Entity::Contact.new
|
60
60
|
contact.id = id
|
61
61
|
contact
|
@@ -64,17 +64,17 @@ describe Ppl::Adapter::Storage::Git do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
it "should return an address book" do
|
67
|
-
@head.
|
68
|
-
@git.load_address_book.
|
67
|
+
expect(@head).to receive(:tree).and_return(@files)
|
68
|
+
expect(@git.load_address_book).to be_a(Ppl::Entity::AddressBook)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should not put anything except contacts in the address book" do
|
72
72
|
@files = [{:name => "poop.vcf"}, {:name => ".ppl"}]
|
73
|
-
@head.
|
73
|
+
expect(@head).to receive(:tree).and_return(@files)
|
74
74
|
|
75
75
|
address_book = @git.load_address_book
|
76
76
|
address_book.contacts.each do |contact|
|
77
|
-
contact.
|
77
|
+
expect(contact).to be_a(Ppl::Entity::Contact)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
@@ -91,10 +91,10 @@ describe Ppl::Adapter::Storage::Git do
|
|
91
91
|
blob = OpenStruct.new
|
92
92
|
blob.content = 'vcard contents'
|
93
93
|
|
94
|
-
@repo.
|
95
|
-
@repo.
|
96
|
-
@vcard.
|
97
|
-
@contact.
|
94
|
+
expect(@repo).to receive(:head).and_return(head)
|
95
|
+
expect(@repo).to receive(:blob_at).and_return(blob)
|
96
|
+
expect(@vcard).to receive(:decode).and_return(@contact)
|
97
|
+
expect(@contact).to receive(:id=).with("test")
|
98
98
|
|
99
99
|
contact = @git.load_contact("test")
|
100
100
|
end
|
@@ -108,9 +108,9 @@ describe Ppl::Adapter::Storage::Git do
|
|
108
108
|
blob = OpenStruct.new
|
109
109
|
blob.content = 'vcard contents'
|
110
110
|
|
111
|
-
@repo.
|
112
|
-
@repo.
|
113
|
-
@vcard.
|
111
|
+
expect(@repo).to receive(:head).and_return(head)
|
112
|
+
expect(@repo).to receive(:blob_at).and_return(blob)
|
113
|
+
expect(@vcard).to receive(:decode).and_raise(Vpim::InvalidEncodingError)
|
114
114
|
expect{ @git.load_contact("test") }.to raise_error(Ppl::Error::InvalidVcard)
|
115
115
|
end
|
116
116
|
|
@@ -119,19 +119,19 @@ describe Ppl::Adapter::Storage::Git do
|
|
119
119
|
describe "#save_contact" do
|
120
120
|
|
121
121
|
it "should save the contact to disk" do
|
122
|
-
@disk.
|
123
|
-
@git.
|
124
|
-
@git.
|
122
|
+
expect(@disk).to receive(:save_contact).with(@contact)
|
123
|
+
allow(@git).to receive(:add)
|
124
|
+
allow(@git).to receive(:commit)
|
125
125
|
@git.save_contact(@contact)
|
126
126
|
end
|
127
127
|
|
128
128
|
it "should commit the changes" do
|
129
|
-
@disk.
|
130
|
-
@git.
|
131
|
-
file.
|
129
|
+
expect(@disk).to receive(:save_contact)
|
130
|
+
allow(@git).to receive(:add) do |file|
|
131
|
+
expect(file).to eq "test.vcf"
|
132
132
|
end
|
133
|
-
@git.
|
134
|
-
message.
|
133
|
+
allow(@git).to receive(:commit) do |message|
|
134
|
+
expect(message).to eq "save_contact(test)"
|
135
135
|
end
|
136
136
|
@git.save_contact(@contact)
|
137
137
|
end
|