ld4l-open_annotation_rdf 0.0.12 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: efbc3d8423150742b110eec287f640b819db3a7b
4
- data.tar.gz: a99be5482b844af7b94a3853af03ea32c9cd8698
3
+ metadata.gz: 88d80519b6716911be96e530e8d9d749fb164e21
4
+ data.tar.gz: e27c7e618cbdc975d45dee93aed8676614380831
5
5
  SHA512:
6
- metadata.gz: a982ffbf744c568ab1aee9408d47174d1c6036f2ca1d07bbb89d99159af666339df383e3d67bd65db0f695240798c47cdb68bb24e474ddfd04935c7f5fe68434
7
- data.tar.gz: 507a364ac06b47bd7a4bbcabb88787acf81b01d50e5ff9084e07ada148c82e10efe15d4e0b47e1706f1f9226b2f0f277a4a91b0ca9d1d4790401e0159d2bac64
6
+ metadata.gz: d17c5d27f63bd1ea4de5884cebef473438ff6fb853583ace7b4276b7cceda2bfaa0980546d9119b8fea137530664a23a9ef73408823d694c3a2831eae220f953
7
+ data.tar.gz: 6d8cdeaa648f3ff54dd0073add06286309c18b7331f514f62a5a860fee9a95c2833db944a65a17ec96b791ad72c03b4c1d099471f90117721e5218da2bf7c34d
data/CHANGES.md ADDED
@@ -0,0 +1,49 @@
1
+ 0.1.0
2
+ -----
3
+ * Updated to work with ActiveTriples 0.5, 0.6, and 0.8.2
4
+
5
+ 0.0.12 (pre-release)
6
+ ------
7
+ * add convenience method SemanticTagAnnotation.getTerm
8
+
9
+ 0.0.11 (pre-release)
10
+ ------
11
+ * add convenience methods
12
+ * add Annotations.find_by_target
13
+ * add CommentAnnotation.getComment
14
+ * add TagAnnotation.getTag
15
+
16
+ 0.0.10 (pre-release)
17
+ ------
18
+ * Improve functioning of Annotation#resume
19
+ * add SemanticTagBody class to hasBody property in SemanticTag
20
+ * remove class validation of motivatedBy in the resume method because it can have multiple classes; validation of value is sufficient
21
+ * Add tests for body as blank node
22
+ * add tests for Annotation#resume where body as blank node was created using the gem models
23
+ * add tests for Annotation#resume where body as blank node was loaded from an RDF::Graph
24
+
25
+ 0.0.9 (pre-release)
26
+ -----
27
+ * FIX: cast should set be to false not true
28
+
29
+ 0.0.8 (pre-release)
30
+ -----
31
+ * Add casting restrictions
32
+ * Let Annotation.resume receive same parameters as .new
33
+ * Annotation.resume now accepts the following values for its parameter.
34
+ * RDF::URI - e.g. RDF::URI('http://example.org/t123') -- this is the only value accepted prior to this change
35
+ * string URI - e.g. 'http://example.org/t123'
36
+ * localname - e.g. 't123' -- This will be expanded by appending 't123' to the end of the configured base_uri
37
+
38
+ 0.0.6 (pre-release)
39
+ -----
40
+ * Reduce required ruby to 1.9.3
41
+
42
+ 0.0.4 (pre-release)
43
+ -----
44
+ * Initial release of gem
45
+ * Supports following annotation types:
46
+ * Comment Annotation - free form text
47
+ * Tag Annotation - one word or short phrase tag written by the user
48
+ * Semantic Tag Annotation - term from a controlled vocabulary
49
+ * See README for more information and usage examples.
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
-
@@ -17,19 +17,15 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.files = `git ls-files -z`.split("\x0")
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
- # spec.test_files = `git ls-files -- {spec}/*`.split("\n") # FROM ActiveTriples gemspec file
21
- # spec.require_paths = ["lib"] # NOT IN ActiveTriples gemspec file
22
20
 
23
- # spec.add_dependency('ffi', '~> 1.9.5')
24
- spec.add_dependency('rdf', '~> 1.1')
21
+ spec.add_dependency('rdf', '= 1.99.0')
25
22
 
26
- spec.add_dependency('active-triples', '~> 0.5')
27
- spec.add_dependency('active_triples-local_name', '~> 0.1')
23
+ spec.add_dependency('active-triples', '~> 0.5', '~> 0.6', '~>0.8.2')
24
+ spec.add_dependency('active_triples-local_name')
28
25
  spec.add_dependency('ld4l-foaf_rdf', '~> 0.0')
29
26
 
30
27
  spec.add_development_dependency('pry')
31
- # spec.add_development_dependency('pry-byebug') # Works with ruby > 2
32
- # spec.add_development_dependency('pry-debugger') # Works with ruby < 2
28
+ spec.add_development_dependency('pry-byebug')
33
29
  spec.add_development_dependency('rdoc')
34
30
  spec.add_development_dependency('rspec')
35
31
  spec.add_development_dependency('coveralls')
@@ -23,6 +23,8 @@ module LD4L
23
23
 
24
24
  # get motivatedBy
25
25
  m = a.get_values(:motivatedBy)
26
+ m = m.to_a if Object.const_defined?("ActiveTriples::Relation") && m.kind_of?(ActiveTriples::Relation)
27
+
26
28
  # TODO: Should m's class be validated? I've seen it be RDF::Vocabulary::Term and RDF::URI. For now, removing the validation.
27
29
  return a unless m.kind_of?(Array) && m.size > 0
28
30
  # return a unless m.kind_of?(Array) && m.size > 0 && (m.first.kind_of?(RDF::Vocabulary::Term) || m.first.kind_of?(RDF::URI)
@@ -36,7 +38,7 @@ module LD4L
36
38
  # Tagging can be TagAnnotation or SemanticTagAnnotation. Only way to tell is by checking type of body.
37
39
  sta = LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new(uri_or_str)
38
40
  stb = sta.getBody
39
- return sta if stb.type.include?(RDFVocabularies::OA.SemanticTag)
41
+ return sta unless stb.type.include?(RDFVocabularies::OA.Tag) || !stb.type.include?(RDFVocabularies::OA.SemanticTag)
40
42
 
41
43
  ta = LD4L::OpenAnnotationRDF::TagAnnotation.new(uri_or_str)
42
44
  tb = ta.getBody
@@ -4,6 +4,10 @@ module LD4L
4
4
 
