active_interaction 5.1.0 → 5.5.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -0
  3. data/README.md +11 -12
  4. data/lib/active_interaction/base.rb +2 -0
  5. data/lib/active_interaction/errors.rb +16 -16
  6. data/lib/active_interaction/filter.rb +9 -12
  7. data/lib/active_interaction/filters/array_filter.rb +1 -1
  8. data/lib/active_interaction/filters/hash_filter.rb +5 -1
  9. data/lib/active_interaction/grouped_input.rb +23 -3
  10. data/lib/active_interaction/locale/es.yml +23 -0
  11. data/lib/active_interaction/version.rb +1 -1
  12. metadata +13 -115
  13. data/spec/active_interaction/array_input_spec.rb +0 -166
  14. data/spec/active_interaction/base_spec.rb +0 -537
  15. data/spec/active_interaction/concerns/active_modelable_spec.rb +0 -45
  16. data/spec/active_interaction/concerns/active_recordable_spec.rb +0 -49
  17. data/spec/active_interaction/concerns/hashable_spec.rb +0 -46
  18. data/spec/active_interaction/concerns/missable_spec.rb +0 -99
  19. data/spec/active_interaction/concerns/runnable_spec.rb +0 -397
  20. data/spec/active_interaction/errors_spec.rb +0 -196
  21. data/spec/active_interaction/filter/column_spec.rb +0 -87
  22. data/spec/active_interaction/filter_spec.rb +0 -39
  23. data/spec/active_interaction/filters/abstract_date_time_filter_spec.rb +0 -13
  24. data/spec/active_interaction/filters/abstract_numeric_filter_spec.rb +0 -13
  25. data/spec/active_interaction/filters/array_filter_spec.rb +0 -245
  26. data/spec/active_interaction/filters/boolean_filter_spec.rb +0 -87
  27. data/spec/active_interaction/filters/date_filter_spec.rb +0 -178
  28. data/spec/active_interaction/filters/date_time_filter_spec.rb +0 -189
  29. data/spec/active_interaction/filters/decimal_filter_spec.rb +0 -126
  30. data/spec/active_interaction/filters/file_filter_spec.rb +0 -40
  31. data/spec/active_interaction/filters/float_filter_spec.rb +0 -110
  32. data/spec/active_interaction/filters/hash_filter_spec.rb +0 -129
  33. data/spec/active_interaction/filters/integer_filter_spec.rb +0 -104
  34. data/spec/active_interaction/filters/interface_filter_spec.rb +0 -461
  35. data/spec/active_interaction/filters/object_filter_spec.rb +0 -237
  36. data/spec/active_interaction/filters/record_filter_spec.rb +0 -206
  37. data/spec/active_interaction/filters/string_filter_spec.rb +0 -60
  38. data/spec/active_interaction/filters/symbol_filter_spec.rb +0 -46
  39. data/spec/active_interaction/filters/time_filter_spec.rb +0 -251
  40. data/spec/active_interaction/grouped_input_spec.rb +0 -17
  41. data/spec/active_interaction/hash_input_spec.rb +0 -58
  42. data/spec/active_interaction/i18n_spec.rb +0 -113
  43. data/spec/active_interaction/inputs_spec.rb +0 -266
  44. data/spec/active_interaction/integration/array_interaction_spec.rb +0 -88
  45. data/spec/active_interaction/integration/boolean_interaction_spec.rb +0 -5
  46. data/spec/active_interaction/integration/date_interaction_spec.rb +0 -5
  47. data/spec/active_interaction/integration/date_time_interaction_spec.rb +0 -5
  48. data/spec/active_interaction/integration/file_interaction_spec.rb +0 -18
  49. data/spec/active_interaction/integration/float_interaction_spec.rb +0 -5
  50. data/spec/active_interaction/integration/hash_interaction_spec.rb +0 -76
  51. data/spec/active_interaction/integration/integer_interaction_spec.rb +0 -5
  52. data/spec/active_interaction/integration/interface_interaction_spec.rb +0 -19
  53. data/spec/active_interaction/integration/object_interaction_spec.rb +0 -14
  54. data/spec/active_interaction/integration/record_integration_spec.rb +0 -5
  55. data/spec/active_interaction/integration/string_interaction_spec.rb +0 -5
  56. data/spec/active_interaction/integration/symbol_interaction_spec.rb +0 -5
  57. data/spec/active_interaction/integration/time_interaction_spec.rb +0 -88
  58. data/spec/active_interaction/modules/validation_spec.rb +0 -57
  59. data/spec/spec_helper.rb +0 -20
  60. data/spec/support/concerns.rb +0 -13
  61. data/spec/support/filters.rb +0 -227
  62. data/spec/support/interactions.rb +0 -124
