faceted 0.1.4 → 0.2.0

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/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile CHANGED
@@ -1,13 +1,15 @@
1
1
  source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
- # gem "activesupport", ">= 2.3.5"
4
+ gem "activesupport", ">= 2.3.5"
5
+ gem "activemodel"
5
6
 
6
7
  # Add dependencies to develop your gem here.
7
8
  # Include everything needed to run rake, tests, features, etc.
8
9
  group :development do
9
10
  gem "shoulda", ">= 0"
10
11
  gem "rdoc", "~> 3.12"
12
+ gem "rspec"
11
13
  gem "bundler"
12
14
  gem "jeweler", "~> 1.8.4"
13
15
  gem "simplecov"
data/Gemfile.lock CHANGED
@@ -1,9 +1,14 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ activemodel (3.2.8)
5
+ activesupport (= 3.2.8)
6
+ builder (~> 3.0.0)
4
7
  activesupport (3.2.8)
5
8
  i18n (~> 0.6)
6
9
  multi_json (~> 1.0)
10
+ builder (3.0.3)
11
+ diff-lcs (1.1.3)
7
12
  git (1.2.5)
8
13
  i18n (0.6.1)
9
14
  jeweler (1.8.4)
@@ -16,6 +21,14 @@ GEM
16
21
  rake (0.9.2.2)
17
22
  rdoc (3.12)
18
23
  json (~> 1.4)
24
+ rspec (2.11.0)
25
+ rspec-core (~> 2.11.0)
26
+ rspec-expectations (~> 2.11.0)
27
+ rspec-mocks (~> 2.11.0)
28
+ rspec-core (2.11.1)
29
+ rspec-expectations (2.11.2)
30
+ diff-lcs (~> 1.1.3)
31
+ rspec-mocks (2.11.2)
19
32
  shoulda (3.1.1)
20
33
  shoulda-context (~> 1.0)
21
34
  shoulda-matchers (~> 1.2)
@@ -31,8 +44,11 @@ PLATFORMS
31
44
  ruby
32
45
 
33
46
  DEPENDENCIES
47
+ activemodel
48
+ activesupport (>= 2.3.5)
34
49
  bundler
35
50
  jeweler (~> 1.8.4)
36
51
  rdoc (~> 3.12)
52
+ rspec
37
53
  shoulda
38
54
  simplecov
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.2.0
data/faceted.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "faceted"
8
- s.version = "0.1.4"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Corey Ehmke", "Max Thom Stahl"]
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  "README.rdoc"
19
19
  ]
20
20
  s.files = [
21
+ ".rspec",
21
22
  "Gemfile",
22
23
  "Gemfile.lock",
23
24
  "LICENSE.txt",
@@ -27,7 +28,9 @@ Gem::Specification.new do |s|
27
28
  "VERSION",
28
29
  "faceted.gemspec",
29
30
  "lib/faceted.rb",
30
- "lib/faceted/presenter.rb"
31
+ "lib/faceted/presenter.rb",
32
+ "spec/presenter_spec.rb",
33
+ "spec/spec_helper.rb"
31
34
  ]
32
35
  s.homepage = "http://github.com/trunkclub/faceted"
33
36
  s.licenses = ["MIT"]
@@ -39,21 +42,30 @@ Gem::Specification.new do |s|
39
42
  s.specification_version = 3
40
43
 
41
44
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
46
+ s.add_runtime_dependency(%q<activemodel>, [">= 0"])
42
47
  s.add_development_dependency(%q<shoulda>, [">= 0"])
43
48
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
49
+ s.add_development_dependency(%q<rspec>, [">= 0"])
44
50
  s.add_development_dependency(%q<bundler>, [">= 0"])
45
51
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
46
52
  s.add_development_dependency(%q<simplecov>, [">= 0"])
47
53
  else
54
+ s.add_dependency(%q<activesupport>, [">= 2.3.5"])
55
+ s.add_dependency(%q<activemodel>, [">= 0"])
48
56
  s.add_dependency(%q<shoulda>, [">= 0"])
49
57
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
58
+ s.add_dependency(%q<rspec>, [">= 0"])
50
59
  s.add_dependency(%q<bundler>, [">= 0"])
51
60
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
52
61
  s.add_dependency(%q<simplecov>, [">= 0"])
53
62
  end
54
63
  else
64
+ s.add_dependency(%q<activesupport>, [">= 2.3.5"])
65
+ s.add_dependency(%q<activemodel>, [">= 0"])
55
66
  s.add_dependency(%q<shoulda>, [">= 0"])
56
67
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
68
+ s.add_dependency(%q<rspec>, [">= 0"])
57
69
  s.add_dependency(%q<bundler>, [">= 0"])
58
70
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
59
71
  s.add_dependency(%q<simplecov>, [">= 0"])