5
5
  @localname_prefix="ca"
6
6
 
7
+ configure :type => RDFVocabularies::OA.Annotation,
8
+ :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri,
9
+ :repository => :default
10
+
7
11
  property :hasBody, :predicate => RDFVocabularies::OA.hasBody, :class_name => LD4L::OpenAnnotationRDF::CommentBody
8
12
 
9
13
 
@@ -14,10 +18,18 @@ module LD4L
14
18
  #
15
19
  # @return instance of CommentAnnotation
16
20
  def setComment(comment)
17
- @body = LD4L::OpenAnnotationRDF::CommentBody.new(
18
- ActiveTriples::LocalName::Minter.generate_local_name(
19
- LD4L::OpenAnnotationRDF::CommentBody, 10, @localname_prefix,
20
- LD4L::OpenAnnotationRDF.configuration.localname_minter ))
21
+ @body ||= hasBody.first if hasBody.size > 0
22
+ if self.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
23
+ @body ||= LD4L::OpenAnnotationRDF::CommentBody.new(
24
+ ActiveTriples::LocalName::Minter.generate_local_name(
25
+ LD4L::OpenAnnotationRDF::CommentBody, 10, @localname_prefix,
26
+ LD4L::OpenAnnotationRDF.configuration.localname_minter),self)
27
+ else # < ActiveTriples 0.8
28
+ @body ||= LD4L::OpenAnnotationRDF::CommentBody.new(
29
+ ActiveTriples::LocalName::Minter.generate_local_name(
30
+ LD4L::OpenAnnotationRDF::CommentBody, 10, @localname_prefix,
31
+ LD4L::OpenAnnotationRDF.configuration.localname_minter))
32
+ end
21
33
  @body.content = comment
22
34
  @body.format = "text/plain"
23
35
  set_value(:hasBody, @body)
@@ -41,6 +53,7 @@ module LD4L
41
53
 
42
54
  # set motivatedBy
43
55
  m = get_values(:motivatedBy)
56
+ m = m.to_a if Object.const_defined?("ActiveTriples::Relation") && m.kind_of?(ActiveTriples::Relation)
44
57
  set_value(:motivatedBy, RDFVocabularies::OA.commenting) unless m.kind_of?(Array) && m.size > 0
45
58
 
46
59
  # resume CommentBody if it exists
@@ -4,6 +4,10 @@ module LD4L
4
4
 
5
5
  @localname_prefix = "sta"
6
6
 
7
+ configure :type => RDFVocabularies::OA.Annotation,
8
+ :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri,
9
+ :repository => :default
10
+
7
11
  property :hasBody, :predicate => RDFVocabularies::OA.hasBody, :class_name => LD4L::OpenAnnotationRDF::SemanticTagBody
8
12
 
9
13
 
@@ -38,7 +42,11 @@ module LD4L
38
42
  term_uri = RDF::URI(term_uri) unless term_uri.kind_of?(RDF::URI)
39
43
  return @body if old_term_uri && old_term_uri == term_uri.to_s
40
44
 
41
- @body = LD4L::OpenAnnotationRDF::SemanticTagBody.new(term_uri)
45
+ if self.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
46
+ @body = LD4L::OpenAnnotationRDF::SemanticTagBody.new(term_uri,self)
47
+ else # < ActiveTriples 0.8
48
+ @body = LD4L::OpenAnnotationRDF::SemanticTagBody.new(term_uri)
49
+ end
42
50
  set_value(:hasBody, @body)
43
51
  @body
44
52
  end
@@ -51,6 +59,7 @@ module LD4L
51
59
 
52
60
  # set motivatedBy
53
61
  m = get_values(:motivatedBy)
62
+ m = m.to_a if Object.const_defined?("ActiveTriples::Relation") && m.kind_of?(ActiveTriples::Relation)
54
63
  set_value(:motivatedBy, RDFVocabularies::OA.tagging) unless m.kind_of?(Array) && m.size > 0
55
64
 
56
65
  # resume SemanticTagBody if it exists
@@ -4,6 +4,10 @@ module LD4L
4
4
 
5
5
  @localname_prefix="ta"
6
6
 
7
+ configure :type => RDFVocabularies::OA.Annotation,
8
+ :base_uri => LD4L::OpenAnnotationRDF.configuration.base_uri,
9
+ :repository => :default
10
+
7
11
  property :hasBody, :predicate => RDFVocabularies::OA.hasBody, :class_name => LD4L::OpenAnnotationRDF::TagBody
8
12
 
9
13
  # TODO: Should a tag be destroyed when the last annotation referencing the tag is destroyed?
@@ -40,12 +44,23 @@ module LD4L
40
44
  # ** If one found, set @body to this TagBody
41
45
  # ** If multiple found, use the first one found
42
46
  # ### the same one may not be the first one found each time the query executes
43
- @body = LD4L::OpenAnnotationRDF.configuration.unique_tags ? LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value(tag) : nil
47
+ if self.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
48
+ @body = LD4L::OpenAnnotationRDF.configuration.unique_tags ? LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value(tag,self) : nil
49
+ else
50
+ @body = LD4L::OpenAnnotationRDF.configuration.unique_tags ? LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value(tag) : nil
51
+ end
44
52
  if @body == nil
45
- @body = LD4L::OpenAnnotationRDF::TagBody.new(
53
+ if self.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
54
+ @body = LD4L::OpenAnnotationRDF::TagBody.new(
46
55
  ActiveTriples::LocalName::Minter.generate_local_name(
47
56
  LD4L::OpenAnnotationRDF::TagBody, 10, @localname_prefix,
48
- LD4L::OpenAnnotationRDF.configuration.localname_minter ))
57
+ LD4L::OpenAnnotationRDF.configuration.localname_minter ),self)
58
+ else # < ActiveTriples 0.8
59
+ @body = LD4L::OpenAnnotationRDF::TagBody.new(
60
+ ActiveTriples::LocalName::Minter.generate_local_name(
61
+ LD4L::OpenAnnotationRDF::TagBody, 10, @localname_prefix,
62
+ LD4L::OpenAnnotationRDF.configuration.localname_minter ))
63
+ end
49
64
  @body.tag = tag
50
65
  end
51
66
  else
@@ -62,10 +77,17 @@ module LD4L
62
77
  # * [CURRENT] Always create a new TagBody each time setTag is called and update @body