@@ -1,124 +0,0 @@
1
- TestInteraction = Class.new(ActiveInteraction::Base) do
2
- def self.name
3
- SecureRandom.hex
4
- end
5
-
6
- def execute
7
- inputs
8
- end
9
- end
10
-
11
- shared_context 'interactions' do
12
- let(:inputs) { {} }
13
- let(:outcome) { described_class.run(inputs) }
14
- let(:result) { outcome.result }
15
- end
16
-
17
- shared_examples_for 'an interaction' do |type, generator, adjust_output = nil, **filter_options|
18
- include_context 'interactions'
19
-
20
- let(:described_class) do
21
- Class.new(TestInteraction) do
22
- public_send(type, :required, filter_options)
23
- public_send(type, :optional,
24
- filter_options.merge(
25
- default: nil
26
- )
27
- )
28
- public_send(type, :default,
29
- filter_options.merge(
30
- default: generator.call
31
- )
32
- )
33
- public_send(type, :defaults1, :defaults2,
34
- filter_options.merge(
35
- default: generator.call
36
- )
37
- )
38
- public_send(type, :defaults3,
39
- filter_options.merge(
40
- default: -> { required }
41
- )
42
- )
43
- end
44
- end
45
-
46
- context 'with an invalid lazy default' do
47
- let(:described_class) do
48
- Class.new(TestInteraction) do
49
- public_send(type, :default,
50
- filter_options.merge(default: -> { Object.new })
51
- )
52
- end
53
- end
54
-
55
- it 'raises an error' do
56
- expect { outcome }.to raise_error ActiveInteraction::InvalidDefaultError
57
- end
58
- end
59
-
60
- context 'without required inputs' do
61
- it 'is invalid' do
62
- expect(outcome).to be_invalid
63
- end
64
- end
65
-
66
- context 'with inputs[:required]' do
67
- let(:required) { generator.call }
68
-
69
- before { inputs[:required] = required }
70
-
71
- it 'is valid' do
72
- expect(outcome).to be_valid
73
- end
74
-
75
- it 'returns the correct value for :required' do
76
- expect(result[:required]).to eql(adjust_output ? adjust_output.call(required) : required)
77
- end
78
-
79
- it 'returns nil for :optional' do
80
- expect(result[:optional]).to be_nil
81
- end
82
-
83
- it 'does not return nil for :default' do
84
- expect(result[:default]).to_not be_nil
85
- end
86
-
87
- it 'does not return nil for :default when given nil' do
88
- inputs[:default] = nil
89
- expect(result[:default]).to_not be_nil
90
- end
91
-
92
- it 'does not return nil for :defaults1' do
93
- expect(result[:defaults1]).to_not be_nil
94
- end
95
-
96
- it 'does not return nil for :defaults2' do
97
- expect(result[:defaults2]).to_not be_nil
98
- end
99
-
100
- it 'evaluates :defaults3 in the interaction binding' do
101
- expect(result[:defaults3]).to eql result[:required]
102
- end
103
-
104
- context 'with inputs[:optional]' do
105
- let(:optional) { generator.call }
106
-
107
- before { inputs[:optional] = optional }
108
-
109
- it 'returns the correct value for :optional' do
110
- expect(result[:optional]).to eql(adjust_output ? adjust_output.call(optional) : optional)
111
- end
112
- end
113
-
114
- context 'with inputs[:default]' do
115
- let(:default) { generator.call }
116
-
117
- before { inputs[:default] = default }
118
-
119
- it 'returns the correct value for :default' do
120
- expect(result[:default]).to eql(adjust_output ? adjust_output.call(default) : default)
121
- end
122
- end
123
- end
124
- end