Sha256: 160ba67f2f0d6343ac1d3f71c4c19fd32ac92150bf70933d5b006de31c7c06ab

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

require 'spec_helper'

class Employee
  include ActiveModel::Validations

  attr_accessor :company, :individual

  validates :company, person: :company, allow_blank: true
  validates :individual, person: :individual, allow_blank: true
end

describe PersonValidator do
  subject do
    Employee.new
  end

  let :individual do
    double(personable: Individual.new(cpf: '003.218.345-34'))
  end

  let :company do
    double(personable: Company.new(cnpj: '00.000.000/9999-62'))
  end

  context 'validates company' do
    it 'should be valid with company as a person' do
      allow(subject).to receive(:company).and_return(company)

      expect(subject).to be_valid
    end

    it 'should not accept individual as a person' do
      allow(subject).to receive(:company).and_return(individual)

      subject.valid?

      expect(subject.errors[:company]).to eq ['must be a company']
    end
  end

  context 'validates individual' do
    it 'should be valid with individual as a person' do
      allow(subject).to receive(:individual).and_return(individual)

      expect(subject).to be_valid
    end

    it 'should not accept company as a individual' do
      allow(subject).to receive(:individual).and_return(company)

      subject.valid?

      expect(subject.errors[:individual]).to eq ['must be an individual']
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
unico-training-7.8.0 spec/validators/person_validator_spec.rb