63
78
  # ### This last options has the potential for orphaned TagBodys that no TagAnnotation references.
64
79
  # TODO Rethink the current behavior which is always to create a new TagBody potentially leaving around orphans.
65
- @body = LD4L::OpenAnnotationRDF::TagBody.new(
66
- ActiveTriples::LocalName::Minter.generate_local_name(
67
- LD4L::OpenAnnotationRDF::TagBody, 10, @localname_prefix,
68
- LD4L::OpenAnnotationRDF.configuration.localname_minter ))
80
+ if self.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
81
+ @body = LD4L::OpenAnnotationRDF::TagBody.new(
82
+ ActiveTriples::LocalName::Minter.generate_local_name(
83
+ LD4L::OpenAnnotationRDF::TagBody, 10, @localname_prefix,
84
+ LD4L::OpenAnnotationRDF.configuration.localname_minter ),self)
85
+ else # < ActiveTriples 0.8
86
+ @body = LD4L::OpenAnnotationRDF::TagBody.new(
87
+ ActiveTriples::LocalName::Minter.generate_local_name(
88
+ LD4L::OpenAnnotationRDF::TagBody, 10, @localname_prefix,
89
+ LD4L::OpenAnnotationRDF.configuration.localname_minter ))
90
+ end
69
91
  @body.tag = tag
70
92
  end
71
93
  set_value(:hasBody, @body)
@@ -80,6 +102,7 @@ module LD4L
80
102
 
81
103
  # set motivatedBy
82
104
  m = get_values(:motivatedBy)
105
+ m = m.to_a if Object.const_defined?("ActiveTriples::Relation") && m.kind_of?(ActiveTriples::Relation)
83
106
  set_value(:motivatedBy, RDFVocabularies::OA.tagging) unless m.kind_of?(Array) && m.size > 0
84
107
 
85
108
  # resume TagBody if it exists
@@ -50,7 +50,7 @@ module LD4L
50
50
  # @param [String] tag value
51
51
  #
52
52
  # @return instance of TagBody if found; otherwise, nil
53
- def self::fetch_by_tag_value( tag_value )
53
+ def self::fetch_by_tag_value( tag_value, parent_annotation=nil )
54
54
  raise ArgumentError, 'Argument must be a string with at least one character' unless
55
55
  tag_value.kind_of?(String) && tag_value.size > 0
56
56
 
@@ -66,7 +66,8 @@ module LD4L
66
66
  results = query.execute(repo)
67
67
  unless( results.empty? )
68
68
  tagbody_uri = results[0].to_hash[:tagbody]
69
- tagbody = LD4L::OpenAnnotationRDF::TagBody.new(tagbody_uri)
69
+ tagbody = LD4L::OpenAnnotationRDF::TagBody.new(tagbody_uri) if parent_annotation.nil?
70
+ tagbody = LD4L::OpenAnnotationRDF::TagBody.new(tagbody_uri,parent_annotation) unless parent_annotation.nil?
70
71
  end
71
72
  tagbody
72
73
  end
@@ -1,5 +1,5 @@
1
1
  module LD4L
2
2
  module OpenAnnotationRDF
3
- VERSION = "0.0.12"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -51,7 +51,7 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
51
51
  end
52
52
 
53
53
  it 'should not be settable' do
54
- expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
54
+ expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error(RuntimeError, 'Refusing update URI when one is already assigned!')
55
55
  end
56
56
  end
57
57
  end
@@ -368,14 +368,14 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
368
368
  anno_uri = RDF::URI.new(@anno_url)
369
369
  @comment_anno = LD4L::OpenAnnotationRDF::Annotation.resume(anno_uri)
370
370
  end
371
- it "populates LD4L::OpenAnnotationRDF::TagAnnotation properly" do
371
+ it "populates LD4L::OpenAnnotationRDF::CommentAnnotation properly" do
372
372
  expect(@comment_anno.rdf_subject.to_s).to eq @anno_url
373
373
  expect(@comment_anno).to be_a LD4L::OpenAnnotationRDF::CommentAnnotation
374
374
  expect(@comment_anno.type).to include(RDFVocabularies::OA.Annotation)
375
375
  expect(@comment_anno.motivatedBy).to include(RDFVocabularies::OA.commenting)
376
376
  expect(@comment_anno.hasTarget.first.rdf_subject).to eq RDF::URI.new("http://searchworks.stanford.edu/view/666")
377
377
  end
378
- it "populates Tag bodies properly" do
378
+ it "populates Comment bodies properly" do
379
379
  body = @comment_anno.hasBody.first
380
380
  expect(body).to be_a LD4L::OpenAnnotationRDF::CommentBody
381
381
  expect(body.content.first).to eq @comment_value
@@ -515,14 +515,18 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
515
515
  context "and the item is not a blank node" do
516
516
 
517
517
  subject {LD4L::OpenAnnotationRDF::Annotation.new("123")}
518
+ let(:result) { subject.persist! }
518
519
 
519
520
  before do
520
521
  # Create inmemory repository
521
522
  @repo = RDF::Repository.new
522
- allow(subject.class).to receive(:repository).and_return(nil)
523
- allow(subject).to receive(:repository).and_return(@repo)
523
+ ActiveTriples::Repositories.repositories[:default] = @repo
524
524
  subject.motivatedBy = RDFVocabularies::OA.commenting
525
- subject.persist!
525
+ result
526
+ end
527
+
528
+ it "should return true" do
529
+ expect(result).to eq true
526
530
  end
527
531
 
528
532
  it "should persist to the repository" do
@@ -548,7 +552,7 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
548
552
  subject << RDF::Statement(RDF::DC.LicenseDocument, RDF::DC.title, 'LICENSE')
549
553
  end
550
554
 
551
- subject { LD4L::FoafRDF::Person.new('456')}
555
+ subject { LD4L::OpenAnnotationRDF::Annotation.new('123') }
552
556
 
553
557
  it 'should return true' do
554
558
  expect(subject.destroy!).to be true
@@ -562,22 +566,26 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
562
566
 
563
567
  context 'with a parent' do
564
568
  before do
565
- parent.annotatedBy = subject
569
+ subject.annotatedBy = child
566
570
  end
567
571
 
568
- let(:parent) do
569
- LD4L::OpenAnnotationRDF::Annotation.new('123')
572
+ let(:child) do
573
+ if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
574
+ LD4L::FoafRDF::Person.new('456',subject)
575
+ else # < ActiveTriples 0.8
576
+ LD4L::FoafRDF::Person.new('456')
577
+ end
570
578
  end
