require "spec_helper" module Hexx describe Coercible do # ========================================================================== # Prepare environment # ========================================================================== before { class TestModel; extend Coercible; end } before { module TestModule; end } before { class TestCoercion < Struct.new(:string); end } let(:test_model) { TestModel } let(:test_module) { TestModule } let(:test_coercion) { TestCoercion } after { Hexx.send :remove_const, :TestCoercion } after { Hexx.send :remove_const, :TestModule } after { Hexx.send :remove_const, :TestModel } # ========================================================================== # Run tests # ========================================================================== describe ".attr_coerced" do before { test_model.send :attr_coerced, :name, type: test_coercion } subject { test_model.new } it "coerces an attribute with given type" do subject.name = "some name" expect(subject.name).to be_kind_of test_coercion end end end end