Sha256: d89ce7362de95b43a512e786deae71f9f94c981f60ee0145f7d2421de7a6fd67

Contents?: true

Size: 1.55 KB

Versions: 27

Compression:

Stored size: 1.55 KB

Contents

require 'spec_helper'

RSpec.describe Tessa::Model::Field do
  subject(:field) { described_class.new(attrs) }
  let(:attrs) { {} }

  describe "#initialize" do
    context "with all fields set" do
      let(:attrs) {
        {
          model: :model,
          name: "name",
          multiple: true,
          id_field: "my_field",
        }
      }

      it "sets :model to attribute" do
        expect(field.model).to eq(:model)
      end

      it "sets :name to attribute" do
        expect(field.name).to eq("name")
      end

      it "sets :multiple to attribute" do
        expect(field.multiple).to eq(true)
      end

      it "sets :id_field to attribute" do
        expect(field.id_field).to eq("my_field")
      end
    end

    context "with no fields set" do
      it "defaults model to nil" do
        expect(field.model).to be_nil
      end

      it "defaults name to nil" do
        expect(field.name).to be_nil
      end

      it "defaults multiple to false" do
        expect(field.multiple).to eq(false)
      end

      context "when multiple true" do
        before do
          attrs[:name] = "my_name"
          attrs[:multiple] = false
        end

        it "defaults id_field to name + '_id'" do
          expect(field.id_field).to eq("my_name_id")
        end
      end

      context "when multiple false" do
        before do
          attrs[:name] = "my_name"
          attrs[:multiple] = true
        end

        it "defaults id_field to name + '_ids'" do
          expect(field.id_field).to eq("my_name_ids")
        end
      end
    end
  end

end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
tessa-1.2.3 spec/tessa/model_field_spec.rb
tessa-1.2.2 spec/tessa/model_field_spec.rb
tessa-2.0 spec/tessa/model_field_spec.rb
tessa-1.2.1 spec/tessa/model_field_spec.rb
tessa-1.2.0 spec/tessa/model_field_spec.rb
tessa-1.1.1 spec/tessa/model_field_spec.rb
tessa-1.1.0 spec/tessa/model_field_spec.rb
tessa-1.0.2 spec/tessa/model_field_spec.rb
tessa-1.0.1 spec/tessa/model_field_spec.rb
tessa-1.0.0 spec/tessa/model_field_spec.rb
tessa-1.0.0.pre.rc3 spec/tessa/model_field_spec.rb
tessa-1.0.0.pre.rc2 spec/tessa/model_field_spec.rb
tessa-1.0.0.pre.rc1 spec/tessa/model_field_spec.rb
tessa-0.9.2 spec/tessa/model_field_spec.rb
tessa-0.9.1 spec/tessa/model_field_spec.rb
tessa-0.9.0 spec/tessa/model_field_spec.rb
tessa-0.8.0 spec/tessa/model_field_spec.rb
tessa-0.7.0 spec/tessa/model_field_spec.rb
tessa-0.6.3 spec/tessa/model_field_spec.rb
tessa-0.6.2 spec/tessa/model_field_spec.rb