571
579
 
572
580
  it 'should empty the graph and remove it from the parent' do
573
- subject.destroy
574
- expect(parent.annotatedBy).to be_empty
581
+ child.destroy
582
+ expect(subject.annotatedBy).to be_empty
575
583
  end
576
584
 
577
585
  it 'should remove its whole graph from the parent' do
578
- subject.destroy
579
- subject.each_statement do |s|
580
- expect(parent.statements).not_to include s
586
+ child.destroy
587
+ child.each_statement do |s|
588
+ expect(subject.statements).not_to include s
581
589
  end
582
590
  end
583
591
  end
@@ -674,7 +682,8 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
674
682
 
675
683
  describe '#type' do
676
684
  it 'should return the type configured on the parent class' do
677
- expect(subject.type).to eq [LD4L::OpenAnnotationRDF::Annotation.type]
685
+ expected_result = LD4L::OpenAnnotationRDF::Annotation.type.kind_of?(Array) ? LD4L::OpenAnnotationRDF::Annotation.type : [LD4L::OpenAnnotationRDF::Annotation.type]
686
+ expect(subject.type).to eq expected_result
678
687
  end
679
688
 
680
689
  it 'should set the type' do
@@ -708,17 +717,6 @@ describe 'LD4L::OpenAnnotationRDF::Annotation' do
708
717
  end
709
718
  end
710
719
 
711
- describe '#solrize' do
712
- it 'should return a label for bnodes' do
713
- expect(subject.solrize).to eq subject.rdf_label
714
- end
715
-
716
- it 'should return a string of the resource uri' do
717
- subject.set_subject! 'http://example.org/moomin'
718
- expect(subject.solrize).to eq 'http://example.org/moomin'
719
- end
720
- end
721
-
722
720
  describe 'editing the graph' do
723
721
  it 'should write properties when statements are added' do
724
722
  subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.motivatedBy, 'commenting')
@@ -46,7 +46,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
46
46
  end
47
47
 
48
48
  it 'should not be settable' do
49
- expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
49
+ expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error(RuntimeError, 'Refusing update URI when one is already assigned!')
50
50
  end
51
51
  end
52
52
  end
@@ -110,6 +110,24 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
110
110
  expect(subject.getBody.rdf_subject.to_s).to match match /http:\/\/localhost\/[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}/
111
111
  expect(subject.getBody).not_to be_persisted
112
112
  end
113
+
114
+ it "should re-use body when changing the comment" do
115
+ subject.setComment('Initial comment value.')
116
+ expect(subject.getBody).to eq subject.hasBody.first
117
+ cb = subject.getBody
118
+ subject.setComment('Changed comment value.')
119
+ expect(subject.getBody).to eq subject.hasBody.first
120
+ expect(subject.getBody.object_id).to eq cb.object_id
121
+ end
122
+ end
123
+
124
+ describe '#getComment' do
125
+ before do
126
+ subject.setComment('Test getting a comment.')
127
+ end
128
+ it "should get the comment" do
129
+ expect(subject.getComment).to eq 'Test getting a comment.'
130
+ end
113
131
  end
114
132
 
115
133
  describe 'annotatedBy' do
@@ -236,14 +254,18 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
236
254
  context "and the item is not a blank node" do
237
255
 
238
256
  subject {LD4L::OpenAnnotationRDF::CommentAnnotation.new("123")}
257
+ let(:result) { subject.persist! }
239
258
 
240
259
  before do
241
260
  # Create inmemory repository
242
261
  @repo = RDF::Repository.new
243
- allow(subject.class).to receive(:repository).and_return(nil)
244
- allow(subject).to receive(:repository).and_return(@repo)
262
+ ActiveTriples::Repositories.repositories[:default] = @repo
245
263
  subject.motivatedBy = RDFVocabularies::OA.commenting
246
- subject.persist!
264
+ result
265
+ end
266
+
267
+ it "should return true" do
268
+ expect(result).to eq true
247
269
  end
248
270
 
249
271
  it "should persist to the repository" do
@@ -268,6 +290,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
268
290
  end
269
291
  it "should persist body to the repository" do
270
292
  cb = LD4L::OpenAnnotationRDF::CommentBody.new(subject.getBody.rdf_subject)
293
+ expect(cb.content).to eq ['I like this.']
271
294
  expect(cb).to be_persisted
272
295
  expect(subject.getBody.rdf_subject.to_s).to eq cb.rdf_subject.to_s
273
296
  end
@@ -299,7 +322,11 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
299
322
  end
300
323
 
301
324
  let(:child) do
302
- LD4L::FoafRDF::Person.new('456')
325
+ if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
326
+ LD4L::FoafRDF::Person.new('456',subject)
327
+ else # < ActiveTriples 0.8
328
+ LD4L::FoafRDF::Person.new('456')
329
+ end
303
330
  end
304
331
 
305
332
  it 'should empty the graph and remove it from the parent' do
@@ -426,7 +453,8 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
426
453
 
427
454
  describe '#type' do
428
455
  it 'should return the type configured on the parent class' do
429
- expect(subject.type).to eq [LD4L::OpenAnnotationRDF::CommentAnnotation.type]
456
+ expected_result = LD4L::OpenAnnotationRDF::CommentAnnotation.type.kind_of?(Array) ? LD4L::OpenAnnotationRDF::CommentAnnotation.type : [LD4L::OpenAnnotationRDF::CommentAnnotation.type]
457
+ expect(subject.type).to eq expected_result
430
458
  end
431
459
 
432
460
  it 'should set the type' do
@@ -460,17 +488,6 @@ describe 'LD4L::OpenAnnotationRDF::CommentAnnotation' do
460
488
  end
461
489
  end
462
490
 
463
- describe '#solrize' do
464
- it 'should return a label for bnodes' do
465
- expect(subject.solrize).to eq subject.rdf_label
466
- end
467
-
468
- it 'should return a string of the resource uri' do
469
- subject.set_subject! 'http://example.org/moomin'
470
- expect(subject.solrize).to eq 'http://example.org/moomin'
471
- end
472
- end
473
-
474
491
  describe 'editing the graph' do
475
492
  it 'should write properties when statements are added' do
476
493
  subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.motivatedBy, 'commenting')
