summon 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ Gemfile.lock
1
2
  .bundle/
2
3
  .idea
3
4
  doc
data/Changelog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 2.0.1
2
+ * 1 major enhancement
3
+ * added availability_path field
4
+
1
5
  ### 2.0.0
2
6
  * 1 major enhancement
3
7
  * added link field to document schema (this now supercedes the url and
@@ -19,16 +19,17 @@ class Summon::Document < Summon::Schema
19
19
  attr :publication_date, :json_name => "PublicationDate_xml", :transform => :Date
20
20
  attr :publication_place
21
21
  attr :meeting_name, :single => false
22
-
22
+
23
23
  attr :isi_cited_references_count, :json_name => "ISICitedReferencesCount"
24
24
  attr :isi_cited_references_uri, :json_name => "ISICitedReferencesURI"
25
-
25
+
26
26
  attr :dissertation_advisors, :json_name => "DissertationAdvisor"
27
27
  attr :dissertation_categories, :json_name => "DissertationCategory"
28
28
  attr :dissertation_degrees, :json_name => "DissertationDegree"
29
29
  attr :dissertation_degrees_dates, :json_name => "DissertationDegreeDate"
30
30
  attr :dissertation_schools, :json_name => "DissertationSchool"
31
-
31
+
32
+ attr :in_holdings, :json_name => "inHoldings", :boolean => true
32
33
  attr :library
33
34
  attr :call_numbers, :json_name => "LCCallNum"
34
35
  attr :deweys, :json_name => "DEWEY"
@@ -39,13 +40,13 @@ class Summon::Document < Summon::Schema
39
40
  attr :eissns, :json_name => "EISSN"
40
41
  attr :patent_number
41
42
  attr :gov_doc_class_nums, :json_name => "GovDocClassNum"
42
-
43
+
43
44
  attr :copyright, :single => false
44
-
45
+
45
46
  attr :subject_terms
46
47
  attr :genres, :json_name => "Genre"
47
48
  attr :languages, :json_name => "Language"
48
-
49
+
49
50
  attr :snippet #highlight
50
51
  attr :abstract
51
52
  attr :fulltext, :boolean => true, :json_name => "hasFullText"
@@ -62,9 +63,9 @@ class Summon::Document < Summon::Schema
62
63
  attr :availability_id
63
64
  attr :eric, :json_name => "ERIC"
64
65
  attr :dbid, :json_name => "DBID", :single => false
65
-
66
+
66
67
  attr :lib_guide_tab, :json_name => "LibGuideTab_xml", :single => false
67
-
68
+
68
69
  attr :spotlight_children, :single => false, :transform => :Document
69
70
  attr :fulltext_hit, :json_name => "isFullTextHit"
70
71
  attr :peer_documents, :single => false, :json_name => "peerDocuments", :transform => :Document
@@ -76,11 +77,11 @@ class Summon::Document < Summon::Schema
76
77
  def isbn
77
78
  @isbns.first
78
79
  end
79
-
80
+
80
81
  def call_number
81
82
  @call_numbers.first
82
83
  end
83
-
84
+
84
85
  def gov_doc_class_num
85
86
  @gov_doc_class_nums.first
86
87
  end
@@ -88,7 +89,7 @@ class Summon::Document < Summon::Schema
88
89
  def pages?
89
90
  @start_page || @page_count
90
91
  end
91
-
92
+
92
93
  def publication_date
93
94
  @publication_date || Summon::Date.new({})
94
95
  end
@@ -96,15 +97,15 @@ class Summon::Document < Summon::Schema
96
97
  def publisher
97
98
  @publishers.first
98
99
  end
99
-
100
+
100
101
  def authors
101
102
  @authors.map {|n| Summon::Author.new(n["fullname"], n["surname"], n["givenname"], n["middlename"])}
102
103
  end
103
-
104
+
104
105
  def corporate_authors
105
106
  @corporate_authors.map {|n| Summon::Author.new(n)}
106
107
  end
107
-
108
+
108
109
  def to_s(options = {})
109
110
  "Title: #{title}"
110
111
  end
@@ -116,7 +117,7 @@ class Summon::Document < Summon::Schema
116
117
  def from_library?
117
118
  @availability_id != nil
118
119
  end
119
-
120
+
120
121
  end
121
122
 
122
123
  class Summon::Author < Struct.new(:fullname, :surname, :givenname, :middlename)
@@ -136,7 +137,7 @@ class Summon::Author < Struct.new(:fullname, :surname, :givenname, :middlename)
136
137
  def middlename(*args)
137
138
  super()
138
139
  end
139
-
140
+
140
141
  alias_method :name, :fullname
141
142
  end
142
143
 
@@ -144,7 +145,7 @@ class Summon::LibGuideTab < Struct.new(:name, :uri)
144
145
  def name(*args)
145
146
  super()
146
147
  end
147
-
148
+
148
149
  def uri(*args)
149
150
  super()
150
151
  end
@@ -7,7 +7,10 @@ class Summon::Facet < Summon::Schema
7
7
  attr :page_number
8
8
  attr :counts, :transform => :FacetCount
9
9
  attr :remove_command
10
- attr :remove_value_filters_command
10
+ attr :has_applied_value?, :json_name => :hasAppliedValue, :boolean => true
11
+ attr :has_limiting_value?, :json_name => :hasLimitingValue, :boolean => true
12
+ attr :list_values_command
13
+ attr :remove_value_filters_command
11
14
 
12
15
 
13
16
  def to_s
@@ -17,11 +20,11 @@ class Summon::Facet < Summon::Schema
17
20
  def range?
18
21
  false
19
22
  end
20
-
23
+
21
24
  def empty?
22
25
  @counts.empty?
23
26
  end
24
-
27
+
25
28
  end
26
29
 
27
30
  class Summon::FacetCount < Summon::Schema
@@ -37,15 +40,15 @@ class Summon::FacetCount < Summon::Schema
37
40
  def escaped_value
38
41
  Summon.escape(@value)
39
42
  end
40
-
43
+
41
44
  def excluded?
42
45
  negated?
43
46
  end
44
-
47
+
45
48
  def included?
46
49
  applied? && !excluded?
47
50
  end
48
-
51
+
49
52
  def abs_value
50
53
  value.sub /^-/, ''
51
54
  end
@@ -7,6 +7,7 @@ class Summon::Search < Summon::Schema
7
7
  attr :query_time
8
8
  attr :total_request_time
9
9
 
10
+ attr :availability_path
10
11
  attr :query, :transform => :Query
11
12
  attr :recommendations, :transform => :RecommendationList, :json_name => "recommendationLists"
12
13
  attr :suggestions, :transform => :Suggestion, :json_name => :didYouMeanSuggestions
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Summon
3
- VERSION = "2.0.0"
3
+ VERSION = "2.0.1"
4
4
  end
@@ -1,43 +1,37 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Summon::Document do
4
- it "should map" do
5
- pending "This is a really nasty test"
6
- doc = Summon::Document.new(@service, JSON.parse(EXAMPLE_DOCUMENT_JSON))
7
- doc.remove_src
8
- doc.publication_date.remove_src
9
- doc.authors.each {|a| a.remove_src }
10
- doc.to_yaml.should == EXPECTED_DOCUMENT_YAML
11
- end
4
+ before {@document = Summon::Document.new(@service, JSON.parse(EXAMPLE_DOCUMENT_JSON))}
5
+ subject {@document}
6
+ it {should be_from_library}
7
+ its(:abstract) {should eql "This is the most awesome document ever"}
8
+ its(:subject_terms) {should eql ["Women's music", "Popular music", "Rock music"]}
9
+ its(:issns) {should eql ["1063-7125", "0000-1111"]}
10
+ its(:isbns) {should eql [ "0849343763 (v. 1)","0849343771 (v. 2)"]}
11
+ its(:publication_title) {should eql "Batman Books"}
12
+ it {should be_in_holdings}
12
13
 
13
- describe "from_library?" do
14
- it "should return true if the document has an availability_id" do
15
- doc = Summon::Document.new(@service, JSON.parse(EXAMPLE_DOCUMENT_JSON))
16
- doc.from_library?.should be(true)
14
+ describe "authors" do
15
+ it "combines givenname, middlename, surname if fullname is missing" do
16
+ @document.authors[2].name.should == "Shi Wang"
17
+ @document.authors[3].name.should == "Hai C Chu"
17
18
  end
18
-
19
- it "should return false if the document doesn't have an availability_id" do
20
- document_data = JSON.parse(EXAMPLE_DOCUMENT_JSON)
21
- document_data.delete('availabilityId')
22
- doc = Summon::Document.new(@service, document_data)
23
- doc.from_library?.should be(false)
19
+ it "preserves order" do
20
+ @document.authors.map(&:name).should == ["Liang, Yong X", "Gu, Miao N", "Shi Wang", "Hai C Chu"]
24
21
  end
25
22
  end
26
-
27
- describe "authors" do
23
+
24
+ describe "without any availability ids" do
28
25
  before do
29
26
  document_data = JSON.parse(EXAMPLE_DOCUMENT_JSON)
30
- @doc = Summon::Document.new(@service, document_data)
31
- end
32
- it "should combine givenname, middlename, surname if fullname is missing" do
33
- @doc.authors[2].name.should == "Shi Wang"
34
- @doc.authors[3].name.should == "Hai C Chu"
35
- end
36
- it "should preserve order" do
37
- @doc.authors.map(&:name).should == ["Liang, Yong X", "Gu, Miao N", "Shi Wang", "Hai C Chu"]
27
+ document_data.delete('availabilityId')
28
+ @document = Summon::Document.new(@service, document_data)
38
29
  end
30
+ subject{@document}
31
+ it {should_not be_from_library}
39
32
  end
40
-
33
+
34
+
41
35
  EXAMPLE_DOCUMENT_JSON = <<-JSON
42
36
  {
43
37
  "Publisher_xml": [
@@ -66,7 +60,7 @@ describe Summon::Document do
66
60
  "XQueryRevision": [
67
61
  "Rev: 6229"
68
62
  ],
69
- "inHoldings": false,
63
+ "inHoldings": true,
70
64
  "DBID": [
71
65
  "GXQ"
72
66
  ],
@@ -106,7 +100,7 @@ describe Summon::Document do
106
100
  "surname": "Chu",
107
101
  "middlename": "C",
108
102
  "givenname": "Hai"
109
- }
103
+ }
110
104
  ],
