accodeing/fortnox-api

View on GitHub
spec/fortnox/api/repositories/order_spec.rb

Summary

Maintainability
A
30 mins
Test Coverage
A
100%
# frozen_string_literal: true

require 'spec_helper'
require 'fortnox/api'
require 'fortnox/api/mappers'
require 'fortnox/api/repositories/order'
require 'fortnox/api/repositories/examples/all'
require 'fortnox/api/repositories/examples/find'
require 'fortnox/api/repositories/examples/only'
require 'fortnox/api/repositories/examples/save'
require 'fortnox/api/repositories/examples/save_with_nested_model'
require 'fortnox/api/repositories/examples/search'

describe Fortnox::API::Repository::Order, integration: true, order: :defined do
  include Helpers::Configuration
  include Helpers::Repositories

  subject(:repository) { described_class.new }

  before { set_api_test_configuration }

  required_hash = { customer_number: '1' }

  include_examples '.save', :comments, additional_attrs: required_hash

  nested_model_hash = { price: -9_999_999_999, article_number: '101', ordered_quantity: 1 }
  include_examples '.save with nested model',
                   required_hash,
                   :order_rows,
                   nested_model_hash,
                   [Fortnox::API::Types::OrderRow.new(nested_model_hash)]

  # VCR: Update expected result
  include_examples '.all', 7

  # VCR: Searched Orders needs to be created manually in Fortnox
  include_examples '.find', 1 do
    let(:find_by_hash_failure) { { ourreference: 'Not found' } }

    let(:single_param_find_by_hash) do
      { find_hash: { ourreference: 'Belladonna Took' }, matches: 2 }
    end
    let(:multi_param_find_by_hash) do
      { find_hash: { ourreference: 'Belladonna Took', yourreference: 'Bodo Proudfoot' },
        matches: 1 }
    end
  end

  # VCR: Searched Order needs to be created manually
  include_examples '.search', :customername, 'A customer', 1

  include_examples '.only', :cancelled, 2
end