@@ -49,7 +49,7 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
49
49
  end
50
50
 
51
51
  it 'should not be settable' do
52
- expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
52
+ expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error(RuntimeError, 'Refusing update URI when one is already assigned!')
53
53
  end
54
54
  end
55
55
  end
@@ -61,45 +61,58 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
61
61
 
62
62
  describe 'type' do
63
63
  it "should be set to text and ContentAsText from new" do
64
- expect(subject.type.size).to eq 2
65
- expect(subject.type).to include RDFVocabularies::DCTYPES.Text
66
- expect(subject.type).to include RDFVocabularies::CNT.ContentAsText
64
+ expected_results = subject.type
65
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
66
+ expect(expected_results.size).to eq 2
67
+ expect(expected_results).to include RDFVocabularies::DCTYPES.Text
68
+ expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
67
69
  end
68
70
 
69
71
  it "should be settable" do
70
72
  subject.type = RDFVocabularies::DCTYPES.Text
71
- expect(subject.type.size).to eq 1
72
- expect(subject.type.first).to eq RDFVocabularies::DCTYPES.Text
73
+ expected_results = subject.type
74
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
75
+ expect(expected_results.size).to eq 1
76
+ expect(expected_results).to include RDFVocabularies::DCTYPES.Text
73
77
  end
74
78
 
75
79
  it "should be settable to multiple values" do
76
80
  t = [RDFVocabularies::DCTYPES.Text, RDFVocabularies::CNT.ContentAsText]
77
81
  subject.set_value(:type,t)
78
- expect(subject.type.size).to eq 2
79
- expect(subject.type).to include RDFVocabularies::DCTYPES.Text
80
- expect(subject.type).to include RDFVocabularies::CNT.ContentAsText
82
+ expected_results = subject.type
83
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
84
+ expect(expected_results.size).to eq 2
85
+ expect(expected_results).to include RDFVocabularies::DCTYPES.Text
86
+ expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
81
87
  end
82
88
 
83
89
  it "should be changeable" do
84
90
  subject.type = RDFVocabularies::DCTYPES.Text
85
91
  subject.type = RDFVocabularies::CNT.ContentAsText
86
- expect(subject.type.size).to eq 1
87
- expect(subject.type.first).to eq RDFVocabularies::CNT.ContentAsText
92
+ expected_results = subject.type
93
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
94
+ expect(expected_results.size).to eq 1
95
+ expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
88
96
  end
89
97
 
90
98
  it "should be changeable for multiple values" do
91
99
  t = [RDFVocabularies::DCTYPES.Text, RDFVocabularies::CNT.ContentAsText]
92
100
  subject.set_value(:type,t)
93
- expect(subject.type.size).to eq 2
94
- expect(subject.type).to include RDFVocabularies::DCTYPES.Text
95
- expect(subject.type).to include RDFVocabularies::CNT.ContentAsText
96
- t = subject.get_values(:type)
101
+ expected_results = subject.type
102
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
103
+ expect(expected_results.size).to eq 2
104
+ expect(expected_results).to include RDFVocabularies::DCTYPES.Text
105
+ expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
106
+
107
+ t = subject.get_values(:type).to_a
97
108
  t[0] = RDFVocabularies::OA.Tag # dummy type for testing
98
109
  t[1] = RDFVocabularies::OA.SemanticTag # dummy type for testing
99
110
  subject.set_value(:type,t)
100
- expect(subject.type.size).to eq 2
101
- expect(subject.type).to include RDFVocabularies::OA.Tag
102
- expect(subject.type).to include RDFVocabularies::OA.SemanticTag
111
+ expected_results = subject.type
112
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
113
+ expect(expected_results.size).to eq 2
114
+ expect(expected_results).to include RDFVocabularies::OA.Tag
115
+ expect(expected_results).to include RDFVocabularies::OA.SemanticTag
103
116
  end
104
117
  end
105
118
 
@@ -207,14 +220,23 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
207
220
  context "and the item is not a blank node" do
208
221
 
209
222
  subject {LD4L::OpenAnnotationRDF::CommentBody.new("123")}
223
+ let(:result) { subject.persist! }
210
224
 
211
225
  before do
212
226
  # Create inmemory repository
213
227
  @repo = RDF::Repository.new
214
228
  allow(subject.class).to receive(:repository).and_return(nil)
215
- allow(subject).to receive(:repository).and_return(@repo)
229
+ if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
230
+ allow(subject.persistence_strategy).to receive(:repository).and_return(@repo)
231
+ else # < ActiveTriples 0.8
232
+ allow(subject).to receive(:repository).and_return(@repo)
233
+ end
216
234
  subject.content = "bla"
217
- subject.persist!
235
+ result
236
+ end
237
+
238
+ it "should return true" do
239
+ expect(result).to eq true
218
240
  end
219
241
 
220
242
  it "should persist to the repository" do
@@ -272,17 +294,6 @@ describe 'LD4L::OpenAnnotationRDF::CommentBody' do
272
294
  end
273
295
  end
274
296
 
275
- describe '#solrize' do
276
- it 'should return a label for bnodes' do
277
- expect(subject.solrize).to eq subject.rdf_label
278
- end
279
-
280
- it 'should return a string of the resource uri' do
281
- subject.set_subject! 'http://example.org/moomin'
282
- expect(subject.solrize).to eq 'http://example.org/moomin'
283
- end
284
- end
285
-
286
297
  describe 'editing the graph' do
287
298
  it 'should write properties when statements are added' do
288
299
  subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'Great book!')
@@ -48,7 +48,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
48
48
  end
49
49
 
50
50
  it 'should not be settable' do
51
- expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
51
+ expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error(RuntimeError, 'Refusing update URI when one is already assigned!')
52
52
  end
53
53
  end
54
54
  end
@@ -109,19 +109,19 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
109
109
 
110
110
  context "when new value is nil" do
111
111
  it "should throw invalid arguement exception" do
112
- expect{ subject.setTerm(nil) }.to raise_error
112
+ expect{ subject.setTerm(nil) }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
113
113
  end
114
114
  end
115
115
 
116
116
  context "when new value is a string of 0 length" do
117
117
  it "should throw invalid arguement exception" do
118
- expect{ subject.setTerm("") }.to raise_error
118
+ expect{ subject.setTerm("") }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
119
119
  end
120
120
  end
121
121
 
122
122
  context "when new value is not a string or uri" do
