Sha256: 510848fa6e6d8b432964225f3dfdb700f23dda2e33ed3ea93b23e9d5aad4654d

Contents?: true

Size: 1.93 KB

Versions: 12

Compression:

Stored size: 1.93 KB

Contents

require "spec_helper"

describe BazaModels::Model::HasManyRelations do
  include DatabaseHelper

  let(:organization) { Organization.new }
  let(:user) { User.new(email: "test@example.com", organization: organization) }
  let(:role_user) { Role.new(user: user, role: "user") }
  let(:role_admin) { Role.new(user: user, role: "administrator") }

  context "destroy" do
    before do
      user.save!
    end

    it "destroyes through has_many" do
      role_user.save!
      user.destroy!
      expect { user.reload }.to raise_error(BazaModels::Errors::RecordNotFound)
      expect { role_user.reload }.to raise_error(BazaModels::Errors::RecordNotFound)
    end

    it "restricts through has_many" do
      role_admin.save!
      expect { user.destroy! }.to raise_error(BazaModels::Errors::InvalidRecord)
    end
  end

  context "relationships" do
    before do
      user.save!
      role_user.save!
      role_admin.save!
    end

    describe "#has_many" do
      it "returns whole collections without arguments" do
        expect(user.roles.to_a).to eq [role_user, role_admin]
      end

      it "supports class_name and proc-arguments" do
        expect(user.admin_roles.to_a).to eq [role_admin]
        expect(user.admin_roles.to_sql).to eq "SELECT `roles`.* FROM `roles` WHERE `roles`.`user_id` = #{user.id} AND `roles`.`role` = 'administrator'"
      end
    end
  end

  context "#<<" do
    it "adds models to persisted parent" do
      organization.save!
      organization.users << User.create!(email: "test@example.com")

      expect(organization.users.count).to eq 1
      expect(organization.users.first.email).to eq "test@example.com"
    end

    it "adds models to new parent" do
      organization.users << User.new(email: "test1@example.com")
      organization.users << User.new(email: "test2@example.com")

      expect(organization.users.count).to eq 2

      organization.save!

      expect(organization.users.count).to eq 2
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
baza_models-0.0.13 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.12 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.11 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.10 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.9 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.8 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.7 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.6 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.5 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.4 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.3 spec/baza_models/model/has_many_relations_spec.rb
baza_models-0.0.2 spec/baza_models/model/has_many_relations_spec.rb