safety_pin 0.0.1 → 0.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.
@@ -18,6 +18,7 @@ module SafetyPin
18
18
  end
19
19
 
20
20
  def self.build(path, node_type = nil)
21
+ path = path.to_s
21
22
  node_type ||= "nt:unstructured"
22
23
  rel_path = nil
23
24
  if path.start_with?("/")
@@ -73,6 +74,7 @@ module SafetyPin
73
74
  end
74
75
 
75
76
  def read_attribute(name)
77
+ name = name.to_s
76
78
  property = j_node.get_property(name)
77
79
  if property_is_multi_valued?(property)
78
80
  retrieve_property_multi_value(property)
@@ -120,6 +122,8 @@ module SafetyPin
120
122
 
121
123
  def write_attribute(name, value)
122
124
  raise PropertyError.new("Illegal operation: cannot change jcr:primaryType property") if name == "jcr:primaryType"
125
+
126
+ name = name.to_s
123
127
 
124
128
  if value.is_a? Array
125
129
  values = value
@@ -233,6 +237,12 @@ module SafetyPin
233
237
  def primary_type
234
238
  self["jcr:primaryType"]
235
239
  end
240
+
241
+ # Create and return a child node with a given name
242
+ def create(name, type = nil)
243
+ path = Pathname(self.path) + name
244
+ Node.create(path, type)
245
+ end
236
246
  end
237
247
 
238
248
  class NodeError < Exception; end
@@ -1,3 +1,3 @@
1
1
  module SafetyPin
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/spec/node_spec.rb CHANGED
@@ -165,6 +165,13 @@ describe SafetyPin::Node do
165
165
  @node.read_attribute("foo").should eql(["one", "two"])
166
166
  end
167
167
  end
168
+
169
+ context "given a non-string name" do
170
+ it "should co-erce the name into a string and retrieve the property" do
171
+ @node["foo"] = "bar"
172
+ @node.read_attribute(:foo).should eql("bar")
173
+ end
174
+ end
168
175
  end
169
176
 
170
177
  it "should return the string value of a name property" do
@@ -197,6 +204,15 @@ describe SafetyPin::Node do
197
204
  @node["foo"].to_s.should eql(time.to_s)
198
205
  end
199
206
  end
207
+
208
+ context "given a non-string name" do
209
+ it "should co-erce name into string before setting property" do
210
+ @node.write_attribute(:foo, "bar")
211
+ @node.save
212
+ @node.reload
213
+ @node["foo"].should eql("bar")
214
+ end
215
+ end
200
216
  end
201
217
 
202
218
  context "given an array of values" do
@@ -390,6 +406,12 @@ describe SafetyPin::Node do
390
406
  lambda { SafetyPin::Node.build("/content") }.should raise_error(SafetyPin::NodeError)
391
407
  end
392
408
  end
409
+
410
+ it "should coerce path to a string" do
411
+ node = SafetyPin::Node.build(Pathname("/content/foo"))
412
+ node.should be_new
413
+ node.properties.should eql({})
414
+ end
393
415
  end
394
416
 
395
417
  context "given an absolute path with a non-existent parent node" do
@@ -491,4 +513,21 @@ describe SafetyPin::Node do
491
513
  @node.primary_type.should eql("nt:unstructured")
492
514
  end
493
515
  end
516
+
517
+ describe "#create" do
518
+ before { @node = SafetyPin::Node.create("/content/foo") }
519
+ after { @node.destroy }
520
+
521
+ it "should create a child node with a given name" do
522
+ @node.create("bar")
523
+ SafetyPin::Node.find("/content/foo/bar").should be_a(SafetyPin::Node)
524
+ end
525
+
526
+ it "should create a child node with a given name and node type" do
527
+ @node.create("bar", "nt:folder")
528
+ child_node = SafetyPin::Node.find("/content/foo/bar")
529
+ child_node.should be_a(SafetyPin::Node)
530
+ child_node.primary_type.should eql("nt:folder")
531
+ end
532
+ end
494
533
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: safety_pin
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jordan Raine
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-05-10 00:00:00 Z
13
+ date: 2012-05-11 00:00:00 Z
14
14
  dependencies: []
15
15
 
16
16
  description: An easy-to-use JCR connector for JRuby