require "spec_helper" module Hexx describe Coercible do # ========================================================================== # Prepare environment # ========================================================================== before { class TestModel; extend Coercible; end } before { module TestModule; end } before { class TestCoersion < Struct.new(:string); end } let(:test_model) { TestModel } let(:test_module) { TestModule } let(:test_coersion) { TestCoersion } after { Hexx.send :remove_const, :TestCoersion } 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_coersion } subject { test_model.new } it "coerces an attribute with given type" do subject.name = "some name" expect(subject.name).to be_kind_of test_coersion end end end end