myfinance 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|