myfinance 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +23 -0
- data/.hound.yml +1063 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +94 -0
- data/LICENSE.txt +21 -0
- data/README.md +209 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/myfinance.rb +35 -0
- data/lib/myfinance/client.rb +31 -0
- data/lib/myfinance/configuration.rb +12 -0
- data/lib/myfinance/entities/base.rb +9 -0
- data/lib/myfinance/entities/collection.rb +57 -0
- data/lib/myfinance/entities/entity.rb +16 -0
- data/lib/myfinance/entities/entity_collection.rb +14 -0
- data/lib/myfinance/entities/financial_account.rb +30 -0
- data/lib/myfinance/entities/payable_account.rb +6 -0
- data/lib/myfinance/entities/receivable_account.rb +6 -0
- data/lib/myfinance/exception.rb +11 -0
- data/lib/myfinance/http.rb +33 -0
- data/lib/myfinance/request.rb +53 -0
- data/lib/myfinance/resources/base.rb +28 -0
- data/lib/myfinance/resources/entity.rb +39 -0
- data/lib/myfinance/resources/financial_account.rb +70 -0
- data/lib/myfinance/resources/payable_account.rb +33 -0
- data/lib/myfinance/resources/receivable_account.rb +33 -0
- data/lib/myfinance/response.rb +41 -0
- data/lib/myfinance/version.rb +3 -0
- data/myfinance.gemspec +45 -0
- data/spec/lib/myfinance/client_spec.rb +49 -0
- data/spec/lib/myfinance/configuration_spec.rb +26 -0
- data/spec/lib/myfinance/entities/base_spec.rb +28 -0
- data/spec/lib/myfinance/entities/collection_spec.rb +70 -0
- data/spec/lib/myfinance/entities/entity_collection_spec.rb +20 -0
- data/spec/lib/myfinance/entities/entity_spec.rb +11 -0
- data/spec/lib/myfinance/entities/payable_account_spec.rb +13 -0
- data/spec/lib/myfinance/entities/receivable_account_spec.rb +13 -0
- data/spec/lib/myfinance/http_spec.rb +37 -0
- data/spec/lib/myfinance/request_spec.rb +29 -0
- data/spec/lib/myfinance/resources/entity_spec.rb +63 -0
- data/spec/lib/myfinance/resources/payable_account_spec.rb +146 -0
- data/spec/lib/myfinance/resources/receivable_account_spec.rb +146 -0
- data/spec/lib/myfinance/response_spec.rb +58 -0
- data/spec/myfinance_spec.rb +25 -0
- data/spec/spec_helper.rb +39 -0
- data/spec/support/client.rb +3 -0
- data/spec/support/matchers/have_attr_accessor.rb +18 -0
- data/spec/support/shared_examples/entity_attributes.rb +9 -0
- data/spec/support/shared_examples/http_request_methods.rb +29 -0
- data/spec/support/vcr.rb +7 -0
- metadata +306 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
require "myfinance/exception"
|
2
|
+
|
3
|
+
module Myfinance
|
4
|
+
RequestTimeout = Class.new(Exception)
|
5
|
+
RequestError = Class.new(Exception)
|
6
|
+
|
7
|
+
class Response < SimpleDelegator
|
8
|
+
|
9
|
+
def resolve!(&block)
|
10
|
+
if success?
|
11
|
+
block_given? ? yield(self) : self
|
12
|
+
elsif timed_out?
|
13
|
+
timeout!
|
14
|
+
else
|
15
|
+
error!
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def parsed_body(key=nil)
|
20
|
+
return MultiJson.load(self.body)[key] unless key.nil?
|
21
|
+
MultiJson.load(self.body)
|
22
|
+
rescue MultiJson::ParseError
|
23
|
+
{}
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def timeout!
|
29
|
+
raise RequestTimeout
|
30
|
+
end
|
31
|
+
|
32
|
+
def error!
|
33
|
+
raise RequestError.new(
|
34
|
+
code: code,
|
35
|
+
message: status_message,
|
36
|
+
body: body
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
data/myfinance.gemspec
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'myfinance/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "myfinance"
|
8
|
+
spec.version = Myfinance::VERSION
|
9
|
+
spec.authors = ["Eduardo Hertz", "Rodrigo Tassinari"]
|
10
|
+
spec.email = ["eduardohertz@gmail.com", "rodrigo@pittlandia.net"]
|
11
|
+
|
12
|
+
spec.summary = %q{A Ruby client for the Myfinance REST API}
|
13
|
+
spec.description = %q{A Ruby client for the Myfinance REST API: https://app.myfinance.com.br/docs/api}
|
14
|
+
spec.homepage = "https://github.com/myfreecomm/myfinance-client-ruby"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
18
|
+
# delete this section to allow pushing this gem to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
21
|
+
else
|
22
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
|
+
end
|
24
|
+
|
25
|
+
spec.files = `git ls-files`.split($/).reject { |f| f =~ %r{(vcr_cassettes)/} }
|
26
|
+
spec.bindir = "bin"
|
27
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
28
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
29
|
+
spec.require_paths = ["lib"]
|
30
|
+
|
31
|
+
spec.add_dependency "typhoeus", "~> 0.7.1"
|
32
|
+
spec.add_dependency "multi_json", "~> 1.9.0"
|
33
|
+
spec.add_dependency "virtus", '~> 1.0.5'
|
34
|
+
|
35
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
36
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
37
|
+
spec.add_development_dependency "rspec"
|
38
|
+
spec.add_development_dependency "vcr", "~> 2.4"
|
39
|
+
spec.add_development_dependency "webmock", "~> 1.9.3"
|
40
|
+
spec.add_development_dependency "pry", "~> 0.9"
|
41
|
+
spec.add_development_dependency "pry-nav", "~> 0.2"
|
42
|
+
spec.add_development_dependency "awesome_print", "~> 1.1"
|
43
|
+
spec.add_development_dependency "simplecov", "~> 0.9"
|
44
|
+
spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4"
|
45
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Myfinance::Client do
|
4
|
+
subject { client }
|
5
|
+
|
6
|
+
describe "#initialize" do
|
7
|
+
it "instantiates a new Myfinance::Http object" do
|
8
|
+
expect(Myfinance::Http).to receive(:new).with("abc")
|
9
|
+
Myfinance::Client.new("abc")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#authenticated?" do
|
14
|
+
context "with a valid token" do
|
15
|
+
it "returns true" do
|
16
|
+
VCR.use_cassette("client/authenticated/true") { expect(subject.authenticated?).to be_truthy }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "with an invalid token" do
|
21
|
+
subject { described_class.new("FAKE-TOKEN") }
|
22
|
+
|
23
|
+
it "returns false" do
|
24
|
+
VCR.use_cassette("client/authenticated/false") { expect(subject.authenticated?).to be_falsey }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#entities" do
|
30
|
+
it "instantiates a new Myfinance::Resources::Entity" do
|
31
|
+
expect(Myfinance::Resources::Entity).to receive(:new).with(subject.http)
|
32
|
+
subject.entities
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#payable_accounts" do
|
37
|
+
it "instantiates a new Myfinance::Resources::PayableAccount" do
|
38
|
+
expect(Myfinance::Resources::PayableAccount).to receive(:new).with(subject.http)
|
39
|
+
subject.payable_accounts
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#receivable_accounts" do
|
44
|
+
it "instantiates a new Myfinance::Resources::ReceivableAccount" do
|
45
|
+
expect(Myfinance::Resources::ReceivableAccount).to receive(:new).with(subject.http)
|
46
|
+
subject.receivable_accounts
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Myfinance::Configuration do
|
5
|
+
subject { Myfinance::Configuration.new }
|
6
|
+
|
7
|
+
it "uses the production Myfinance URL by default" do
|
8
|
+
expect(subject.url).to eq("https://app.myfinance.com.br")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "uses a default user agent" do
|
12
|
+
expect(subject.user_agent).to eq("Myfinance Ruby Client v#{Myfinance::VERSION}")
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'allows setting the configuration parameters' do
|
16
|
+
subject.url = "https://sandbox.myfinance.com.br"
|
17
|
+
subject.user_agent = "My specific user agent"
|
18
|
+
|
19
|
+
expect(subject.url).to eq("https://sandbox.myfinance.com.br")
|
20
|
+
expect(subject.user_agent).to eq("My specific user agent")
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'does not respond to #token' do
|
24
|
+
expect(subject).to_not respond_to(:token)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Myfinance::Entities::Base do
|
4
|
+
|
5
|
+
class DummyEntity < Myfinance::Entities::Base
|
6
|
+
attribute :property_1, String
|
7
|
+
attribute :property_2, String
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:hash) { { property_1: 1, property_2: 2 } }
|
11
|
+
subject { DummyEntity.new(hash) }
|
12
|
+
|
13
|
+
it "builds an object from a hash" do
|
14
|
+
expect(subject).to respond_to(:property_1)
|
15
|
+
expect(subject).to respond_to(:property_2)
|
16
|
+
expect(subject.property_1).to eq("1")
|
17
|
+
expect(subject.property_2).to eq("2")
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#attributes" do
|
21
|
+
it "returns a hash from object attributes" do
|
22
|
+
expect(subject.to_hash).to eq({
|
23
|
+
property_1: "1",
|
24
|
+
property_2: "2"
|
25
|
+
})
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Myfinance::Entities::Collection do
|
4
|
+
let(:response) { double(headers: {"Link" => "<https://sandbox.myfinance.com.br/entities?page=3>; rel=next, <http://https://sandbox.myfinance.com.br/entities?page=1>; rel=prev, <http://https://sandbox.myfinance.com.br/entities?page=3>; rel=last, <http://https://sandbox.myfinance.com.br/entities?page=1>; rel=first" },
|
5
|
+
body: "[{\"entity\":{\"account_id\":3613,\"charging_uuid\":null,\"created_at\":\"2015-07-29T11:04:45-03:00\",\"default_in_menu\":true,\"deleted_at\":null,\"federation_subscription_number\":\"\",\"force_destroy\":false,\"id\":3798,\"imported_from_sync_at\":null,\"name\":\"Minhas Finan\\u00e7as\",\"updated_at\":\"2015-07-29T14:30:36-03:00\"}}]") }
|
6
|
+
|
7
|
+
subject { described_class.new(response) }
|
8
|
+
|
9
|
+
describe '#build' do
|
10
|
+
it 'raises NotImplementedError' do
|
11
|
+
expect { subject.build }.to raise_error(NotImplementedError)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#next_page' do
|
16
|
+
it 'returns next page (3)' do
|
17
|
+
expect(subject.next_page).to eq(3)
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when there is no next page' do
|
21
|
+
let(:response) { double(headers: {"Link" => ""}, body: "") }
|
22
|
+
|
23
|
+
it 'returns nil' do
|
24
|
+
expect(subject.next_page).to be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#last_page' do
|
30
|
+
it 'returns last page (3)' do
|
31
|
+
expect(subject.last_page).to eq(3)
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when there is no last page' do
|
35
|
+
let(:response) { double(headers: {"Link" => ""}, body: "") }
|
36
|
+
|
37
|
+
it 'returns nil' do
|
38
|
+
expect(subject.last_page).to be_nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#previous_page' do
|
44
|
+
it 'returns previous page (3)' do
|
45
|
+
expect(subject.previous_page).to eq(1)
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when there is no previous page' do
|
49
|
+
let(:response) { double(headers: {"Link" => ""}, body: "") }
|
50
|
+
|
51
|
+
it 'returns nil' do
|
52
|
+
expect(subject.previous_page).to be_nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#first_page' do
|
58
|
+
it 'returns first page (3)' do
|
59
|
+
expect(subject.first_page).to eq(1)
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'when there is no first page' do
|
63
|
+
let(:response) { double(headers: {"Link" => ""}, body: "") }
|
64
|
+
|
65
|
+
it 'returns nil' do
|
66
|
+
expect(subject.first_page).to be_nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Myfinance::Entities::EntityCollection do
|
4
|
+
let(:response) { double(headers: { "Link" => "<https://sandbox.myfinance.com.br/entities?page=3>; rel=next, <http://https://sandbox.myfinance.com.br/entities?page=1>; rel=prev, <http://https://sandbox.myfinance.com.br/entities?page=3>; rel=last, <http://https://sandbox.myfinance.com.br/entities?page=1>; rel=first" },
|
5
|
+
parsed_body: [{"entity" => {"account_id" => 3613,"charging_uuid" => nil,"created_at" => "2015-07-29T11:04:45-03:00","default_in_menu" => true,"deleted_at" => nil,"federation_subscription_number" => "","force_destroy" => false,"id" => 3798,"imported_from_sync_at" => nil,"name" => "Minhas Finan\\u00e7as","updated_at" => "2015-07-29T14:30:36-03:00"} }]) }
|
6
|
+
|
7
|
+
subject { Myfinance::Entities::EntityCollection.new(response) }
|
8
|
+
|
9
|
+
describe '#build' do
|
10
|
+
it 'returns order collection' do
|
11
|
+
expect(subject.build.class).to eq(Myfinance::Entities::EntityCollection)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns orders" do
|
15
|
+
subject.build
|
16
|
+
expect(subject.collection.count).to eq(1)
|
17
|
+
expect(subject.collection.first.class).to eq(Myfinance::Entities::Entity)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Myfinance::Entities::Entity do
|
4
|
+
subject { described_class.new({}) }
|
5
|
+
|
6
|
+
it_behaves_like "entity_attributes", [
|
7
|
+
:id, :name, :account_id,:charging_uuid, :created_at,
|
8
|
+
:default_in_menu, :deleted_at, :federation_subscription_number,
|
9
|
+
:imported_from_sync_at, :updated_at
|
10
|
+
]
|
11
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Myfinance::Entities::PayableAccount do
|
4
|
+
subject { described_class.new({}) }
|
5
|
+
|
6
|
+
it_behaves_like "entity_attributes", [
|
7
|
+
:id, :entity_id, :status, :status_name, :due_date, :occurred_at, :ticket_amount, :interest_amount, :amount,
|
8
|
+
:discount_amount, :total_amount, :description, :document, :document_emission_date, :observation, :remind,
|
9
|
+
:reminded_at, :income_tax_relevant, :category_id, :classification_center_id, :expected_deposit_account_id,
|
10
|
+
:recurrence_id, :person_id, :recurrent, :parcelled, :recurrence_period, :number_of_parcels, :current_parcel,
|
11
|
+
:competency_month, :financial_account_taxes_attributes, :reconciliations, :links, :created_at, :updated_at
|
12
|
+
]
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Myfinance::Entities::ReceivableAccount do
|
4
|
+
subject { described_class.new({}) }
|
5
|
+
|
6
|
+
it_behaves_like "entity_attributes", [
|
7
|
+
:id, :entity_id, :status, :status_name, :due_date, :occurred_at, :ticket_amount, :interest_amount, :amount,
|
8
|
+
:discount_amount, :total_amount, :description, :document, :document_emission_date, :observation, :remind,
|
9
|
+
:reminded_at, :income_tax_relevant, :category_id, :classification_center_id, :expected_deposit_account_id,
|
10
|
+
:recurrence_id, :person_id, :recurrent, :parcelled, :recurrence_period, :number_of_parcels, :current_parcel,
|
11
|
+
:competency_month, :financial_account_taxes_attributes, :reconciliations, :links, :created_at, :updated_at
|
12
|
+
]
|
13
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Myfinance::Http do
|
4
|
+
subject { Myfinance::Http.new('b552dd5a8598ca089b91c5e355a83b86e4696aefac9eaa05') }
|
5
|
+
|
6
|
+
describe '#get' do
|
7
|
+
let(:http_method) { :get }
|
8
|
+
let(:url) { '/accounts' }
|
9
|
+
let(:params) { {} }
|
10
|
+
|
11
|
+
it_behaves_like 'available http request methods'
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#post' do
|
15
|
+
let(:http_method) { :post }
|
16
|
+
let(:url) { '/entities' }
|
17
|
+
let(:params) { { entity: { name: 'Second entity' } } }
|
18
|
+
|
19
|
+
it_behaves_like 'available http request methods'
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#put' do
|
23
|
+
let(:http_method) { :put }
|
24
|
+
let(:url) { '/entities/3798' }
|
25
|
+
let(:params) { { entity: { name: 'Second updated entity' } } }
|
26
|
+
|
27
|
+
it_behaves_like 'available http request methods'
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#delete' do
|
31
|
+
let(:http_method) { :delete }
|
32
|
+
let(:url) { '/entities/3799' }
|
33
|
+
let(:params) { {} }
|
34
|
+
|
35
|
+
it_behaves_like 'available http request methods'
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Myfinance::Request do
|
4
|
+
describe "#run" do
|
5
|
+
subject { described_class.new({ method: 'post', params: {}, url: Myfinance.configuration.url, user_agent: 'My Test User-Agent', token: 'my-auth-hash' }) }
|
6
|
+
|
7
|
+
it "does a request using Typhoeus::Request" do
|
8
|
+
expect(Typhoeus::Request).to receive(:new).with("https://sandbox.myfinance.com.br", { method: "post", params: {}, headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => "My Test User-Agent", "Authorization" => "Basic bXktYXV0aC1oYXNoOlg=" }, accept_encoding: "gzip" }).and_return(double(run: true, response: true))
|
9
|
+
subject.run
|
10
|
+
end
|
11
|
+
|
12
|
+
it "invokes Typhoeus::Request#run" do
|
13
|
+
expect_any_instance_of(Typhoeus::Request).to receive(:run)
|
14
|
+
subject.run
|
15
|
+
end
|
16
|
+
|
17
|
+
it "invokes Typhoeus::Request#response" do
|
18
|
+
allow_any_instance_of(Typhoeus::Request).to receive(:run)
|
19
|
+
expect_any_instance_of(Typhoeus::Request).to receive(:response)
|
20
|
+
subject.run
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'generates the base 64 of the user token' do
|
24
|
+
allow_any_instance_of(Typhoeus::Request).to receive(:run)
|
25
|
+
expect(Base64).to receive(:strict_encode64).with("my-auth-hash:X").and_call_original
|
26
|
+
subject.run
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Myfinance::Resources::Entity do
|
4
|
+
describe "#find_all", vcr: true do
|
5
|
+
context "when success" do
|
6
|
+
subject { client.entities.find_all }
|
7
|
+
|
8
|
+
it "returns a find_all of orders" do
|
9
|
+
expect(subject.class).to eq(Myfinance::Entities::EntityCollection)
|
10
|
+
expect(subject.collection.first.class).to eq(Myfinance::Entities::Entity)
|
11
|
+
expect(subject.collection.first.id).to eq(3798)
|
12
|
+
expect(subject.collection.first.name).to eq("Minhas Finanças")
|
13
|
+
expect(subject.collection.first.account_id).to eq(3613)
|
14
|
+
expect(subject.collection.first.charging_uuid).to be_nil
|
15
|
+
expect(subject.collection.first.created_at).to eq(DateTime.parse("2015-07-29T11:04:45-03:00"))
|
16
|
+
expect(subject.collection.first.default_in_menu).to be_truthy
|
17
|
+
expect(subject.collection.first.deleted_at).to be_nil
|
18
|
+
expect(subject.collection.first.federation_subscription_number).to eq("")
|
19
|
+
expect(subject.collection.first.imported_from_sync_at).to be_nil
|
20
|
+
expect(subject.collection.first.updated_at).to eq(DateTime.parse("2015-07-29T14:30:36-03:00"))
|
21
|
+
expect(subject.collection.count).to eq(1)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "when not found" do
|
26
|
+
let(:client) { Myfinance.client('') }
|
27
|
+
subject { client.entities.find_all }
|
28
|
+
|
29
|
+
it "raises NotFound" do
|
30
|
+
expect{ subject }.to raise_error(Myfinance::RequestError)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#find", vcr: true do
|
36
|
+
context "when success" do
|
37
|
+
subject { client.entities.find(3798) }
|
38
|
+
|
39
|
+
it "returns a find_all of orders" do
|
40
|
+
expect(subject.class).to eq(Myfinance::Entities::Entity)
|
41
|
+
expect(subject.id).to eq(3798)
|
42
|
+
expect(subject.name).to eq("Minhas Finanças")
|
43
|
+
expect(subject.account_id).to eq(3613)
|
44
|
+
expect(subject.charging_uuid).to be_nil
|
45
|
+
expect(subject.created_at).to eq(DateTime.parse("2015-07-29T11:04:45-03:00"))
|
46
|
+
expect(subject.default_in_menu).to be_truthy
|
47
|
+
expect(subject.deleted_at).to be_nil
|
48
|
+
expect(subject.federation_subscription_number).to eq("")
|
49
|
+
expect(subject.imported_from_sync_at).to be_nil
|
50
|
+
expect(subject.updated_at).to eq(DateTime.parse("2015-07-29T14:30:36-03:00"))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context "when not found" do
|
55
|
+
let(:client) { Myfinance.client('') }
|
56
|
+
subject { client.entities.find(3798) }
|
57
|
+
|
58
|
+
it "raises NotFound" do
|
59
|
+
expect{ subject }.to raise_error(Myfinance::RequestError)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|