123
123
  it "should throw invalid arguement exception" do
124
- expect{ subject.setTerm(3) }.to raise_error
124
+ expect{ subject.setTerm(3) }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
125
125
  end
126
126
  end
127
127
 
@@ -133,6 +133,15 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
133
133
  end
134
134
  end
135
135
 
136
+ describe '#getTerm' do
137
+ before do
138
+ subject.setTerm('TestTerm')
139
+ end
140
+ it "should get the tag" do
141
+ expect(subject.getTerm).to eq 'TestTerm'
142
+ end
143
+ end
144
+
136
145
  context "when term doesn't already exist as a SemanticTagBody" do
137
146
  before do
138
147
  stb = LD4L::OpenAnnotationRDF::SemanticTagBody.new('http://example.org/new_term')
@@ -294,14 +303,18 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
294
303
  context "and the item is not a blank node" do
295
304
 
296
305
  subject {LD4L::OpenAnnotationRDF::SemanticTagAnnotation.new("123")}
306
+ let(:result) { subject.persist! }
297
307
 
298
308
  before do
299
309
  # Create inmemory repository
300
310
  @repo = RDF::Repository.new
301
- allow(subject.class).to receive(:repository).and_return(nil)
302
- allow(subject).to receive(:repository).and_return(@repo)
311
+ ActiveTriples::Repositories.repositories[:default] = @repo
303
312
  subject.motivatedBy = RDFVocabularies::OA.commenting
304
- subject.persist!
313
+ result
314
+ end
315
+
316
+ it "should return true" do
317
+ expect(result).to eq true
305
318
  end
306
319
 
307
320
  it "should persist to the repository" do
@@ -359,7 +372,11 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
359
372
  end
360
373
 
361
374
  let(:child) do
362
- LD4L::FoafRDF::Person.new('456')
375
+ if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
376
+ LD4L::FoafRDF::Person.new('456',subject)
377
+ else # < ActiveTriples 0.8
378
+ LD4L::FoafRDF::Person.new('456')
379
+ end
363
380
  end
364
381
 
365
382
  it 'should empty the graph and remove it from the parent' do
@@ -486,7 +503,8 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
486
503
 
487
504
  describe '#type' do
488
505
  it 'should return the type configured on the parent class' do
489
- expect(subject.type).to eq [LD4L::OpenAnnotationRDF::SemanticTagAnnotation.type]
506
+ expected_result = LD4L::OpenAnnotationRDF::SemanticTagAnnotation.type.kind_of?(Array) ? LD4L::OpenAnnotationRDF::SemanticTagAnnotation.type : [LD4L::OpenAnnotationRDF::SemanticTagAnnotation.type]
507
+ expect(subject.type).to eq expected_result
490
508
  end
491
509
 
492
510
  it 'should set the type' do
@@ -520,17 +538,6 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagAnnotation' do
520
538
  end
521
539
  end
522
540
 
523
- describe '#solrize' do
524
- it 'should return a label for bnodes' do
525
- expect(subject.solrize).to eq subject.rdf_label
526
- end
527
-
528
- it 'should return a string of the resource uri' do
529
- subject.set_subject! 'http://example.org/moomin'
530
- expect(subject.solrize).to eq 'http://example.org/moomin'
531
- end
532
- end
533
-
534
541
  describe 'editing the graph' do
535
542
  it 'should write properties when statements are added' do
536
543
  subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.motivatedBy, 'commenting')
@@ -49,7 +49,7 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
49
49
  end
50
50
 
51
51
  it 'should not be settable' do
52
- expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
52
+ expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error(RuntimeError, 'Refusing update URI when one is already assigned!')
53
53
  end
54
54
  end
55
55
  end
@@ -61,8 +61,10 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
61
61
 
62
62
  describe 'type' do
63
63
  it "should be set to text and astext from new" do
64
- expect(subject.type.size).to eq 1
65
- expect(subject.type).to include RDFVocabularies::OA.SemanticTag
64
+ expected_results = subject.type
65
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
66
+ expect(expected_results.size).to eq 1
67
+ expect(expected_results).to include RDFVocabularies::OA.SemanticTag
66
68
  end
67
69
  end
68
70
 
@@ -77,19 +79,19 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
77
79
 
78
80
  context "when term value is nil" do
79
81
  it "should throw invalid arguement exception" do
80
- expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.annotations_using(nil) }.to raise_error
82
+ expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.annotations_using(nil) }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
81
83
  end
82
84
  end
83
85
 
84
86
  context "when term value is a string of 0 length" do
85
87
  it "should throw invalid arguement exception" do
86
- expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.annotations_using("") }.to raise_error
88
+ expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.annotations_using("") }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
87
89
  end
88
90
  end
89
91
 
90
92
  context "when term is not a string or uri" do
91
93
  it "should throw invalid arguement exception" do
92
- expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.annotations_using(3) }.to raise_error
94
+ expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.annotations_using(3) }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
93
95
  end
94
96
  end
95
97
 
@@ -154,19 +156,19 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
154
156
  describe "#destroy_if_unused" do
155
157
  context "when term is nil" do
156
158
  it "should throw invalid arguement exception" do
157
- expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.destroy_if_unused(nil) }.to raise_error
159
+ expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.destroy_if_unused(nil) }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
158
160
  end
159
161
  end
160
162
 
161
163
  context "when term is a string of 0 length" do
162
164
  it "should throw invalid arguement exception" do
163
- expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.destroy_if_unused("") }.to raise_error
165
+ expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.destroy_if_unused("") }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
164
166
  end
165
167
  end
166
168
 
167
169
  context "when term is not a string or uri" do
168
170
  it "should throw invalid arguement exception" do
169
- expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.destroy_if_unused(3) }.to raise_error
171
+ expect{ LD4L::OpenAnnotationRDF::SemanticTagBody.destroy_if_unused(3) }.to raise_error(ArgumentError, 'Argument must be a uri string or an instance of RDF::URI')
170
172
  end
171
173
  end
172
174
 
@@ -266,13 +268,22 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
266
268
  context "and the item is not a blank node" do
267
269
 
268
270
  subject {LD4L::OpenAnnotationRDF::SemanticTagBody.new("123")}
271
+ let(:result) { subject.persist! }
269
272
 
270
273
  before do
271
274
  # Create inmemory repository
272
275
  @repo = RDF::Repository.new
