Sha256: 2221419b9a450a8ff47dc3c4c4378bb21e8db916b70a6af48e237232078aa377

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

require "test_helper"

class ParseOptionTest < MiniTest::Spec
  Comment = Struct.new(:content, :user)
  User    = Struct.new(:name)

  class CommentForm < TestForm
    property :content
    property :user, parse: false
  end

  let(:current_user) { User.new("Peter") }
  let(:form) { CommentForm.new(Comment.new, user: current_user) }

  it do
    _(form.user).must_equal current_user

    lorem = "Lorem ipsum dolor sit amet..."
    form.validate("content" => lorem, "user" => "not the current user")

    _(form.content).must_equal lorem
    _(form.user).must_equal current_user
  end

  describe "using ':parse' option doesn't override other ':deserialize' options" do
    class ArticleCommentForm < TestForm
      property :content
      property :article, deserializer: {instance: "Instance"}
      property :user, parse: false, deserializer: {instance: "Instance"}
    end

    it do
      _(ArticleCommentForm.definitions.get(:user)[:deserializer][:writeable]).must_equal false
      _(ArticleCommentForm.definitions.get(:user)[:deserializer][:instance]).must_equal "Instance"

      _(ArticleCommentForm.definitions.get(:article)[:deserializer][:writeable]).must_equal true
      _(ArticleCommentForm.definitions.get(:article)[:deserializer][:instance]).must_equal "Instance"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reform-2.3.3 test/parse_option_test.rb