faceted 0.1.4 → 0.2.0

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