primedia-endeca 0.9.15 → 0.9.16

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/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.swp
2
+ .swn
3
+ .swp
4
+ .DS_Store
5
+ coverage/
6
+ pkg/
7
+ doc/
data/endeca.gemspec CHANGED
@@ -1,34 +1,32 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
1
  Gem::Specification.new do |s|
4
2
  s.name = %q{endeca}
5
- s.version = "0.9.15"
3
+ s.version = "0.9.16"
6
4
 
7
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
6
  s.authors = ["Rein Henrichs", "Andy Stone"]
9
- s.date = %q{2009-02-04}
7
+ s.date = %q{2009-02-05}
10
8
  s.description = %q{An Endeca client library for Ruby.}
11
9
  s.email = %q{}
12
10
  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/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"]
11
+ s.files = [".gitignore", "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/breadcrumbs.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
12
  s.has_rdoc = true
15
13
  s.homepage = %q{http://github.com/primedia/endeca-ruby}
16
14
  s.rdoc_options = ["--main", "README.rdoc"]
17
15
  s.require_paths = ["lib"]
18
16
  s.rubyforge_project = %q{endeca-ruby}
19
- s.rubygems_version = %q{1.3.1}
17
+ s.rubygems_version = %q{1.2.0}
20
18
  s.summary = %q{An Endeca client library for Ruby}
21
19
 
22
20
  if s.respond_to? :specification_version then
23
21
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
22
  s.specification_version = 2
25
23
 
26
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
- s.add_development_dependency(%q<bones>, [">= 2.4.0"])
24
+ if current_version >= 3 then
25
+ s.add_development_dependency(%q<bones>, [">= 2.3.1"])
28
26
  else
29
- s.add_dependency(%q<bones>, [">= 2.4.0"])
27
+ s.add_dependency(%q<bones>, [">= 2.3.1"])
30
28
  end
31
29
  else
32
- s.add_dependency(%q<bones>, [">= 2.4.0"])
30
+ s.add_dependency(%q<bones>, [">= 2.3.1"])
33
31
  end
34
32
  end
@@ -1,21 +1,34 @@
1
1
  module Endeca
2
+
2
3
  class Breadcrumb
3
- extend ClassToProc
4
4
  extend Readers
5
5
 
6
- reader \
7
- 'DimensionName' => :name,
8
- 'Type' => :type,
9
- 'DimensionRemovalLink' => :to_params
6
+ def self.create(raw)
7
+ name = raw['Type']
8
+ breadcrumb_class = self
10
9
 
11
- reader('DimensionValues' => :dimension_values) do |values|
12
- values.map(&Dimension) if values
10
+ if name
11
+ unless Breadcrumbs.include?(name)
12
+ raise Breadcrumbs::TypeError, "Unknown breadcrumb type: #{name.inspect}"
13
+ end
14
+ breadcrumb_class = Breadcrumbs[name]
15
+ end
16
+
17
+ breadcrumb_class.new(raw)
18
+ end
19
+
20
+ def self.to_proc
21
+ proc(&method(:create))
13
22
  end
14
23
 
15
24
  attr_reader :raw
16
25
  def initialize(raw={})
17
26
  @raw = raw
18
27
  end
28
+ alias_method :attributes, :raw
29
+
30
+ reader 'Type' => :type
31
+ def name; '' end
19
32
 
20
33
  def ==(other)
21
34
  name == other.name
@@ -25,9 +38,5 @@ module Endeca
25
38
  "#<#{self.class}=0x#{self.object_id.to_s(16)} name=#{name.inspect}>"
26
39
  end
27
40
 
28
- def attributes
29
- (@raw['Dimensions'] || []).first || {}
30
- end
31
-
32
41
  end
33
42
  end
@@ -0,0 +1,13 @@
1
+ module Endeca
2
+ module Breadcrumbs
3
+ class TypeError < StandardError; end
4
+
5
+ def self.include?(klass)
6
+ self.const_defined?(klass)
7
+ end
8
+
9
+ def self.[](klass)
10
+ self.const_get(klass)
11
+ end
12
+ end
13
+ end
@@ -6,7 +6,8 @@ module Endeca
6
6
 
7
7
  reader \
8
8
  "DimValueName" => :name,
9
- "SelectionLink" => :to_params
9
+ "SelectionLink" => :selection_link,
10
+ "RemovalLink" => :removal_link
10
11
 
11
12
  integer_reader \
12
13
  "DimValueID" => :id,
@@ -17,6 +18,10 @@ module Endeca
17
18
  @raw=raw
18
19
  end
19
20
  alias_method :attributes, :raw
21
+
22
+ def to_params
23
+ selection_link || removal_link
24
+ end
20
25
 
21
26
  def inspect
22
27
  "#<#{self.class}=0x#{self.object_id.to_s(16)} id=#{id} name=#{name.inspect}>"
data/lib/endeca.rb CHANGED
@@ -12,6 +12,7 @@ require 'endeca/map'
12
12
  require 'endeca/transformer'
13
13
  require 'endeca/dimension'
14
14
  require 'endeca/refinement'
15
+ require 'endeca/breadcrumbs'
15
16
  require 'endeca/breadcrumb'
16
17
  require 'endeca/request'
17
18
  require 'endeca/document_collection'
@@ -20,7 +21,7 @@ require 'endeca/document'
20
21
  module Endeca
21
22
 
22
23
  # :stopdoc:
23
- VERSION = '0.9.15'
24
+ VERSION = '0.9.16'
24
25
  # :startdoc:
25
26
 
26
27
  # Returns the version string for the library.
@@ -1,23 +1,54 @@
1
1
  require File.join(File.dirname(__FILE__), %w[.. spec_helper])
2
2
 
3
+ module Endeca
4
+ module Breadcrumbs
5
+ class Navigation < Endeca::Breadcrumb
6
+ end
7
+ end
8
+ end
9
+
3
10
  describe Endeca::Breadcrumb do
4
11
  before do
5
12
  @dimension_value = {
6
- "DimValueID" => "4343565665",
7
- "RemovalLink" => "N=",
13
+ "DimValueID" => "4343565665",
14
+ "RemovalLink" => "N=",
8
15
  "DimValueName" => "Apartment"
9
16
  }
10
-
11
- dimensions = { "Dimensions" => [
12
- {
13
- "Type" => "Navigation",
14
- "DimensionName" => "property type",
15
- "DimensionRemovalLink" => "N=",
16
- "DimensionValues" => [@dimension_value]
17
- }
18
- ]
17
+
18
+ @navigation_hash = {
19
+ "Type" => "Navigation",
20
+ "DimensionName" => "property type",
21
+ "DimensionRemovalLink" => "N=",
22
+ "DimensionValues" => [@dimension_value]
19
23
  }
20
- @Breadcrumb = Endeca::Breadcrumb.new( dimensions )
24
+
25
+ @dimensions = { "Dimensions" => [@navigation_hash] }
26
+ @breadcrumb = Endeca::Breadcrumb.new( @dimensions )
27
+ end
28
+
29
+ describe ".create" do
30
+ before do
31
+ @navigation = Endeca::Breadcrumb.create(@navigation_hash)
32
+ end
33
+
34
+ it "should create a breadcrumb of the appropriate type" do
35
+ Endeca::Breadcrumb.create(@navigation_hash).
36
+ should be_a_kind_of(Endeca::Breadcrumbs::Navigation)
37
+ end
38
+
39
+ describe "with an invalid type" do
40
+ it do
41
+ creating_invalid_breadcrumb = lambda{Endeca::Breadcrumb.create({'Type' => 'Invalid'})}
42
+ creating_invalid_breadcrumb.should raise_error(Endeca::Breadcrumbs::TypeError)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe ".to_proc" do
48
+ it "should call create" do
49
+ Endeca::Breadcrumb.should_receive(:create).with(:obj)
50
+ [:obj].map(&Endeca::Breadcrumb)
51
+ end
21
52
  end
22
53
 
23
54
  describe '#==' do
@@ -34,25 +65,26 @@ describe Endeca::Breadcrumb do
34
65
 
35
66
  describe '#inspect' do
36
67
  it "includes the class name" do
37
- @Breadcrumb.inspect.should include(Endeca::Breadcrumb.name)
68
+ @breadcrumb.inspect.should include(Endeca::Breadcrumb.name)
38
69
  end
39
70
 
40
71
  it "includes the hex string of the object id" do
41
- @Breadcrumb.inspect.should include("0x#{@Breadcrumb.object_id.to_s(16)}")
72
+ @breadcrumb.inspect.should include("0x#{@breadcrumb.object_id.to_s(16)}")
42
73
  end
43
74
 
44
75
  it "includes the inspected name" do
45
- @Breadcrumb.stub!(:name).and_return('A Name')
46
- @Breadcrumb.inspect.should include('name="A Name"')
76
+ @breadcrumb.stub!(:name).and_return('A Name')
77
+ @breadcrumb.inspect.should include('name="A Name"')
47
78
  end
48
79
  end
49
-
50
- it "should return to_params on the dimension removal link " do
51
- @Breadcrumb.to_params.should == "N="
80
+
81
+ describe "#type" do
82
+ it "returns the Type value" do
83
+ Endeca::Breadcrumb.new('Type' => 'AType').type.should == 'AType'
84
+ end
52
85
  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]
86
+
87
+ describe "#name" do
88
+ it {Endeca::Breadcrumb.new.name.should == ''}
57
89
  end
58
90
  end
@@ -8,6 +8,32 @@ describe Endeca::Dimension do
8
8
  dimension.raw.should == :raw
9
9
  end
10
10
  end
11
+
12
+ describe "#to_params" do
13
+ before do
14
+ @dimension = Endeca::Dimension.new
15
+ @selection = mock('selection link')
16
+ @removal = mock('removal link')
17
+ end
18
+
19
+ describe "with a selection link" do
20
+ it "should return the selection link" do
21
+ @dimension.stub!(:selection_link => @selection_link)
22
+ @dimension.stub!(:removal_link => nil)
23
+
24
+ @dimension.to_params.should == @selection_link
25
+ end
26
+ end
27
+
28
+ describe "with a removal link" do
29
+ it "should return the selection link" do
30
+ @dimension.stub!(:selection_link => nil)
31
+ @dimension.stub!(:removal_link => @removal_link)
32
+
33
+ @dimension.to_params.should == @removal_link
34
+ end
35
+ end
36
+ end
11
37
 
12
38
  describe "#inspect" do
13
39
  before do
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.15
4
+ version: 0.9.16
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-02-04 00:00:00 -08:00
13
+ date: 2009-02-05 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 2.4.0
23
+ version: 2.3.1
24
24
  version:
25
25
  description: An Endeca client library for Ruby.
26
26
  email: ""
@@ -33,6 +33,7 @@ extra_rdoc_files:
33
33
  - Manifest.txt
34
34
  - README.rdoc
35
35
  files:
36
+ - .gitignore
36
37
  - History.txt
37
38
  - Manifest.txt
38
39
  - README.rdoc
@@ -44,6 +45,7 @@ files:
44
45
  - lib/core_ext.rb
45
46
  - lib/endeca.rb
46
47
  - lib/endeca/breadcrumb.rb
48
+ - lib/endeca/breadcrumbs.rb
47
49
  - lib/endeca/dimension.rb
48
50
  - lib/endeca/document.rb
49
51
  - lib/endeca/document_collection.rb