active_interaction 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3b1db83e71226e6160a36354484c59cd312fcdc2
4
- data.tar.gz: 13ab7a0625523b7cc531197d697a03ee5c52b14e
3
+ metadata.gz: 1127329ea0197658f720d8fe6c1ae7d993f5f9dc
4
+ data.tar.gz: 4b58e248170a453276474a749b109782e12501c8
5
5
  SHA512:
6
- metadata.gz: d7daa784b53f26ae7fd99ee906874e551c98dfb1db49cf0a248fd7aca7878f44adaa070a1014862d9c1f1038504912581069e887a0167ae4c2ac61b552991a12
7
- data.tar.gz: 367a7f33d4386b31020fa29a204219a89231c2dc1b0670cb91b06b5eb00394529121cb181734b9b478a6c19b55d55f007acc51952c184518a22f870b969c0f4e
6
+ metadata.gz: b461f9b41d8dd0447c34b9c724b249ad62c29d4fe34c98f1a2e6965f99db9828a68b501d78b459d8dd1e24ccbf5ee03d3678d57b0a1182e7fdc0db3683f40bcb
7
+ data.tar.gz: 745be14ea173b524346a1e38f9f89631b0e828db3c47ea3e543b4864c4df8929ea7fd2fb5cb5a44cc829d1bf1c4b0339b43faa657b65443a3ae5b954cc6e0b50
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # [Master][]
2
2
 
3
+ # [0.10.1][] (2013-12-20)
4
+
5
+ - Fix bug that prevented parsing strings as times when ActiveSupport was
6
+ available.
7
+
3
8
  # [0.10.0][] (2013-12-19)
4
9
 
5
10
  - Support casting "true" and "false" as booleans.
@@ -97,10 +102,11 @@
97
102
 
98
103
  - Initial release.
99
104
 
100
- [master]: https://github.com/orgsync/active_interaction/compare/v0.10.0...master
101
- [0.10.0]: https://github.com/orgsync/active_interaction/compare/v0.9.1...0.10.0
102
- [0.9.1]: https://github.com/orgsync/active_interaction/compare/v0.9.0...0.9.1
103
- [0.9.0]: https://github.com/orgsync/active_interaction/compare/v0.9.0...0.9.0
105
+ [master]: https://github.com/orgsync/active_interaction/compare/v0.10.1...master
106
+ [0.10.1]: https://github.com/orgsync/active_interaction/compare/v0.10.0...v0.10.1
107
+ [0.10.0]: https://github.com/orgsync/active_interaction/compare/v0.9.1...v0.10.0
108
+ [0.9.1]: https://github.com/orgsync/active_interaction/compare/v0.9.0...v0.9.1
109
+ [0.9.0]: https://github.com/orgsync/active_interaction/compare/v0.8.0...v0.9.0
104
110
  [0.8.0]: https://github.com/orgsync/active_interaction/compare/v0.7.0...v0.8.0
105
111
  [0.7.0]: https://github.com/orgsync/active_interaction/compare/v0.6.1...v0.7.0
106
112
  [0.6.1]: https://github.com/orgsync/active_interaction/compare/v0.6.0...v0.6.1
data/README.md CHANGED
@@ -25,7 +25,7 @@ This project uses [semantic versioning][].
25
25
  Add it to your Gemfile:
26
26
 
27
27
  ```ruby
28
- gem 'active_interaction', '~> 0.10.0'
28
+ gem 'active_interaction', '~> 0.10.1'
29
29
  ```
30
30
 
31
31
  And then execute:
@@ -5,7 +5,7 @@ module ActiveInteraction
5
5
  class AbstractDateTimeFilter < Filter
6
6
  def cast(value)
7
7
  case value
8
- when klass
8
+ when value_class
9
9
  value
10
10
  when String
11
11
  begin
@@ -35,5 +35,9 @@ module ActiveInteraction
35
35
  def klass