111
105
  "CorporateAuthor": [
112
106
  "Hunter, Rick",
@@ -246,21 +240,21 @@ describe Summon::Document do
246
240
  ]
247
241
  }
248
242
  JSON
249
-
243
+
250
244
  EXPECTED_DOCUMENT_YAML = <<-YAML
251
- --- !ruby/object:Summon::Document
245
+ --- !ruby/object:Summon::Document
252
246
  abstract: This is the most awesome document ever
253
- authors:
247
+ authors:
254
248
  - Hunter, Lisa
255
249
  availability_id: b16644323
256
- call_numbers:
250
+ call_numbers:
257
251
  - M1630.18 .H95 2000
258
252
  - M1630.20 .H95 2000
259
253
  content_type: Audio Recording
260
- corporate_authors:
254
+ corporate_authors:
261
255
  - Hunter, Rick
262
256
  - Crusher, Beverly
263
- dbid:
257
+ dbid:
264
258
  - GXQ
265
259
  dissertation_advisor: Claudio Friedmann
266
260
  dissertation_category: Education
@@ -271,51 +265,51 @@ dissertation_degree_date_decade: "2000"
271
265
  dissertation_degree_date_year: "2001"
272
266
  dissertation_school: West Virginia University
273
267
  doi: 10.1109\/CBMS.2008.1
