From be8223164a986317ca6bec56f51ebba9089f1ea4 Mon Sep 17 00:00:00 2001 From: Kirill Leonov Date: Fri, 2 Aug 2024 20:56:22 +0300 Subject: [PATCH] done mvp --- Gemfile.lock | 2 +- lib/simple_monads/failure_object.rb | 1 + lib/simple_monads/success_object.rb | 1 + lib/simple_monads/version.rb | 2 +- test/lib/simple_monads_test.rb | 39 +++++++++++++++++++++++++++++ test/test_helper.rb | 1 + 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 test/lib/simple_monads_test.rb diff --git a/Gemfile.lock b/Gemfile.lock index 7d5e0c5..a674fa5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - simple_monads (0.1.2) + simple_monads (0.1.3) GEM remote: https://rubygems.org/ diff --git a/lib/simple_monads/failure_object.rb b/lib/simple_monads/failure_object.rb index 5fdd4a1..ef44bf4 100644 --- a/lib/simple_monads/failure_object.rb +++ b/lib/simple_monads/failure_object.rb @@ -4,6 +4,7 @@ module SimpleMonads # failure object class FailureObject attr_reader :object + alias failure object def initialize(object) @object = object diff --git a/lib/simple_monads/success_object.rb b/lib/simple_monads/success_object.rb index 9baa4ad..88a0014 100644 --- a/lib/simple_monads/success_object.rb +++ b/lib/simple_monads/success_object.rb @@ -4,6 +4,7 @@ module SimpleMonads # success object class SuccessObject attr_reader :object + alias success object def initialize(object) @object = object diff --git a/lib/simple_monads/version.rb b/lib/simple_monads/version.rb index a83ff1d..ff4aa12 100644 --- a/lib/simple_monads/version.rb +++ b/lib/simple_monads/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module SimpleMonads - VERSION = '0.1.2' + VERSION = '0.1.3' end diff --git a/test/lib/simple_monads_test.rb b/test/lib/simple_monads_test.rb new file mode 100644 index 0000000..31f1150 --- /dev/null +++ b/test/lib/simple_monads_test.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require_relative '../test_helper' + +class SomeClass + include SimpleMonads + + def return_failure + Failure({ error: 'text' }) + end + + def return_success + Success(5) + end +end + +class SimpleMonadsTest < Minitest::Test + def setup + @object = SomeClass.new + end + + def test_failure + result = @object.return_failure + + assert_predicate result, :failure? + refute_predicate result, :success? + + assert_equal({ error: 'text' }, result.failure) + end + + def test_success + result = @object.return_success + + assert_predicate result, :success? + refute_predicate result, :failure? + + assert_equal(5, result.success) + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index f157424..8b40b3c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -3,5 +3,6 @@ require 'minitest/autorun' require 'byebug' require 'minitest/reporters' +require_relative '../lib/simple_monads' Minitest::Reporters.use!