36
36
  fail NotImplementedError
37
37
  end
38
+
39
+ def value_class
40
+ klass
41
+ end
38
42
  end
39
43
  end
@@ -27,7 +27,7 @@ module ActiveInteraction
27
27
  def cast(value)
28
28
  case value
29
29
  when Numeric
30
- time.at(value)
30
+ klass.at(value)
31
31
  else
32
32
  super
33
33
  end
@@ -36,15 +36,15 @@ module ActiveInteraction
36
36
  private
37
37
 
38
38
  def klass
39
- time.at(0).class
40
- end
41
-
42
- def time
43
39
  if Time.respond_to?(:zone) && !Time.zone.nil?
44
40
  Time.zone
45
41
  else
46
42
  Time
47
43
  end
48
44
  end
45
+
46
+ def value_class
47
+ klass.at(0).class
48
+ end
49
49
  end
50
50
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # rubocop:disable Documentation
4
4
  module ActiveInteraction
5
- VERSION = Gem::Version.new('0.10.0')
5
+ VERSION = Gem::Version.new('0.10.1')
6
6
  end
@@ -4,13 +4,9 @@ require 'spec_helper'
4
4
 
5
5
  InteractionWithFilter = Class.new(TestInteraction) do
6
6
  float :thing
7
-
8
- def execute
9
- thing
10
- end
11
7
  end
12
8
 
13
- AddInteraction = Class.new(ActiveInteraction::Base) do
9
+ AddInteraction = Class.new(TestInteraction) do
14
10
  float :x, :y
15
11
 
16
12
  def execute
@@ -18,7 +14,7 @@ AddInteraction = Class.new(ActiveInteraction::Base) do
18
14
  end
19
15
  end
20
16
 
21
- InterruptInteraction = Class.new(ActiveInteraction::Base) do
17
+ InterruptInteraction = Class.new(TestInteraction) do
22
18
  model :x, :y,
23
19
  class: Object,
24
20
  default: nil
@@ -64,10 +60,6 @@ describe ActiveInteraction::Base do
64
60
  attr_reader :thing
65
61
 
66
62
  validates :thing, presence: true
67
-
68
- def execute
69
- thing
70
- end
71
63
  end
72
64
  end
73
65
  let(:thing) { SecureRandom.hex }
@@ -129,7 +121,7 @@ describe ActiveInteraction::Base do
129
121
  describe '.method_missing(filter_type, *args, &block)' do
130
122
  it 'raises an error for an invalid filter type' do
131
123
  expect do
132
- Class.new(described_class) do
124
+ Class.new(TestInteraction) do
133
125
  not_a_valid_filter_type :thing
134
126
  end
135
127
  end.to raise_error NoMethodError
@@ -137,7 +129,7 @@ describe ActiveInteraction::Base do
137
129
 
138
130
  it do
139
131
  expect do
140
- Class.new(described_class) do
132
+ Class.new(TestInteraction) do
141
133
  float :_interaction_thing
142
134
  end
143
135
  end.to raise_error ActiveInteraction::InvalidFilterError
@@ -157,10 +149,8 @@ describe ActiveInteraction::Base do
157
149
 
158
150
  context 'with multiple filters' do
159
151
  let(:described_class) do
160
- Class.new(ActiveInteraction::Base) do
152
+ Class.new(TestInteraction) do
161
153
  float :thing1, :thing2
162
-
163
- def execute; end
164
154
  end
165
155
  end
166
156
 
@@ -253,7 +243,7 @@ describe ActiveInteraction::Base do
253
243
  end
254
244
 
255
245
  it 'sets the result' do
256
- expect(result).to eq thing
246
+ expect(result[:thing]).to eq thing
257
247
  end
258
248
 
259
249
  it 'calls transaction' do
@@ -280,7 +270,7 @@ describe ActiveInteraction::Base do
280
270
  before { inputs.merge!(thing: thing) }
281
271
 
