require 'spec_helper'

describe ActiveRemote::Validations do
  let(:invalid_record) { ::Post.new }
  let(:valid_record) { ::Post.new(:name => 'test') }

  before { allow(valid_record).to receive(:create_or_update).and_return(true) }
  before { allow(invalid_record).to receive(:create_or_update).and_return(true) }

  describe 'save' do
    context 'valid record' do
      it 'returns true' do
        result = valid_record.save
        expect(result).to be true
      end
    end

    context 'invalid record' do
      it 'returns false' do
        result = invalid_record.save
        expect(result).to be false
      end
    end
  end

  describe 'save!' do
    context 'valid record' do
      it 'returns true' do
        result = valid_record.save!
        expect(result).to be true
      end
    end

    context 'invalid record' do
      it 'raises invalid record error' do
        expect { invalid_record.save! }.to raise_error(ActiveRemote::RemoteRecordInvalid)
      end
    end
  end

  describe 'valid?' do
    context 'valid record' do
      it 'returns true' do
        result = valid_record.valid?
        expect(result).to be true
      end
    end

    context 'invalid record' do
      it 'returns false' do
        result = invalid_record.valid?
        expect(result).to be false
      end
    end
  end
end
