Skip to content

Commit 6db7728

Browse files
committed
Verify that Queryable#query returns a Solutions::Enumerator instead of a Queryable::Enumerator if a query pattern is used.
1 parent a4299e4 commit 6db7728

1 file changed

Lines changed: 56 additions & 35 deletions

File tree

lib/rdf/spec/queryable.rb

Lines changed: 56 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ module RDF_Queryable
1818
end
1919
end
2020
end
21-
let(:resource) {RDF::URI('http://rubygems.org/gems/rdf')}
22-
let(:literal) {RDF::Literal.new('J. Random Hacker')}
2321

2422
describe RDF::Queryable do
2523
subject {@queryable}
24+
let(:resource) {RDF::URI('http://rubygems.org/gems/rdf')}
25+
let(:literal) {RDF::Literal.new('J. Random Hacker')}
2626
let(:query) {RDF::Query.new {pattern [:s, :p, :o]}}
2727

2828
##
@@ -86,6 +86,7 @@ module RDF_Queryable
8686
subject.query([:s, :p, :o]) {}
8787
end
8888
end
89+
8990
context "with a Query argument" do
9091
it "yields statements" do
9192
subject.query(query) do |solution|
@@ -103,49 +104,69 @@ module RDF_Queryable
103104
end
104105

105106
context "without a block" do
106-
it "returns an enumerator" do
107-
expect(subject.query([nil, nil, nil])).to be_an_enumerator
108-
end
107+
context "with a triple argument" do
108+
it "returns an enumerator" do
109+
expect(subject.query([nil, nil, nil])).to be_an_enumerator
110+
end
109111

110-
it "returns an enumerable enumerator" do
111-
expect(subject.query([nil, nil, nil])).to be_enumerable
112-
end
112+
it "returns an enumerable enumerator" do
113+
expect(subject.query([nil, nil, nil])).to be_enumerable
114+
end
113115

114-
it "returns a queryable enumerator" do
115-
expect(subject.query([nil, nil, nil])).to be_queryable
116-
end
116+
it "returns a queryable enumerator" do
117+
expect(subject.query([nil, nil, nil])).to be_queryable
118+
end
117119

118-
it "returns statements given a triple" do
119-
subject.query([nil, nil, nil]).each do |statement|
120-
expect(statement).to be_a_statement
121-
expect(statement).not_to be_a RDF::Query::Solution
120+
it "returns statements given a triple" do
121+
subject.query([nil, nil, nil]).each do |statement|
122+
expect(statement).to be_a_statement
123+
expect(statement).not_to be_a RDF::Query::Solution
124+
end
122125
end
123126
end
124127

125-
it "returns solutions given a query" do
126-
subject.query(query).each do |solution|
127-
expect(solution).not_to be_a_statement
128-
expect(solution).to be_a RDF::Query::Solution
128+
context "with a Query argument" do
129+
it "returns an enumerator" do
130+
expect(subject.query(query)).to be_an_enumerator
129131
end
130-
end
131132

132-
it "returns the correct number of results for array queries" do
133-
expect(subject.query([nil, nil, nil]).size).to eq @statements.size
134-
expect(subject.query([resource, nil, nil]).size).to eq File.readlines(@doap).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
135-
expect(subject.query([RDF::URI("http://ar.to/#self"), nil, nil]).size).to eq File.readlines(@doap).grep(/^<http:\/\/ar.to\/\#self>/).size
136-
expect(subject.query([resource, RDF::DOAP.name, nil]).size).to eq 1
137-
expect(subject.query([nil, nil, RDF::DOAP.Project]).size).to eq 1
138-
end
133+
it "returns solutions" do
134+
expect(subject.query(query)).to be_a(RDF::Query::Solutions)
135+
end
139136

140-
it "returns the correct number of results for hash queries" do
141-
expect(subject.query({}).size).to eq @statements.size
142-
expect(subject.query(:subject => resource).size).to eq File.readlines(@doap).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
143-
expect(subject.query(:subject => resource, :predicate => RDF::DOAP.name).size).to eq 1
144-
expect(subject.query(:object => RDF::DOAP.Project).size).to eq 1
145-
end
137+
it "does not return an enumerable enumerator" do
138+
expect(subject.query(query)).not_to be_enumerable
139+
end
140+
141+
it "does not return a queryable enumerator" do
142+
expect(subject.query(query)).not_to be_queryable
143+
end
144+
145+
it "returns solutions given a query" do
146+
subject.query(query).each do |solution|
147+
expect(solution).not_to be_a_statement
148+
expect(solution).to be_a RDF::Query::Solution
149+
end
150+
end
151+
152+
it "returns the correct number of results for array queries" do
153+
expect(subject.query([nil, nil, nil]).size).to eq @statements.size
154+
expect(subject.query([resource, nil, nil]).size).to eq File.readlines(@doap).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
155+
expect(subject.query([RDF::URI("http://ar.to/#self"), nil, nil]).size).to eq File.readlines(@doap).grep(/^<http:\/\/ar.to\/\#self>/).size
156+
expect(subject.query([resource, RDF::DOAP.name, nil]).size).to eq 1
157+
expect(subject.query([nil, nil, RDF::DOAP.Project]).size).to eq 1
158+
end
146159

147-
it "returns the correct number of results for query queries" do
148-
expect(subject.query(query).size).to eq @statements.size
160+
it "returns the correct number of results for hash queries" do
161+
expect(subject.query({}).size).to eq @statements.size
162+
expect(subject.query(:subject => resource).size).to eq File.readlines(@doap).grep(/^<http:\/\/rubygems\.org\/gems\/rdf>/).size
163+
expect(subject.query(:subject => resource, :predicate => RDF::DOAP.name).size).to eq 1
164+
expect(subject.query(:object => RDF::DOAP.Project).size).to eq 1
165+
end
166+
167+
it "returns the correct number of results for query queries" do
168+
expect(subject.query(query).size).to eq @statements.size
169+
end
149170
end
150171
end
151172

0 commit comments

Comments
 (0)