282
272
  it 'returns the result' do
283
- expect(result).to eq thing
273
+ expect(result[:thing]).to eq thing
284
274
  end
285
275
  end
286
276
  end
@@ -9,10 +9,6 @@ ArrayInteraction = Class.new(TestInteraction) do
9
9
  array :b, default: [[]] do
10
10
  array
11
11
  end
12
-
13
- def execute
14
- inputs
15
- end
16
12
  end
17
13
 
18
14
  describe ArrayInteraction do
@@ -9,10 +9,6 @@ HashInteraction = Class.new(TestInteraction) do
9
9
  hash :b, default: {} do
10
10
  hash :x, default: {}
11
11
  end
12
-
13
- def execute
14
- inputs
15
- end
16
12
  end
17
13
 
18
14
  describe HashInteraction do
@@ -4,30 +4,28 @@ require 'spec_helper'
4
4
 
5
5
  TimeZone = Class.new do
6
6
  def self.at(*args)
7
- TimeWithZone.at(*args)
7
+ TimeWithZone.new(Time.at(*args))
8
+ end
9
+
10
+ def self.parse(*args)
11
+ TimeWithZone.new(Time.parse(*args))
8
12
  end
9
13
  end
10
14
 
11
15
  TimeWithZone = Class.new do
12
- def self.at(*args)
13
- new(Time.at(*args))
14
- end
16
+ attr_reader :time
15
17
 
16
18
  def initialize(time)
17
19
  @time = time
18
20
  end
19
21
 
20
22
  def ==(other)
21
- @time == other
23
+ time == other.time
22
24
  end
23
25
  end
24
26
 
25
27
  TimeInteraction = Class.new(TestInteraction) do
26
28
  time :a
27
-
28
- def execute
29
- a
30
- end
31
29
  end
32
30
 
33
31
  describe TimeInteraction do
@@ -35,15 +33,28 @@ describe TimeInteraction do
35
33
  it_behaves_like 'an interaction', :time, -> { Time.now }
36
34
 
37
35
  context 'with a time zone' do
38
- let(:a) { rand(1 << 16) }
36
+ let(:a) { nil }
39
37
 
40
38
  before do
41
- allow(Time).to receive(:zone).and_return(TimeZone)
42
39
  inputs.merge!(a: a)
40
+
41
+ allow(Time).to receive(:zone).and_return(TimeZone)
42
+ end
43
+
44
+ context 'with an integer' do
45
+ let(:a) { rand(1 << 16) }
46
+
47
+ it 'returns the correct value' do
48
+ expect(result[:a]).to eq TimeZone.at(a)
49
+ end
43
50
  end
44
51
 
45
- it 'returns the correct value' do
46
- expect(result).to eq Time.at(a)
52
+ context 'with a string' do
53
+ let(:a) { '2011-12-13T14:15:16Z' }
54
+
55
+ it 'returns the correct value' do
56
+ expect(result[:a]).to eq TimeZone.parse(a)
57
+ end
47
58
  end
48
59
  end
49
60
  end
@@ -6,6 +6,7 @@ TestInteraction = Class.new(ActiveInteraction::Base) do
6
6
  end
7
7
 
8
8
  def execute
9
+ inputs
9
10
  end
10
11
  end
11
12
 
@@ -25,16 +26,6 @@ shared_examples_for 'an interaction' do |type, generator, filter_options = {}|
25
26
  send(type, :default, filter_options.merge(default: generator.call))
26
27
  send(type, :defaults_1, :defaults_2,
27
28
  filter_options.merge(default: generator.call))
28
-
29
- def execute
30
- {
31
- required: required,
32
- optional: optional,
33
- default: default,
34
- defaults_1: defaults_1,
35
- defaults_2: defaults_2
36
- }
37
- end
38
29
  end
39
30
  end
40
31
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_interaction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Lasseigne
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-19 00:00:00.000000000 Z
12
+ date: 2013-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel