ldp 0.0.3 → 0.0.4

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.
@@ -4,19 +4,19 @@ describe Ldp::Orm do
4
4
  subject { Ldp::Orm.new test_resource }
5
5
 
6
6
  let(:simple_graph) do
7
- graph = RDF::Graph.new << [RDF::URI.new(""), RDF::DC.title, "Hello, world!"]
8
- graph.dump(:ttl)
7
+ RDF::Graph.new << [RDF::URI.new(""), RDF::DC.title, "Hello, world!"]
9
8
  end
10
9
 
11
10
  let(:conn_stubs) do
12
- stubs = Faraday::Adapter::Test::Stubs.new do |stub|
13
- stub.get('/a_resource') {[ 200, {"Link" => "http://www.w3.org/ns/ldp#Resource;rel=\"type\""}, simple_graph ]}
11
+ Faraday::Adapter::Test::Stubs.new do |stub|
12
+ stub.get('/a_resource') {[ 200, {"Link" => "http://www.w3.org/ns/ldp#Resource;rel=\"type\""}, simple_graph.dump(:ttl) ]}
13
+ stub.head('/a_resource') { [200] }
14
14
  stub.put("/a_resource") { [204]}
15
15
  end
16
16
  end
17
17
 
18
18
  let(:mock_conn) do
19
- test = Faraday.new do |builder|
19
+ Faraday.new do |builder|
20
20
  builder.adapter :test, conn_stubs do |stub|
21
21
  end
22
22
  end
@@ -27,7 +27,7 @@ describe Ldp::Orm do
27
27
  end
28
28
 
29
29
  let :test_resource do
30
- Ldp::Resource.new mock_client, "http://example.com/a_resource"
30
+ Ldp::Resource::RdfSource.new mock_client, "http://example.com/a_resource"
31
31
  end
32
32
 
33
33
  describe "#delete" do
@@ -38,7 +38,17 @@ describe Ldp::Orm do
38
38
  end
39
39
 
40
40
  describe "#create" do
41
-
41
+ let(:conn_stubs) do
42
+ Faraday::Adapter::Test::Stubs.new do |stub|
43
+ stub.post("/") { [201]}
44
+ end
45
+ end
46
+ let :test_resource do
47
+ Ldp::Resource::RdfSource.new mock_client, nil, simple_graph
48
+ end
49
+ it "should return a new orm" do
50
+ expect(subject.create).to be_kind_of Ldp::Orm
51
+ end
42
52
  end
43
53
 
44
54
  describe "#save" do
@@ -54,7 +64,7 @@ describe Ldp::Orm do
54
64
 
55
65
  it "should return false if the response was not successful" do
56
66
  conn_stubs.instance_variable_get(:@stack)[:put] = [] # erases the stubs for :put
57
- conn_stubs.put('/a_resource') {[412]}
67
+ conn_stubs.put('/a_resource') {[412, nil, 'There was an error']}
58
68
  expect(subject.save).to be_false
59
69
  end
60
70
  end
@@ -68,7 +78,7 @@ describe Ldp::Orm do
68
78
  it "should raise an exception if the ETag didn't match" do
69
79
  conn_stubs.instance_variable_get(:@stack)[:put] = [] # erases the stubs for :put
70
80
  conn_stubs.put('/a_resource') {[412, {}, "Bad If-Match header value: 'ae43aa934dc4f4e15ea1b4dd1ca7a56791972836'"]}
71
- expect { subject.save! }.to raise_exception(Ldp::SaveException)
81
+ expect { subject.save! }.to raise_exception(Ldp::SaveException, "STATUS: 412 Bad If-Match header value: 'ae43aa934dc4f4e15ea1b4dd1ca7a56791972836'...")
72
82
  end
73
83
  end
