Sha256: 05e0b137d64a24a3dbf295f3cc98f34c1218ea6d247bf2968d3408d32c494c3f

Contents?: true

Size: 1.61 KB

Versions: 29

Compression:

Stored size: 1.61 KB

Contents

require 'test_helper'

class RailsOps::Operation::Model::CreateTest < ActiveSupport::TestCase
  include TestHelper

  BASIC_OP = Class.new(RailsOps::Operation::Model::Create) do
    model Group
  end

  ATTR_OP = Class.new(RailsOps::Operation::Model::Create) do
    model ::Group do
      attribute :long_group_name
    end
  end

  def test_attribute
    op = ATTR_OP.run!(group: { name: 'Test', color: 'red', long_group_name: 'Testgroup for extended testing' })

    assert_equal 'Test', op.model.name
    assert_equal 'red', op.model.color
    assert_equal 'Testgroup for extended testing', op.model.long_group_name
    assert op.model.persisted?
    refute op.model.changed?
  end

  def test_basic
    op = BASIC_OP.run!(group: { name: 'test', color: 'red' })

    assert_equal 'test', op.model.name
    assert_equal 'red', op.model.color
    assert op.model.persisted?
    refute op.model.changed?
  end

  def test_model_extension
    cls = Class.new(RailsOps::Operation::Model::Create) do
      model Group do
        validates :color, presence: true
      end
    end

    assert cls.new.model.class < Group

    assert_raises ActiveRecord::RecordInvalid do
      cls.run!(group: { name: 'test' })
    end
  end

  def test_parent_op
    op = BASIC_OP.new
    assert_equal op, op.model.parent_op
  end

  def test_always_extend_model_class
    assert RailsOps::Operation::Model::Create.always_extend_model_class?
  end

  def test_build
    op = BASIC_OP.new
    op.build_model

    assert op.instance_variable_get(:@model)

    assert_raises_with_message RuntimeError, 'Model can only be built once.' do
      op.build_model
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
rails_ops-1.6.0 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.6.0.rc1 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.6.0.rc0 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.5.8 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.5.7 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.5.6 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.5.5 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.5.4 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.5.0 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.8 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.7 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.6 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.5 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.4 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.3 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.2 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.1 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.4.0 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.3.0 test/unit/rails_ops/operation/model/create_test.rb
rails_ops-1.2.3 test/unit/rails_ops/operation/model/create_test.rb