handle-system 0.0.3

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.
@@ -0,0 +1,39 @@
1
+ require File.expand_path('../spec_helper',__FILE__)
2
+
3
+ describe Handle::Permissions do
4
+ subject { Handle::Permissions.new :foo, :bar, :baz, :quux, 0b0110 }
5
+
6
+ it "initialize" do
7
+ expect(subject.bitmask).to eq(0b110)
8
+ expect(subject).not_to be_foo
9
+ expect(subject).to be_bar
10
+ expect(subject).to be_baz
11
+ expect(subject).not_to be_quux
12
+ end
13
+
14
+ it "modify" do
15
+ subject.foo = true
16
+ subject.bar = false
17
+ expect(subject).to be_foo
18
+ expect(subject).not_to be_bar
19
+ expect(subject).to be_baz
20
+ expect(subject).not_to be_quux
21
+ end
22
+
23
+ it "#to_bool" do
24
+ expect(subject.to_bool).to eq([false, true, true, false])
25
+ end
26
+
27
+ it "#to_bool" do
28
+ expect(subject.to_s).to eq('0110')
29
+ end
30
+
31
+ it "#inspect" do
32
+ expect(subject.inspect).to eq("[:bar, :baz]")
33
+ end
34
+
35
+ it "dispatches" do
36
+ expect { subject.foo }.to raise_error(NameError)
37
+ expect { subject.foobar }.to raise_error(NameError)
38
+ end
39
+ end
@@ -0,0 +1,72 @@
1
+ require File.expand_path('../spec_helper',__FILE__)
2
+
3
+ describe Handle::Record do
4
+ let(:data) { %{ index=2 type=URL rwr- "http://www.example.edu/fake-handle"\n index=6 type=EMAIL rwr- "handle@example.edu"\n index=100 type=HS_ADMIN rw-- "0FFF0000000D302E4E412F46414B452E41444D494E0000012C"} }
5
+
6
+ describe "deserialize" do
7
+ it "should load from a string" do
8
+ record = Handle::Record.from_data(data)
9
+ expect(record).to be_a(Handle::Record)
10
+ expect(record.length).to eq(3)
11
+ expect(record[0].value).to eq('http://www.example.edu/fake-handle')
12
+ expect(record[1].value).to eq('handle@example.edu')
13
+ expect(record[2].admin_handle).to eq('0.NA/FAKE.ADMIN')
14
+ end
15
+
16
+ it "should load from an array" do
17
+ record = Handle::Record.from_data(data.lines.to_a)
18
+ expect(record).to be_a(Handle::Record)
19
+ expect(record.length).to eq(3)
20
+ expect(record[0].value).to eq('http://www.example.edu/fake-handle')
21
+ expect(record[1].value).to eq('handle@example.edu')
22
+ expect(record[2].admin_handle).to eq('0.NA/FAKE.ADMIN')
23
+ end
24
+ end
25
+
26
+ describe "methods" do
27
+ subject { Handle::Record.from_data(data) }
28
+ it "#add" do
29
+ new_field = subject.add(:URN, 'info:example:content')
30
+ expect(subject.length).to eq(4)
31
+ expect(new_field.value).to eq('info:example:content')
32
+ end
33
+
34
+ it "#find_by_index" do
35
+ expect(subject.find_by_index(6).value).to eq('handle@example.edu')
36
+ expect(subject.find_by_index(1)).to be_nil
37
+ end
38
+ end
39
+
40
+ describe "building" do
41
+ let(:this) {
42
+ record = Handle::Record.new
43
+ record.add(:URL, 'http://www.example.edu/fake-handle').index = 2
44
+ record.add(:Email, 'handle@example.edu').index = 6
45
+ record << Handle::Field::HSAdmin.new('0.NA/FAKE.ADMIN')
46
+ record
47
+ }
48
+
49
+ let(:that) {
50
+ record = Handle::Record.new
51
+ record.add(:URN, 'info:example:content')
52
+ record.add(:URL, 'http://www.example.edu/fake-handle').index = 2
53
+ record << Handle::Field::HSAdmin.new('0.NA/FAKE.ADMIN')
54
+ record
55
+ }
56
+
57
+ it "should have the correct content" do
58
+ expect(this).to be_a(Handle::Record)
59
+ expect(this.length).to eq(3)
60
+ expect(this[0].value).to eq('http://www.example.edu/fake-handle')
61
+ expect(this[1].value).to eq('handle@example.edu')
62
+ expect(this[2].admin_handle).to eq('0.NA/FAKE.ADMIN')
63
+ end
64
+
65
+ it "should diff correctly" do
66
+ diff = this | that
67
+ expect(diff[:add].length).to eq(1)
68
+ expect(diff[:delete].length).to eq(1)
69
+ expect(diff[:update].length).to eq(2)
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,20 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start do
4
+ add_filter 'spec/'
5
+ coverage_dir Module.const_defined?('JRuby') ? 'coverage/java' : 'coverage/command'
6
+ end
7
+
8
+ require 'handle'
9
+
10
+ def jruby?
11
+ Module.const_defined? 'JRuby'
12
+ end
13
+
14
+ def on_jruby &block
15
+ yield if jruby?
16
+ end
17
+
18
+ def on_cruby &block
19
+ yield unless jruby?
20
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: handle-system
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Michael Klein
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-01-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: Ruby classes for interfacing with Handle System servers
63
+ email:
64
+ - mbklein@gmail.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files:
68
+ - LICENSE.txt
69
+ - README.md
70
+ files:
71
+ - lib/handle/command/connection.rb
72
+ - lib/handle/command/persistence.rb
73
+ - lib/handle/command.rb
74
+ - lib/handle/field/admin.rb
75
+ - lib/handle/field.rb
76
+ - lib/handle/java/connection.rb
77
+ - lib/handle/java/persistence.rb
78
+ - lib/handle/java.rb
79
+ - lib/handle/permissions.rb
80
+ - lib/handle/record.rb
81
+ - lib/handle/version.rb
82
+ - lib/handle.rb
83
+ - Gemfile
84
+ - Rakefile
85
+ - LICENSE.txt
86
+ - README.md
87
+ - spec/admin_spec.rb
88
+ - spec/command/connection_spec.rb
89
+ - spec/command/persistence_spec.rb
90
+ - spec/field_spec.rb
91
+ - spec/java/connection_spec.rb
92
+ - spec/java/persistence_spec.rb
93
+ - spec/permissions_spec.rb
94
+ - spec/record_spec.rb
95
+ - spec/spec_helper.rb
96
+ homepage:
97
+ licenses:
98
+ - Apache 2
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ segments:
110
+ - 0
111
+ hash: -2046807453443822205
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ segments:
119
+ - 0
120
+ hash: -2046807453443822205
121
+ requirements: []
122
+ rubyforge_project:
123
+ rubygems_version: 1.8.23
124
+ signing_key:
125
+ specification_version: 3
126
+ summary: Ruby classes for interfacing with Handle System servers
127
+ test_files:
128
+ - spec/admin_spec.rb
129
+ - spec/command/connection_spec.rb
130
+ - spec/command/persistence_spec.rb
131
+ - spec/field_spec.rb
132
+ - spec/java/connection_spec.rb
133
+ - spec/java/persistence_spec.rb
134
+ - spec/permissions_spec.rb
135
+ - spec/record_spec.rb
136
+ - spec/spec_helper.rb