require "spec_helper"

RSpec.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
