# frozen_string_literal: true require 'spec_helpers/client' require 'rest/api_request' RSpec.describe FinApps::REST::VerixRecords do include SpecHelpers::Client # noinspection RubyBlockToMethodReference let(:api_client) { client } describe '#create' do subject(:create) do FinApps::REST::VerixRecords.new(api_client).create( code: 'authcode', download: [ 'form_1040' ] ) end it_behaves_like 'an API request' it_behaves_like 'a successful request' it('returns an id') { expect(create[RESULTS]).to have_key(:_id) } it('returns a consumer id') { expect(create[RESULTS]).to have_key(:consumer_id) } it('returns a status') { expect(create[RESULTS]).to have_key(:status) } it('returns an error node') { expect(create[RESULTS]).to have_key(:error) } it('returns a list of documents') { expect(create[RESULTS]).to have_key(:documents) } it('returns a document count') { expect(create[RESULTS][:documents].first).to have_key(:count) } it('returns a document date sycned node') { expect(create[RESULTS][:documents].first).to have_key(:date_synced) } it('returns a document id') { expect(create[RESULTS][:documents].first).to have_key(:document_id) } it('returns a document downloaded bool') { expect(create[RESULTS][:documents].first).to have_key(:downloaded) } it('returns a document type') { expect(create[RESULTS][:documents].first).to have_key(:type) } end describe '#list' do subject(:list) { FinApps::REST::VerixRecords.new(api_client).list } it_behaves_like 'an API request' it_behaves_like 'a successful request' it('returns an array') { expect(list[RESULTS]).to be_an_instance_of(Array) } it('returns an id') { expect(list[RESULTS].first).to have_key(:_id) } it('returns a status') { expect(list[RESULTS].first).to have_key(:status) } it('returns a consumer id') { expect(list[RESULTS].first).to have_key(:consumer_id) } it('returns an error node') { expect(list[RESULTS].first).to have_key(:error) } it('returns a list of documents') { expect(list[RESULTS].first).to have_key(:documents) } it('returns a document type') { expect(list[RESULTS].first[:documents].first).to have_key(:type) } it('returns a document id') { expect(list[RESULTS].first[:documents].first).to have_key(:document_id) } it('returns a document count') { expect(list[RESULTS].first[:documents].first).to have_key(:count) } it('returns a document downloaded bool') { expect(list[RESULTS].first[:documents].first).to have_key(:downloaded) } it('returns a document date_synced') { expect(list[RESULTS].first[:documents].first).to have_key(:date_synced) } end end