mediator 0.3.0 → 0.3.1

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 CHANGED
@@ -16,3 +16,4 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  .idea
19
+ *.sw*
@@ -20,11 +20,11 @@ class Mediator
20
20
  (options && options.has_key?(:value)) || mediator.subject_has?(selector)
21
21
  end
22
22
 
23
- def id name, options = {}
24
- key name, options.merge(from: "#{name}_id")
23
+ def id name, options = {}, &block
24
+ key name, options.merge(from: "#{name}_id"), &block
25
25
  end
26
26
 
27
- def ids name, options = {}
27
+ def ids name, options = {}, &block
28
28
  unless options[:from]
29
29
  if name[-1] == "s"
30
30
  options = options.merge(from: "#{name[0..-2]}_ids")
@@ -33,7 +33,7 @@ class Mediator
33
33
  end
34
34
  end
35
35
 
36
- key name, options
36
+ key name, options, &block
37
37
  end
38
38
 
39
39
  def key name, options = nil, &block
data/mediator.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
9
9
  gem.test_files = `git ls-files -- test/*`.split "\n"
10
10
  gem.name = "mediator"
11
11
  gem.require_paths = ["lib"]
12
- gem.version = "0.3.0"
12
+ gem.version = "0.3.1"
13
13
 
14
14
  gem.required_ruby_version = ">= 1.9.2"
15
15
  end
@@ -27,6 +27,21 @@ describe Mediator::Parser do
27
27
  p.id :foo
28
28
  assert_equal 42, @subject.foo_id
29
29
  end
30
+
31
+ it "Does nothing with empty values by default" do
32
+ p = Mediator::Parser.new @mediator, foo: ""
33
+ @subject.foo_id = 42
34
+
35
+ p.id :foo
36
+ assert_equal 42, @subject.foo_id
37
+ end
38
+
39
+ it "Accept empty values if told to" do
40
+ p = Mediator::Parser.new @mediator, foo: ""
41
+
42
+ p.id :foo, empty: true
43
+ assert_equal "", @subject.foo_id
44
+ end
30
45
  end
31
46
 
32
47
  describe "ids" do
@@ -26,6 +26,20 @@ describe Mediator::Renderer do
26
26
 
27
27
  assert_equal r, m.render
28
28
  end
29
+
30
+ it "apply a block to id value, if given" do
31
+ c = Class.new Mediator do
32
+ def render! r
33
+ r.id(:foo) { |v| 27 }
34
+ end
35
+ end
36
+
37
+ x = OpenStruct.new foo_id: 5
38
+ m = c.new x
39
+ r = { foo: 27 }
40
+
41
+ assert_equal r, m.render
42
+ end
29
43
  end
30
44
 
31
45
  describe "ids" do
@@ -207,6 +221,21 @@ describe Mediator::Renderer do
207
221
  assert_equal Hash.new, d
208
222
  end
209
223
 
224
+ it "accepts custom blocks for ids" do
225
+ c = Class.new Mediator do
226
+ def render! r
227
+ r.ids(:foos) { |p| [12,34,45] }
228
+ end
229
+ end
230
+
231
+ s = OpenStruct.new foo_ids: [56,78,90]
232
+ m = c.new s
233
+ d = m.render
234
+ e = {foos: [12,34,45]}
235
+
236
+ assert_equal e, d
237
+ end
238
+
210
239
  it "ignores nil or empty values returned by blocks" do
211
240
  c = Class.new Mediator do
212
241
  def render! r
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-05 00:00:00.000000000Z
12
+ date: 2013-01-23 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A go-between for models.
15
15
  email:
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  version: '0'
54
54
  requirements: []
55
55
  rubyforge_project:
56
- rubygems_version: 1.8.10
56
+ rubygems_version: 1.8.24
57
57
  signing_key:
58
58
  specification_version: 3
59
59
  summary: Translates models to and from primitive representations.