Sha256: 9887689267f8d058782336070783a40ad6832c8a153840a08e98920427c862eb

Contents?: true

Size: 1.82 KB

Versions: 12

Compression:

Stored size: 1.82 KB

Contents

# frozen_string_literal: true

require 'rails_helper'

describe DHS::Record do
  context 'creation failed' do
    let(:datastore) { 'http://depay.fi/v2' }

    before do
      DHC.config.placeholder(:datastore, datastore)
      class Record < DHS::Record
        endpoint '{+datastore}/{campaign_id}/feedbacks'
        endpoint '{+datastore}/feedbacks'
      end
    end

    let(:error_message) { 'ratings must be set when review or name or review_title is set | The property value is required; it cannot be null, empty, or blank.' }

    let(:creation_error) do
      {
        'status' => 400,
        'message' => error_message,
        'fields' => [
          {
            'name' => 'ratings',
            'details' => [{ 'code' => 'REQUIRED_PROPERTY_VALUE' }]
          }, {
            'name' => 'recommended',
            'details' => [{ 'code' => 'REQUIRED_PROPERTY_VALUE' }]
          }
        ]
      }
    end

    it 'provides errors when creation failed' do
      stub_request(:post, "#{datastore}/feedbacks")
        .to_return(status: 400, body: creation_error.to_json)
      record = Record.create(name: 'Steve')
      expect(record).to be_kind_of Record
      expect(record.errors).to be_present
      expect(record.name).to eq 'Steve'
      expect(record.errors.include?(:ratings)).to eq true
      expect(record.errors.include?(:recommended)).to eq true
      expect(record.errors[:ratings]).to eq ['REQUIRED_PROPERTY_VALUE']
      expect(record.errors.messages).to eq('ratings' => ['REQUIRED_PROPERTY_VALUE'], 'recommended' => ['REQUIRED_PROPERTY_VALUE'])
      expect(record.errors.message).to eq error_message
    end

    it 'doesnt fail when no fields are provided by the backend' do
      stub_request(:post, "#{datastore}/feedbacks")
        .to_return(status: 400, body: {}.to_json)
      Record.create(name: 'Steve')
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
dhs-1.6.0 spec/record/creation_failed_spec.rb
dhs-1.5.0 spec/record/creation_failed_spec.rb
dhs-1.4.2 spec/record/creation_failed_spec.rb
dhs-1.4.1 spec/record/creation_failed_spec.rb
dhs-1.4.0 spec/record/creation_failed_spec.rb
dhs-1.3.0 spec/record/creation_failed_spec.rb
dhs-1.2.0 spec/record/creation_failed_spec.rb
dhs-1.1.0 spec/record/creation_failed_spec.rb
dhs-1.0.3 spec/record/creation_failed_spec.rb
dhs-1.0.2 spec/record/creation_failed_spec.rb
dhs-1.0.1 spec/record/creation_failed_spec.rb
dhs-1.0.0 spec/record/creation_failed_spec.rb