273
276
  allow(subject.class).to receive(:repository).and_return(nil)
274
- allow(subject).to receive(:repository).and_return(@repo)
275
- subject.persist!
277
+ if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
278
+ allow(subject.persistence_strategy).to receive(:repository).and_return(@repo)
279
+ else # < ActiveTriples 0.8
280
+ allow(subject).to receive(:repository).and_return(@repo)
281
+ end
282
+ result
283
+ end
284
+
285
+ it "should return true" do
286
+ expect(result).to eq true
276
287
  end
277
288
 
278
289
  it "should persist to the repository" do
@@ -326,17 +337,6 @@ describe 'LD4L::OpenAnnotationRDF::SemanticTagBody' do
326
337
  end
327
338
  end
328
339
 
329
- describe '#solrize' do
330
- it 'should return a label for bnodes' do
331
- expect(subject.solrize).to eq subject.rdf_label
332
- end
333
-
334
- it 'should return a string of the resource uri' do
335
- subject.set_subject! 'http://example.org/moomin'
336
- expect(subject.solrize).to eq 'http://example.org/moomin'
337
- end
338
- end
339
-
340
340
  describe 'big complex graphs' do
341
341
  before do
342
342
  class DummyPerson < ActiveTriples::Resource
@@ -48,7 +48,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
48
48
  end
49
49
 
50
50
  it 'should not be settable' do
51
- expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
51
+ expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error(RuntimeError, 'Refusing update URI when one is already assigned!')
52
52
  end
53
53
  end
54
54
  end
@@ -113,19 +113,19 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
113
113
 
114
114
  context "when new value is nil" do
115
115
  it "should throw invalid arguement exception" do
116
- expect{ subject.setTag(nil) }.to raise_error
116
+ expect{ subject.setTag(nil) }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
117
117
  end
118
118
  end
119
119
 
120
120
  context "when new value is a string of 0 length" do
121
121
  it "should throw invalid arguement exception" do
122
- expect{ subject.setTag("") }.to raise_error
122
+ expect{ subject.setTag("") }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
123
123
  end
124
124
  end
125
125
 
126
126
  context "when new value is not a string" do
127
127
  it "should throw invalid arguement exception" do
128
- expect{ subject.setTag(3) }.to raise_error
128
+ expect{ subject.setTag(3) }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
129
129
  end
130
130
  end
131
131
 
@@ -133,7 +133,7 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
133
133
  it "should return the existing TagBody unchanged" do
134
134
  tb1 = subject.setTag('foo')
135
135
  tb2 = subject.setTag('foo')
136
- expect(tb2).to eq tb1
136
+ expect(tb2.object_id).to eq tb1.object_id
137
137
  end
138
138
  end
139
139
 
@@ -222,6 +222,15 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
222
222
  end
223
223
  end
224
224
 
225
+ describe '#getTag' do
226
+ before do
227
+ subject.setTag('TestTag')
228
+ end
229
+ it "should get the tag" do
230
+ expect(subject.getTag).to eq 'TestTag'
231
+ end
232
+ end
233
+
225
234
  describe 'annotatedBy' do
226
235
  it "should be empty array if we haven't set it" do
227
236
  expect(subject.annotatedBy).to match_array([])
@@ -346,14 +355,18 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
346
355
  context "and the annotation is not a blank node" do
347
356
 
348
357
  subject {LD4L::OpenAnnotationRDF::TagAnnotation.new("123")}
358
+ let(:result) { subject.persist! }
349
359
 
350
360
  before do
351
361
  # Create inmemory repository
352
362
  @repo = RDF::Repository.new
353
- allow(subject.class).to receive(:repository).and_return(nil)
354
- allow(subject).to receive(:repository).and_return(@repo)
363
+ ActiveTriples::Repositories.repositories[:default] = @repo
355
364
  subject.motivatedBy = RDFVocabularies::OA.commenting
356
- subject.persist!
365
+ result
366
+ end
367
+
368
+ it "should return true" do
369
+ expect(result).to eq true
357
370
  end
358
371
 
359
372
  it "should persist to the repository" do
@@ -411,7 +424,11 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
411
424
  end
412
425
 
413
426
  let(:child) do
414
- LD4L::FoafRDF::Person.new('456')
427
+ if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
428
+ LD4L::FoafRDF::Person.new('456',subject)
429
+ else # < ActiveTriples 0.8
430
+ LD4L::FoafRDF::Person.new('456')
431
+ end
415
432
  end
416
433
 
417
434
  it 'should empty the graph and remove it from the parent' do
@@ -539,7 +556,8 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
539
556
 
540
557
  describe '#type' do
541
558
  it 'should return the type configured on the parent class' do
542
- expect(subject.type).to eq [LD4L::OpenAnnotationRDF::TagAnnotation.type]
559
+ expected_result = LD4L::OpenAnnotationRDF::TagAnnotation.type.kind_of?(Array) ? LD4L::OpenAnnotationRDF::TagAnnotation.type : [LD4L::OpenAnnotationRDF::TagAnnotation.type]
560
+ expect(subject.type).to eq expected_result
543
561
  end
544
562
 
545
563
  it 'should set the type' do
@@ -573,17 +591,6 @@ describe 'LD4L::OpenAnnotationRDF::TagAnnotation' do
573
591
  end
574
592
  end
575
593
 
576
- describe '#solrize' do
577
- it 'should return a label for bnodes' do
578
- expect(subject.solrize).to eq subject.rdf_label
579
- end
580
-
581
- it 'should return a string of the resource uri' do
582
- subject.set_subject! 'http://example.org/moomin'
583
- expect(subject.solrize).to eq 'http://example.org/moomin'
584
- end
585
- end
586
-
587
594
  describe 'editing the graph' do
588
595
  it 'should write properties when statements are added' do
589
596
  subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::OA.motivatedBy, 'commenting')
@@ -49,7 +49,7 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
49
49
  end
50
50
 
51
51
  it 'should not be settable' do
52
- expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error
52
+ expect{ subject.set_subject! RDF::URI('http://example.org/moomin2') }.to raise_error(RuntimeError, 'Refusing update URI when one is already assigned!')
53
53
  end
54
54
  end
55
55
  end
@@ -61,9 +61,11 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
61
61
 
62
62
  describe 'type' do
63
63
  it "should be set to text and astext from new" do
