failure 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/failure.gemspec +1 -1
- data/lib/either/active_model_helpers.rb +13 -0
- data/lib/failure.rb +1 -0
- data/spec/either/active_model_helpers_spec.rb +51 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dd5213fc559418bd6979a773ff8db47e61554d1d
|
4
|
+
data.tar.gz: b27b4b594b7effe50ac5347194881b994e4c39f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea805d8ae81851b661f691a6c2975806d3f6ceda6796a9bec377c5878579972a3f61406a9e362582ae86680f55d895026c1c23af02652c67d810126ff9ce2739
|
7
|
+
data.tar.gz: 999a28f7ca64476f19298d99db270889a5d24e6078c8c7549cb27c416ca880f70ecc420b7e7790d9ee448391777dd07533a73d9a79038a9ef108006b5cf9b3d7
|
data/failure.gemspec
CHANGED
data/lib/failure.rb
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Either::ActiveModelHelpers do
|
4
|
+
class MockActiveModelErrors
|
5
|
+
def to_h
|
6
|
+
{}
|
7
|
+
end
|
8
|
+
|
9
|
+
def present?
|
10
|
+
!to_h.empty?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class MockActiveModelObject < OpenStruct
|
15
|
+
include Either::ActiveModelHelpers
|
16
|
+
|
17
|
+
def self.create(options)
|
18
|
+
new(options)
|
19
|
+
end
|
20
|
+
|
21
|
+
def errors
|
22
|
+
MockActiveModelErrors.new
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#to_either" do
|
27
|
+
it "wraps an object with no errors in Either::Right" do
|
28
|
+
object = MockActiveModelObject.create(a: :allosaurus, b: :brachiosaurus)
|
29
|
+
either = object.to_either
|
30
|
+
|
31
|
+
expect(either).to be_right
|
32
|
+
expect(either.send(:val)).to eq(object)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "converts an object with errors into an errors object wrapped in Either::Left" do
|
36
|
+
object = MockActiveModelObject.create(c: :chrysanthemum, d: :dolomite_lime)
|
37
|
+
|
38
|
+
mock_errors = MockActiveModelErrors.new
|
39
|
+
allow(MockActiveModelErrors).to receive(:new).and_return(mock_errors)
|
40
|
+
allow(mock_errors).to receive(:to_h).and_return({ base: ["only accepts dinosaurs"] })
|
41
|
+
|
42
|
+
either = object.to_either
|
43
|
+
|
44
|
+
expect(either).to be_left
|
45
|
+
expect(either.send(:val)).to eq mock_errors
|
46
|
+
expect(either.send(:val).to_h).to eq(
|
47
|
+
{ base: ["only accepts dinosaurs"] }
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: failure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Terrett
|
@@ -78,9 +78,11 @@ files:
|
|
78
78
|
- Rakefile
|
79
79
|
- failure.gemspec
|
80
80
|
- lib/either.rb
|
81
|
+
- lib/either/active_model_helpers.rb
|
81
82
|
- lib/failure.rb
|
82
83
|
- lib/maybe.rb
|
83
84
|
- lib/shared.rb
|
85
|
+
- spec/either/active_model_helpers_spec.rb
|
84
86
|
- spec/either_spec.rb
|
85
87
|
- spec/maybe_spec.rb
|
86
88
|
- spec/spec_helper.rb
|
@@ -104,11 +106,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
106
|
version: '0'
|
105
107
|
requirements: []
|
106
108
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.
|
109
|
+
rubygems_version: 2.6.14
|
108
110
|
signing_key:
|
109
111
|
specification_version: 4
|
110
112
|
summary: Either and Option functor/applicative/monad
|
111
113
|
test_files:
|
114
|
+
- spec/either/active_model_helpers_spec.rb
|
112
115
|
- spec/either_spec.rb
|
113
116
|
- spec/maybe_spec.rb
|
114
117
|
- spec/spec_helper.rb
|