74
84
 
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ldp::Resource::RdfSource do
4
+ let(:simple_graph) do
5
+ RDF::Graph.new << [RDF::URI.new(), RDF::DC.title, "Hello, world!"]
6
+ end
7
+
8
+ let(:conn_stubs) do
9
+ Faraday::Adapter::Test::Stubs.new do |stub|
10
+ # stub.get('/a_resource') {[ 200, {"Link" => "http://www.w3.org/ns/ldp#Resource;rel=\"type\""}, simple_graph ]}
11
+ stub.post("/") { [201]}
12
+ stub.post("/abs_url_object") { [201]}
13
+ end
14
+ end
15
+
16
+ let(:mock_conn) do
17
+ Faraday.new url: "http://my.ldp.server/" do |builder|
18
+ builder.adapter :test, conn_stubs do |stub|
19
+ end
20
+ end
21
+ end
22
+
23
+ let :mock_client do
24
+ Ldp::Client.new mock_conn
25
+ end
26
+
27
+
28
+ describe "#create" do
29
+ subject { Ldp::Resource::RdfSource.new mock_client, nil }
30
+
31
+ it "should return a new resource" do
32
+ created_resource = subject.create
33
+ expect(created_resource).to be_kind_of Ldp::Resource::RdfSource
34
+ end
35
+
36
+ it "should allow absolute URLs to the LDP server" do
37
+ obj = Ldp::Resource::RdfSource.new mock_client, "http://my.ldp.server/abs_url_object"
38
+ obj.stub(new?: true)
39
+ created_resource = obj.create
40
+ expect(created_resource).to be_kind_of Ldp::Resource::RdfSource
41
+ end
42
+ end
43
+
44
+ describe "#initialize" do
45
+ context "with bad attributes" do
46
+ it "should raise an error" do
47
+ expect{ Ldp::Resource::RdfSource.new mock_client, nil, "derp" }.to raise_error(ArgumentError,
48
+ "Third argument to Ldp::Resource::RdfSource.new should be a RDF::Graph or a Ldp::Response. You provided String")
49
+ end
50
+ end
51
+ end
52
+ end
@@ -5,7 +5,10 @@ describe Ldp::Resource do
5
5
 
6
6
  let(:conn_stubs) do
7
7
  stubs = Faraday::Adapter::Test::Stubs.new do |stub|
8
+ stub.head('/not_found_resource') { [404] }
8
9
  stub.get('/not_found_resource') { [404] }
10
+ stub.head('/a_new_resource') { [404] }
11
+ stub.head('/a_resource') { [200] }
9
12
  stub.get('/a_resource') { [200] }
10
13
  end
11
14
  end
@@ -37,4 +40,31 @@ describe Ldp::Resource do
37
40
  end
38
41
  end
39
42
  end
43
+
44
+ describe "#new?" do
45
+ context "with an object not in the repository" do
46
+ let(:path) { '/not_found_resource' }
47
+ it "should be true" do
48
+ expect(subject).to be_new
49
+ end
50
+ end
51
+
52
+ context "with an object in the repository" do
53
+ let(:path) { '/a_resource' }
54
+ it "should be false" do
55
+ expect(subject).to_not be_new
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "#create" do
61
+ context "with initial content" do
62
+ let(:path) { '/a_new_resource' }
63
+ it "should post an RDF graph" do
64
+ mock_client.should_receive(:post).with(path, "xyz").and_return(double(headers: {}))
65
+ subject.content = "xyz"
66
+ subject.save
67
+ end
68
+ end
69
+ end
40
70
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Ldp::Response do
4
4
  LDP_RESOURCE_HEADERS = { "Link" => Ldp.resource.to_s + ";rel=\"type\""}
5
5
 
6
- let(:mock_response) { double() }
6
+ let(:mock_response) { double(headers: {}, env: { url: "info:a" }) }
7
7
  let(:mock_client) { double(Ldp::Client) }
8
8
 
9
9
  subject do
@@ -14,7 +14,6 @@ describe Ldp::Response do
14
14
  it "should mixin Ldp::Response into the raw response" do
15
15
  Ldp::Response.wrap(mock_client, mock_response)
16
16
  expect(mock_response).to be_a_kind_of(Ldp::Response)
17
- expect(mock_response.ldp_client).to eq(mock_client)
18
17
  end
19
18
  end
20
19
 
@@ -32,7 +31,7 @@ describe Ldp::Response do
32
31
 
33
32
  expect(h['some-rel']).to include("xyz")
34
33
  expect(h['some-multi-rel']).to include("abc", "123")
35
- expect(h['doesnt-exist']).to be_empty
34
+ expect(h['doesnt-exist']).to be_nil
36
35
  end
37
36
 
38
37
  it "should return an empty hash if no link headers are availabe" do
@@ -58,7 +57,6 @@ describe Ldp::Response do
58
57
  describe "#graph" do
59
58
  it "should parse the response body for an RDF graph" do
60
59
  mock_response.stub :body => "<> <info:b> <info:c> .", :headers => LDP_RESOURCE_HEADERS
61
- subject.stub :page_subject => RDF::URI.new('info:a')
62
60
  graph = subject.graph
63
61
 
64
62
  expect(graph).to have_subject(RDF::URI.new("info:a"))
@@ -86,8 +84,6 @@ describe Ldp::Response do
86
84
  it "should see if the response has an ldp:Page statement" do
87
85
  graph = RDF::Graph.new
88
86
 
89
- subject.stub :page_subject => RDF::URI.new('info:a')
90
-
91
87
  graph << [RDF::URI.new('info:a'), RDF.type, Ldp.page]
92
88
 
93
89
  mock_response.stub :body => graph.dump(:ttl), :headers => LDP_RESOURCE_HEADERS
@@ -106,8 +102,6 @@ describe Ldp::Response do
106
102
  it "should get the ldp:Page data from the query" do
107
103
  graph = RDF::Graph.new
108
104
 
109
- subject.stub :page_subject => RDF::URI.new('info:a')
110
-
111
105
  graph << [RDF::URI.new('info:a'), RDF.type, Ldp.page]
112
106
  graph << [RDF::URI.new('info:b'), RDF.type, Ldp.page]
113
107
 
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,8 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
5
5
  require 'rspec/autorun'
6
6
  require 'ldp'
7
7
  require 'faraday'
8
+ require 'active_support/notifications'
8
9
 
9
10
  RSpec.configure do |config|
10
11
 
11
- end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ldp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-16 00:00:00.000000000 Z
11
+ date: 2014-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: http_logger
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: slop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -83,7 +111,8 @@ dependencies:
83
111
  description: Linked Data Platform client library
84
112
  email:
85
113
  - chris@cbeer.info
86
- executables: []
114
+ executables:
115
+ - ldp
87
116
  extensions: []
88
117
  extra_rdoc_files: []
89
118
  files:
@@ -93,19 +122,27 @@ files:
93
122
  - LICENSE.txt
94
123
  - README.md
95
124
  - Rakefile
125
+ - bin/ldp
96
126
  - ldp.gemspec
97
127
  - lib/ldp.rb
98
128
  - lib/ldp/client.rb
99
129
  - lib/ldp/client/methods.rb
100
130
  - lib/ldp/container.rb
131
+ - lib/ldp/container/basic.rb
132
+ - lib/ldp/container/direct.rb
133
+ - lib/ldp/container/indirect.rb
101
134
  - lib/ldp/orm.rb
102
135
  - lib/ldp/resource.rb
136
+ - lib/ldp/resource/binary_source.rb
137
+ - lib/ldp/resource/rdf_source.rb
103
138
  - lib/ldp/response.rb
139
+ - lib/ldp/response/paging.rb
104
140
  - lib/ldp/uri.rb
105
141
  - lib/ldp/version.rb
106
142
  - spec/lib/integration/integration_spec.rb
107
143
  - spec/lib/ldp/client_spec.rb
108
144
  - spec/lib/ldp/orm/orm_spec.rb
145
+ - spec/lib/ldp/resource/rdf_source_spec.rb
109
146
  - spec/lib/ldp/resource_spec.rb
110
147
  - spec/lib/ldp/response_spec.rb
111
148
  - spec/spec_helper.rb
@@ -137,6 +174,7 @@ test_files:
137
174
  - spec/lib/integration/integration_spec.rb
138
175
  - spec/lib/ldp/client_spec.rb
139
176
  - spec/lib/ldp/orm/orm_spec.rb
177
+ - spec/lib/ldp/resource/rdf_source_spec.rb
140
178
  - spec/lib/ldp/resource_spec.rb
141
179
  - spec/lib/ldp/response_spec.rb
142
180
  - spec/spec_helper.rb