64
- expect(subject.type.size).to eq 2
65
- expect(subject.type).to include RDFVocabularies::OA.Tag
66
- expect(subject.type).to include RDFVocabularies::CNT.ContentAsText
64
+ expected_results = subject.type
65
+ expected_results = expected_results.to_a if Object.const_defined?("ActiveTriples::Relation") && expected_results.kind_of?(ActiveTriples::Relation)
66
+ expect(expected_results.size).to eq 2
67
+ expect(expected_results).to include RDFVocabularies::OA.Tag
68
+ expect(expected_results).to include RDFVocabularies::CNT.ContentAsText
67
69
  end
68
70
  end
69
71
 
@@ -88,19 +90,19 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
88
90
 
89
91
  context "when tag value is nil" do
90
92
  it "should throw invalid arguement exception" do
91
- expect{ LD4L::OpenAnnotationRDF::TagBody.annotations_using(nil) }.to raise_error
93
+ expect{ LD4L::OpenAnnotationRDF::TagBody.annotations_using(nil) }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
92
94
  end
93
95
  end
94
96
 
95
97
  context "when tag value is a string of 0 length" do
96
98
  it "should throw invalid arguement exception" do
97
- expect{ LD4L::OpenAnnotationRDF::TagBody.annotations_using("") }.to raise_error
99
+ expect{ LD4L::OpenAnnotationRDF::TagBody.annotations_using("") }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
98
100
  end
99
101
  end
100
102
 
101
103
  context "when tag value is not a string" do
102
104
  it "should throw invalid arguement exception" do
103
- expect{ LD4L::OpenAnnotationRDF::TagBody.annotations_using(3) }.to raise_error
105
+ expect{ LD4L::OpenAnnotationRDF::TagBody.annotations_using(3) }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
104
106
  end
105
107
  end
106
108
 
@@ -146,19 +148,19 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
146
148
 
147
149
  context "when new value is nil" do
148
150
  it "should throw invalid arguement exception" do
149
- expect{ LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value(nil) }.to raise_error
151
+ expect{ LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value(nil) }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
150
152
  end
151
153
  end
152
154
 
153
155
  context "when new value is a string of 0 length" do
154
156
  it "should throw invalid arguement exception" do
155
- expect{ LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value("") }.to raise_error
157
+ expect{ LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value("") }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
156
158
  end
157
159
  end
158
160
 
159
161
  context "when new value is not a string" do
160
162
  it "should throw invalid arguement exception" do
161
- expect{ LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value(3) }.to raise_error
163
+ expect{ LD4L::OpenAnnotationRDF::TagBody.fetch_by_tag_value(3) }.to raise_error(ArgumentError, 'Argument must be a string with at least one character')
162
164
  end
163
165
  end
164
166
 
@@ -266,14 +268,23 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
266
268
  context "and the item is not a blank node" do
267
269
 
268
270
  subject {LD4L::OpenAnnotationRDF::TagBody.new("123")}
271
+ let(:result) { subject.persist! }
269
272
 
270
273
  before do
271
274
  # Create inmemory repository
272
275
  @repo = RDF::Repository.new
273
276
  allow(subject.class).to receive(:repository).and_return(nil)
274
- allow(subject).to receive(:repository).and_return(@repo)
277
+ if subject.respond_to? 'persistence_strategy' # >= ActiveTriples 0.8
278
+ allow(subject.persistence_strategy).to receive(:repository).and_return(@repo)
279
+ else # < ActiveTriples 0.8
280
+ allow(subject).to receive(:repository).and_return(@repo)
281
+ end
275
282
  subject.tag = "bla"
276
- subject.persist!
283
+ result
284
+ end
285
+
286
+ it "should return true" do
287
+ expect(result).to eq true
277
288
  end
278
289
 
279
290
  it "should persist to the repository" do
@@ -331,17 +342,6 @@ describe 'LD4L::OpenAnnotationRDF::TagBody' do
331
342
  end
332
343
  end
333
344
 
334
- describe '#solrize' do
335
- it 'should return a label for bnodes' do
336
- expect(subject.solrize).to eq subject.rdf_label
337
- end
338
-
339
- it 'should return a string of the resource uri' do
340
- subject.set_subject! 'http://example.org/moomin'
341
- expect(subject.solrize).to eq 'http://example.org/moomin'
342
- end
343
- end
344
-
345
345
  describe 'editing the graph' do
346
346
  it 'should write properties when statements are added' do
347
347
  subject << RDF::Statement.new(subject.rdf_subject, RDFVocabularies::CNT.chars, 'good')
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ld4l-open_annotation_rdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - E. Lynette Rayle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-18 00:00:00.000000000 Z
11
+ date: 2016-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdf
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.1'
19
+ version: 1.99.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '1.1'
26
+ version: 1.99.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: active-triples
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -31,6 +31,12 @@ dependencies:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.5'
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '0.6'
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.8.2
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,20 +44,26 @@ dependencies:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
46
  version: '0.5'
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.6'
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: 0.8.2
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: active_triples-local_name
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
- - - "~>"
57
+ - - ">="
46
58
  - !ruby/object:Gem::Version
47
- version: '0.1'
59
+ version: '0'
48
60
  type: :runtime
49
61
  prerelease: false
50
62
  version_requirements: !ruby/object:Gem::Requirement
51
63
  requirements:
52
- - - "~>"
64
+ - - ">="
53
65
  - !ruby/object:Gem::Version
54
- version: '0.1'
66
+ version: '0'
55
67
  - !ruby/object:Gem::Dependency
56
68
  name: ld4l-foaf_rdf
57
69
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +92,20 @@ dependencies:
80
92
  - - ">="
81
93
  - !ruby/object:Gem::Version
82
94
  version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: pry-byebug
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
83
109
  - !ruby/object:Gem::Dependency
84
110
  name: rdoc
85
111
  requirement: !ruby/object:Gem::Requirement
@@ -163,6 +189,7 @@ files:
163
189
  - ".coveralls.yml"
164
190
  - ".gitignore"
165
191
  - ".travis.yml"
192
+ - CHANGES.md
166
193
  - Gemfile
167
194
  - LICENSE.txt
168
195
  - README.md
@@ -211,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
238
  version: '0'
212
239
  requirements: []
213
240
  rubyforge_project:
214
- rubygems_version: 2.4.3
241
+ rubygems_version: 2.4.5
215
242
  signing_key:
216
243
  specification_version: 4
217
244
  summary: OpenAnnotation RDF models.