Skip to content

Commit 3e58c4d

Browse files
committed
Tests pass & are consistent w/ README
* use Dir.mktmpdir to isolate & clean up each test * make namespace creation tests pass & be consistent w/ README
1 parent 1ad323b commit 3e58c4d

File tree

4 files changed

+42
-28
lines changed

4 files changed

+42
-28
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@
99

1010
# rspec failure tracking
1111
.rspec_status
12+
Gemfile.lock
13+
vendor

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ pairtree = pt[id]
3939
### Create a new pairtree object (directory)
4040

4141
newthing = pt.create('one.two3four')
42-
#=> Pairtree::PathError (because there's no pairtree at .../obj/one)
42+
#=> HathiTrust::Pairtree::NamespaceDoesNotExist (because there's no pairtree at .../obj/one)
4343

44-
newthing = pt.create('one.two3four', create_new_namespace: true)
44+
newthing = pt.create('one.two3four', new_namespace_allowed: true)
4545
#=> Pairtree::Obj<blah blah blah>
4646

4747
```

lib/ht/pairtree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def create(htid, new_namespace_allowed: false)
6666
end
6767

6868
def namespace_exists?(htid)
69-
namespace_dir(htid).exists?
69+
namespace_dir(htid).exist?
7070
end
7171

7272

spec/ht/pairtree_spec.rb

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,20 @@
44

55

66
RSpec.describe HathiTrust::Pairtree do
7-
TMPDIR = Pathname.new(Dir.mktmpdir)
8-
puts TMPDIR
9-
10-
idmap = {
11-
'uc1.c3292592' => 'sdr1/obj/uc1/pairtree_root/c3/29/25/92/c3292592',
12-
'loc.ark:/13960/t9w09k00s' => 'sdr1/obj/loc/pairtree_root/ar/k+/=1/39/60/=t/9w/09/k0/0s/ark+=13960=t9w09k00s',
13-
'ia.ark:/13960/t9w10cs7x' => 'sdr1/obj/ia/pairtree_root/ar/k+/=1/39/60/=t/9w/10/cs/7x/ark+=13960=t9w10cs7x'
14-
}
157

8+
let(:idmap) do
9+
{
10+
'uc1.c3292592' => 'sdr1/obj/uc1/pairtree_root/c3/29/25/92/c3292592',
11+
'loc.ark:/13960/t9w09k00s' => 'sdr1/obj/loc/pairtree_root/ar/k+/=1/39/60/=t/9w/09/k0/0s/ark+=13960=t9w09k00s',
12+
'ia.ark:/13960/t9w10cs7x' => 'sdr1/obj/ia/pairtree_root/ar/k+/=1/39/60/=t/9w/10/cs/7x/ark+=13960=t9w10cs7x'
13+
}
14+
end
1615

17-
before(:context) do
16+
def make_paths(idmap)
1817
idmap.values.each do |subdir|
19-
dir = TMPDIR + subdir
20-
puts "Trying to make #{dir}"
18+
dir = @tmpdir + subdir
2119
FileUtils.mkdir_p(dir)
22-
root = TMPDIR + Pathname.new(subdir.split('/')[0..2].join('/'))
20+
root = @tmpdir + Pathname.new(subdir.split('/')[0..2].join('/'))
2321
prefix = subdir.split('/')[2]
2422
File.open(root + 'pairtree_prefix', 'w:utf-8') do |pp|
2523
pp.print(prefix + '.')
@@ -28,30 +26,44 @@
2826
end
2927
end
3028

31-
after(:context) do
32-
FileUtils.rm_f(TMPDIR)
29+
around(:each) do |example|
30+
Dir.mktmpdir do |d|
31+
@tmpdir = Pathname.new(d)
32+
FileUtils.mkdir_p(@tmpdir + "sdr1/obj")
33+
example.run
34+
end
3335
end
3436

35-
3637
it "has a version number" do
3738
expect(HathiTrust::Pairtree::VERSION).not_to be nil
3839
end
3940

40-
41-
describe "translates names into directories" do
42-
pt = HathiTrust::Pairtree.new(root: TMPDIR + 'sdr1/obj')
41+
it "translates names into directories" do
42+
make_paths(idmap)
43+
pt = HathiTrust::Pairtree.new(root: @tmpdir + 'sdr1/obj')
4344

4445
idmap.each_pair do |id, dir|
45-
it id do
46-
expect(pt.path_for(id).to_s).to eq((TMPDIR + dir).to_s)
47-
end
46+
expect(pt.path_for(id).to_s).to eq((@tmpdir + dir).to_s)
4847
end
4948
end
5049

51-
it "Can create new object directories" do
52-
pt = HathiTrust::Pairtree.new(root: TMPDIR + 'sdr1/obj')
53-
expect {pt.create('bill.dueber', create_new_namespace: false)}.to raise_error(Pairtree::PathError)
54-
expect(pt.create('bill.dueber', create_new_namespace: true).exists?('.')).to be true
50+
describe "#create" do
51+
let(:pt) { HathiTrust::Pairtree.new(root: @tmpdir + 'sdr1/obj') }
52+
53+
it "can create new object directories" do
54+
expect {pt.create('test.something', new_namespace_allowed: false)}.to raise_error(HathiTrust::Pairtree::NamespaceDoesNotExist)
55+
expect(pt.create('test.something', new_namespace_allowed: true).exists?('.')).to be true
56+
end
57+
58+
it "create is idempotent" do
59+
pt.create('test.something', new_namespace_allowed: true)
60+
expect(pt.create('test.something').exists?('.')).to be true
61+
end
62+
63+
it "new_namespace_allowed is idempotent" do
64+
pt.create('test.something', new_namespace_allowed: true)
65+
expect(pt.create('test.somethingelse', new_namespace_allowed: true).exists?('.')).to be true
66+
end
5567
end
5668

5769

0 commit comments

Comments
 (0)