primedia-endeca 0.9.15 → 0.9.16

Sign up to get free protection for your applications and to get access to all the features.
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