Sha256: c9e6e900e20a0c89e55802831f86821dc67be714fb34671c1b67f2a5ac133319

Contents?: true

Size: 1.84 KB

Versions: 5

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

module LargeTextField
  class NamedTextValueTest < ActiveSupport::TestCase
    should belong_to(:owner)

    should "use large_text_fields as the table name" do
      assert_equal "large_text_fields", LargeTextField::NamedTextValue.table_name
    end

    should "have field name and value attributes" do
      library = Library.create!(name: "Smithsonian")
      ntv = LargeTextField::NamedTextValue.new(field_name: "puppy", value: "Millie", owner: library)
      assert_equal "puppy", ntv.field_name
      assert_equal "Millie", ntv.value
      assert_equal "Smithsonian", ntv.owner.name
      ntv.save!

      # Attributes survive persistance
      ntv = LargeTextField::NamedTextValue.find(ntv.id)
      assert_equal "puppy", ntv.field_name
      assert_equal "Millie", ntv.value
      assert_equal "Smithsonian", ntv.owner.name
    end

    context "unique index" do
      should "raise a unique constraint failure on the same owner, and field name" do
        library = Library.create!(name: "Smithsonian")
        LargeTextField::NamedTextValue.create!(field_name: "puppy", value: "Millie", owner: library)

        assert_raise(ActiveRecord::RecordNotUnique) do
          LargeTextField::NamedTextValue.create!(field_name: "puppy", value: "Wiki", owner: library)
        end
      end

      should "allow different owners and field names" do
        library = Library.create!(name: "Smithsonian")
        library2 = Library.create!(name: "Alexandria")
        LargeTextField::NamedTextValue.create!(field_name: "puppy", value: "Millie", owner: library)

        # Different field name
        LargeTextField::NamedTextValue.create!(field_name: "dog", value: "Wiki", owner: library)

        # Different owner instance
        LargeTextField::NamedTextValue.create!(field_name: "puppy", value: "Millie", owner: library2)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
large_text_field-1.0.2 test/unit/large_text_field/name_text_value_test.rb
large_text_field-1.0.2.pre.1 test/unit/large_text_field/name_text_value_test.rb
large_text_field-1.0.1 test/unit/large_text_field/name_text_value_test.rb
large_text_field-1.0.0 test/unit/large_text_field/name_text_value_test.rb
large_text_field-0.3.2 test/unit/large_text_field/name_text_value_test.rb