@@ -3,6 +3,7 @@ module Faceted
3
3
  module Presenter
4
4
 
5
5
  require 'json'
6
+ require 'active_support/core_ext/hash'
6
7
 
7
8
  # Class methods ==========================================================
8
9
 
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ class Musician # pretend that this is an AR model
4
+ attr_accessor :id, :name, :rating, :errors
5
+ def initialize(params={}); params.each{|k,v| self.send("#{k}=",v) if self.respond_to?(k)}; end
6
+ def attributes; {:id => self.id, :name => self.name, :rating => self.rating}; end
7
+ end
8
+
9
+ class Birthplace # another make-believe AR model
10
+ attr_accessor :id, :city, :state
11
+ def initialize(params={}); params.each{|k,v| self.send("#{k}=",v) if self.respond_to?(k)}; end
12
+ def attributes; {:id => self.id, :city => self.city, :state => self.state}; end
13
+ end
14
+
15
+ module MyApi
16
+
17
+ class Birthplace
18
+ include Faceted::Presenter
19
+ presents :birthplace
20
+ field :city
21
+ field :state
22
+ end
23
+
24
+ class Musician
25
+ include Faceted::Presenter
26
+ presents :musician
27
+ field :name
28
+ field :rating
29
+ field :birthplace_id
30
+ end
31
+
32
+ describe Musician do
33
+
34
+ before do
35
+
36
+ @ar_musician = ::Musician.new(:id => 1, :name => 'Johnny Cash', :rating => 'Good')
37
+ ::Musician.stub(:find) { @ar_musician }
38
+
39
+ @ar_birthplace = ::Birthplace.new(:id => 1, :city => 'Kingsland', :state => 'Arkansas')
40
+ ::Birthplace.stub(:find) { @ar_birthplace }
41
+
42
+ end
43
+
44
+ describe 'initialized with a presented object' do
45
+
46
+ it 'inherits values from its AR counterpart' do
47
+ musician = MyApi::Musician.new(:id => 1)
48
+ musician.name.should == 'Johnny Cash'
49
+ end
50
+
51
+ it 'overwrites values from its AR counterpart' do
52
+ musician = MyApi::Musician.new(:id => 1, :rating => 'Great')
53
+ musician.rating.should == 'Great'
54
+ end
55
+
56
+ describe 'saves its counterpart' do
57
+
58
+ it 'successfully' do
59
+ musician = MyApi::Musician.new(:id => 1)
60
+ @ar_musician.should_receive(:save!) { true }
61
+ musician.save.should be_true
62
+ end
63
+
64
+ it 'handling failure' do
65
+ musician = MyApi::Musician.new(:id => 1)
66
+ @ar_musician.should_receive(:save!) { false }
67
+ musician.save.should be_false
68
+ end
69
+
70
+ it 'failing and populating its errors'
71
+
72
+ end
73
+
74
+ end
75
+
76
+ describe 'with an associated object' do
77
+
78
+ it 'initializes the associated object in the correct namespace' do
79
+ musician = MyApi::Musician.new(:id => 1, :birthplace_id => 1)
80
+ musician.birthplace.city.should == 'Kingsland'
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+
87
+ end
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'active_model'
3
+ require 'active_support'
4
+ require 'bundler/setup'
5
+ require 'faceted'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faceted
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,6 +12,38 @@ bindir: bin
12
12
  cert_chain: []
13
13
  date: 2012-09-12 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.5
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: 2.3.5
31
+ - !ruby/object:Gem::Dependency
32
+ name: activemodel
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
15
47
  - !ruby/object:Gem::Dependency
16
48
  name: shoulda
17
49
  requirement: !ruby/object:Gem::Requirement
@@ -44,6 +76,22 @@ dependencies:
44
76
  - - ~>
45
77
  - !ruby/object:Gem::Version
46
78
  version: '3.12'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
47
95
  - !ruby/object:Gem::Dependency
48
96
  name: bundler
49
97
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +149,7 @@ extra_rdoc_files:
101
149
  - README.md
102
150
  - README.rdoc
103
151
  files:
152
+ - .rspec
104
153
  - Gemfile
105
154
  - Gemfile.lock
106
155
  - LICENSE.txt
@@ -111,6 +160,8 @@ files:
111
160
  - faceted.gemspec
112
161
  - lib/faceted.rb
113
162
  - lib/faceted/presenter.rb
163
+ - spec/presenter_spec.rb
164
+ - spec/spec_helper.rb
114
165
  homepage: http://github.com/trunkclub/faceted
115
166
  licenses:
116
167
  - MIT
@@ -126,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
177
  version: '0'
127
178
  segments:
128
179
  - 0
129
- hash: -1782133771554588802
180
+ hash: -4017658740521948424
130
181
  required_rubygems_version: !ruby/object:Gem::Requirement
131
182
  none: false
132
183
  requirements: