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 +1 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +16 -0
- data/VERSION +1 -1
- data/faceted.gemspec +14 -2
- data/lib/faceted/presenter.rb +1 -0
- data/spec/presenter_spec.rb +87 -0
- data/spec/spec_helper.rb +5 -0
- metadata +53 -2
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
|
-
|
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
|
+
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.
|
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"])
|
data/lib/faceted/presenter.rb
CHANGED
@@ -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
|
data/spec/spec_helper.rb
ADDED
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.
|
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: -
|
180
|
+
hash: -4017658740521948424
|
130
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
182
|
none: false
|
132
183
|
requirements:
|