primedia-endeca 0.9.7 → 0.9.8

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.
data/endeca.gemspec CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{endeca}
5
- s.version = "0.9.7"
5
+ s.version = "0.9.8"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Rein Henrichs", "Andy Stone"]
9
- s.date = %q{2009-01-30}
9
+ s.date = %q{2009-02-02}
10
10
  s.description = %q{An Endeca client library for Ruby.}
11
11
  s.email = %q{}
12
12
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc"]
13
- s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "endeca.gemspec", "example/benchmark.rb", "example/listing.rb", "lib/class_to_proc.rb", "lib/core_ext.rb", "lib/endeca.rb", "lib/endeca/dimension.rb", "lib/endeca/document.rb", "lib/endeca/document_collection.rb", "lib/endeca/map.rb", "lib/endeca/readers.rb", "lib/endeca/refinement.rb", "lib/endeca/request.rb", "lib/endeca/transformer.rb", "spec/core_ext_spec.rb", "spec/endeca/dimension_spec.rb", "spec/endeca/document_collection_spec.rb", "spec/endeca/document_spec.rb", "spec/endeca/map_spec.rb", "spec/endeca/readers_spec.rb", "spec/endeca/refinement_spec.rb", "spec/endeca/request_spec.rb", "spec/endeca/transformer_spec.rb", "spec/endeca_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb"]
13
+ s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "endeca.gemspec", "example/benchmark.rb", "example/listing.rb", "lib/class_to_proc.rb", "lib/core_ext.rb", "lib/endeca.rb", "lib/endeca/breadcrumb.rb", "lib/endeca/dimension.rb", "lib/endeca/document.rb", "lib/endeca/document_collection.rb", "lib/endeca/map.rb", "lib/endeca/readers.rb", "lib/endeca/refinement.rb", "lib/endeca/request.rb", "lib/endeca/transformer.rb", "spec/core_ext_spec.rb", "spec/endeca/breadcrumb_spec.rb", "spec/endeca/dimension_spec.rb", "spec/endeca/document_collection_spec.rb", "spec/endeca/document_spec.rb", "spec/endeca/map_spec.rb", "spec/endeca/readers_spec.rb", "spec/endeca/refinement_spec.rb", "spec/endeca/request_spec.rb", "spec/endeca/transformer_spec.rb", "spec/endeca_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://github.com/primedia/endeca-ruby}
16
16
  s.rdoc_options = ["--main", "README.rdoc"]
@@ -0,0 +1,33 @@
1
+ module Endeca
2
+ class Breadcrumb
3
+ extend ClassToProc
4
+ extend Readers
5
+
6
+ reader \
7
+ 'DimensionName' => :name,
8
+ 'Type' => :type,
9
+ 'DimensionRemovalLink' => :to_params
10
+
11
+ reader('DimensionValues' => :dimension_values) do |values|
12
+ values.map(&Dimension) if values
13
+ end
14
+
15
+ attr_reader :raw
16
+ def initialize(raw={})
17
+ @raw = raw
18
+ end
19
+
20
+ def ==(other)
21
+ name == other.name
22
+ end
23
+
24
+ def inspect
25
+ "#<#{self.class}=0x#{self.object_id.to_s(16)} name=#{name.inspect}>"
26
+ end
27
+
28
+ def attributes
29
+ (@raw['Dimensions'] || []).first || {}
30
+ end
31
+
32
+ end
33
+ end
@@ -67,6 +67,11 @@ module Endeca
67
67
  @refinements ||= (@raw['Refinements'] || []).map(&Refinement)
68
68
  end
69
69
 
70
+ # The collection of Breadcrumb objects for the collection.
71
+ def breadcrumbs
72
+ @breadcrumbs ||= (@raw['Breadcrumbs'] || []).map(&Breadcrumb)
73
+ end
74
+
70
75
  # Return the refinement by name
71
76
  def refinement_by_name(name)
72
77
  refinements.find{|ref| ref.name.downcase == name.downcase}
data/lib/endeca.rb CHANGED
@@ -11,6 +11,7 @@ require 'endeca/map'
11
11
  require 'endeca/transformer'
12
12
  require 'endeca/dimension'
13
13
  require 'endeca/refinement'
14
+ require 'endeca/breadcrumb'
14
15
  require 'endeca/request'
15
16
  require 'endeca/document_collection'
16
17
  require 'endeca/document'
@@ -18,7 +19,7 @@ require 'endeca/document'
18
19
  module Endeca
19
20
 
20
21
  # :stopdoc:
21
- VERSION = '0.9.7'
22
+ VERSION = '0.9.8'
22
23
  # :startdoc:
23
24
 
24
25
  # Returns the version string for the library.
@@ -0,0 +1,58 @@
1
+ require File.join(File.dirname(__FILE__), %w[.. spec_helper])
2
+
3
+ describe Endeca::Breadcrumb do
4
+ before do
5
+ @dimension_value = {
6
+ "DimValueID" => "4343565665",
7
+ "RemovalLink" => "N=",
8
+ "DimValueName" => "Apartment"
9
+ }
10
+
11
+ dimensions = { "Dimensions" => [
12
+ {
13
+ "Type" => "Navigation",
14
+ "DimensionName" => "property type",
15
+ "DimensionRemovalLink" => "N=",
16
+ "DimensionValues" => [@dimension_value]
17
+ }
18
+ ]
19
+ }
20
+ @Breadcrumb = Endeca::Breadcrumb.new( dimensions )
21
+ end
22
+
23
+ describe '#==' do
24
+ it "should compare Breadcrumbs by name" do
25
+ doc_1, doc_2 = Endeca::Breadcrumb.new, Endeca::Breadcrumb.new
26
+ doc_1.stub!(:name).and_return('property type')
27
+ doc_2.stub!(:name).and_return('property type')
28
+ (doc_1 == doc_2).should be_true
29
+
30
+ doc_2.stub!(:name).and_return('something else')
31
+ (doc_1 == doc_2).should be_false
32
+ end
33
+ end
34
+
35
+ describe '#inspect' do
36
+ it "includes the class name" do
37
+ @Breadcrumb.inspect.should include(Endeca::Breadcrumb.name)
38
+ end
39
+
40
+ it "includes the hex string of the object id" do
41
+ @Breadcrumb.inspect.should include("0x#{@Breadcrumb.object_id.to_s(16)}")
42
+ end
43
+
44
+ it "includes the inspected name" do
45
+ @Breadcrumb.stub!(:name).and_return('A Name')
46
+ @Breadcrumb.inspect.should include('name="A Name"')
47
+ end
48
+ end
49
+
50
+ it "should return to_params on the dimension removal link " do
51
+ @Breadcrumb.to_params.should == "N="
52
+ end
53
+
54
+ it "should return an array of dimensions for dimension_values" do
55
+ my_dimension = Endeca::Dimension.new(@dimension_value)
56
+ @Breadcrumb.dimension_values.should == [my_dimension]
57
+ end
58
+ end
@@ -8,11 +8,16 @@ describe Endeca::DocumentCollection do
8
8
  "ExpansionLink" => "N=&Ne=7",
9
9
  "DimensionName" => "city",
10
10
  "DimensionID" => "7" } ] }
11
+ @breadcrumb = { "Dimensions" => [ {
12
+ "DimensionName" => "property type",
13
+ "DimensionRemovalLink" => "N=",
14
+ "Type" => "Navigation" } ] }
11
15
 
12
16
  @raw = {
13
17
  'Records' => [@document],
14
18
  'MetaInfo' => @metainfo,
15
- 'Refinements' => [@refinement]
19
+ 'Refinements' => [@refinement],
20
+ 'Breadcrumbs' => [@breadcrumb]
16
21
  }
17
22
  @document_collection = Endeca::DocumentCollection.new(@raw)
18
23
  end
@@ -101,6 +106,12 @@ describe Endeca::DocumentCollection do
101
106
  end
102
107
  end
103
108
 
109
+ describe '#breadcrumbs' do
110
+ it 'should return a collection of Breadcrumb objects' do
111
+ @document_collection.breadcrumbs.should == [Endeca::Breadcrumb.new(@breadcrumb)]
112
+ end
113
+ end
114
+
104
115
  describe "#each" do
105
116
  it "should yield to the documents" do
106
117
  block = lambda{1}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: primedia-endeca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rein Henrichs
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-01-30 00:00:00 -08:00
13
+ date: 2009-02-02 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -43,6 +43,7 @@ files:
43
43
  - lib/class_to_proc.rb
44
44
  - lib/core_ext.rb
45
45
  - lib/endeca.rb
46
+ - lib/endeca/breadcrumb.rb
46
47
  - lib/endeca/dimension.rb
47
48
  - lib/endeca/document.rb
48
49
  - lib/endeca/document_collection.rb
@@ -52,6 +53,7 @@ files:
52
53
  - lib/endeca/request.rb
53
54
  - lib/endeca/transformer.rb
54
55
  - spec/core_ext_spec.rb
56
+ - spec/endeca/breadcrumb_spec.rb
55
57
  - spec/endeca/dimension_spec.rb
56
58
  - spec/endeca/document_collection_spec.rb
57
59
  - spec/endeca/document_spec.rb