274
- edition:
268
+ edition:
275
269
  end_page: i
276
270
  fulltext: false
277
- genres:
271
+ genres:
278
272
  - Biography
279
273
  - Congress
280
- gov_doc_class_nums:
274
+ gov_doc_class_nums:
281
275
  - A 57.38/42:M 45
282
276
  - A 57.38/42:M 45
283
277
  id: gvsu_catalog_b16644323
284
- isbns:
278
+ isbns:
285
279
  - 0849343763 (v. 1)
286
280
  - 0849343771 (v. 2)
287
281
  isi_cited_references_count: 5
288
282
  isi_cited_references_uri: http://happy.com
289
- issns:
283
+ issns:
290
284
  - 1063-7125
291
285
  - 0000-1111
292
286
  issue: "7"
293
- languages:
287
+ languages:
294
288
  - English
295
289
  lib_guide_tab: []
296
290
 
297
291
  library: Women's Center Library
298
292
  open_url: ctx_ver=Z39.88-2004&rfr_id=info:sid/summon.serialssolutions.com&rft_val_fmt=info:ofi/fmt:kev:mtx:dc&rft.title=Lisa+Hunter+--+alive&rft.creator=Hunter%2C+Lisa&rft.date=c200-0.&rft.pub=Spirulina+Records&rft.externalDBID=n%2Fa&rft.externalDocID=b16644323
299
293
  page_count: xxviii, 140 p.
300
- patent_number:
301
- publication_date: !ruby/object:Summon::Date
294
+ patent_number:
295
+ publication_date: !ruby/object:Summon::Date
302
296
  day: "02"
303
297
  month: "01"
304
- service:
305
- src:
298
+ service:
299
+ src:
306
300
  text: c2000.
307
301
  year: "2000"
308
302
  publication_place: Indiana
309
303
  publication_series_title: A Bantam book
310
304
  publication_title: Batman Books
311
- publishers:
305
+ publishers:
312
306
  - Spirulina Records
313
307
  - Swingsistersound
314
- service:
308
+ service:
315
309
  snippet: This is the snippet
316
- src:
310
+ src:
317
311
  start_page: pp23
318
- subject_terms:
312
+ subject_terms:
319
313
  - Women's music
320
314
  - Popular music
321
315
  - Rock music
@@ -325,7 +319,7 @@ thumbnail_medium: http://api.test.summon.serialssolutions.com:8093/image/isbn/YX
325
319
  thumbnail_small: http://api.test.summon.serialssolutions.com:8093/image/isbn/YX3FL6LB6P/9781864879094/small
326
320
  title: Lisa Hunter -- alive
327
321
  uri: http://disney.com
328
- url:
329
- volume:
322
+ url:
323
+ volume:
330
324
  YAML
331
325
  end
@@ -1,29 +1,41 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Summon::Facet do
4
- it "should map" do
5
- facet = Summon::Facet.new(@service, JSON.parse(EXAMPLE_FACET_JSON))
6
- facet.remove_src
7
- facet.counts.each {|f| f.remove_src }
8
- facet.to_yaml.should == EXPECTED_FACET_YAML
4
+ before {@facet = Summon::Facet.new(@service, JSON.parse(EXAMPLE_FACET_JSON))}
5
+ subject {@facet}
9
6
 
10
- first = facet.counts.first
11
- first.apply_command.should == "addFacetValueFilter(ContentType_sfacet,Book,false)"
12
- first.apply_negated_command.should == "addFacetValueFilter(ContentType_sfacet,Book,true)"
13
- first.remove_command.should == "eatMyShorts()"
7
+ its(:page_size) {should eql 10}
8
+ its(:display_name) {should eql "ContentType"}
9
+ its(:combine_mode) {should eql "or"}
10
+ its(:list_values_command) {should eql "listFacetValues(ContentType_sfacet,or)"}
11
+ it {should_not have_applied_value}
12
+ its(:field_name) {should eql "ContentType_sfacet"}
13
+ it {should have_limiting_value}
14
+ its(:remove_command) {should eql "removeFacetField(ContentType_sfacet)"}
15
+
16
+ describe "Summon::FacetCount" do
17
+ subject {@facet.counts.first}
18
+ it {should be_further_limiting}
19
+ it {should be_negated}
20
+ its(:value) {should eql "Book"}
21
+ its(:count) {should eql 799602}
22
+ its(:apply_command) {should eql "addFacetValueFilter(ContentType_sfacet,Book,false)"}
23
+ its(:remove_command) {should eql "eatMyShorts()"}
24
+ its(:apply_negated_command) {should eql "addFacetValueFilter(ContentType_sfacet,Book,true)"}
25
+ it {should be_applied}
14
26
  end
15
-
27
+
16
28
  it "should now how to escape values" do
17
29
  service = mock(:service)
18
-
30
+
19
31
  count = Summon::FacetCount.new(service, :value => "the quick, brown, fox")
20
32
  count.value.should == "the quick, brown, fox"
21
33
  count.escaped_value.should == 'the quick\, brown\, fox'
22
-
23
- Summon::FacetCount.new(service, :value => ': everything (else) and $1 or {is} it\ ').escaped_value.should ==
34
+
35
+ Summon::FacetCount.new(service, :value => ': everything (else) and $1 or {is} it\ ').escaped_value.should ==
24
36
  '\: everything \(else\) and \$1 or \{is\} it\\ '
25
37
  end
26
-
38
+
27
39
  EXAMPLE_FACET_JSON = <<-JSON
28
40
  {
29
41
  "pageSize": 10,
@@ -39,13 +51,13 @@ describe Summon::Facet do
39
51
  "counts": [
40
52
  {
41
53
  "isFurtherLimiting": true,
42
- "isNegated": false,
54
+ "isNegated": true,
43
55
  "value": "Book",
44
56
  "count": 799602,
45
57
  "applyCommand": "addFacetValueFilter(ContentType_sfacet,Book,false)",
46
58
  "removeCommand": "eatMyShorts()",
47
59
  "applyNegatedCommand": "addFacetValueFilter(ContentType_sfacet,Book,true)",
48
- "isApplied": false
60
+ "isApplied": true
49
61
  },
50
62
  {
51
63
  "isFurtherLimiting": true,
@@ -70,51 +82,5 @@ describe Summon::Facet do
70
82
  ]
71
83
  }
72
84
  JSON
73
-
74
- EXPECTED_FACET_YAML = <<-YAML
75
- --- !ruby/object:Summon::Facet
76
- combine_mode: or
77
- counts:
78
- - !ruby/object:Summon::FacetCount
79
- applied: false
80
- apply_command: addFacetValueFilter(ContentType_sfacet,Book,false)
81
- apply_negated_command: addFacetValueFilter(ContentType_sfacet,Book,true)
82
- count: 799602
83
- further_limiting: true
84
- negated: false
85
- remove_command: eatMyShorts()
86
- service:
87
- src:
88
- value: Book
89
- - !ruby/object:Summon::FacetCount
90
- applied: false
91
- apply_command: addFacetValueFilter(ContentType_sfacet,JournalArticle,false)
92
- apply_negated_command: addFacetValueFilter(ContentType_sfacet,JournalArticle,true)
93
- count: 49765
94
- further_limiting: true
95
- negated: false
96
- remove_command: eatMyShorts()
97
- service:
98
- src:
99
- value: JournalArticle
100
- - !ruby/object:Summon::FacetCount
101
- applied: false
102
- apply_command: addFacetValueFilter(ContentType_sfacet,Journal Article,false)
103
- apply_negated_command: addFacetValueFilter(ContentType_sfacet,Journal Article,true)
104
- count: 179002
105
- further_limiting: true
106
- negated: false
107
- remove_command: eatMyShorts()
108
- service:
109
- src:
110
- value: Journal Article
111
- display_name: ContentType
112
- field_name: ContentType_sfacet
113
- page_number: 1
114
- page_size: 10
115
- remove_command: removeFacetField(ContentType_sfacet)
116
- remove_value_filters_command: removeFacetValueFilters(ContentType)
117
- service:
118
- src:
119
- YAML
85
+
120
86
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: summon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 0
10
- version: 2.0.0
9
+ - 1
10
+ version: 2.0.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Charles Lowell
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-10-20 00:00:00 -05:00
19
+ date: 2011-11-06 01:00:00 -05:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency