active_interaction 0.10.0 → 0.10.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.
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