fakturoid 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6e7ed6762d5dc5f9d0e070d17634ef90c6998ed3
4
- data.tar.gz: a7014987ec7c1a578836ce9aa8bf3fe12c22ea45
3
+ metadata.gz: 6b2689a302bc8c51aad83f0adace9767fb2b3fed
4
+ data.tar.gz: 401da40fc65ad68fd261f6cc4c1be79b1e8b357f
5
5
  SHA512:
6
- metadata.gz: 061964316f09a034a40be9f9d08f03e55f8f57d199b0af9295fbd3dee8ec1679b96753b3ec0a98e8facc55a5a6a74b5a258e2e5463763d98aac3b4d8c30a0112
7
- data.tar.gz: cea2e8ec2f2bf02a903d0f9b2cbe3c8b15ee4a8bf8bd88b40507f0d9f6931da25027ddd2c08831827fcf2f54103c7033b46a566641ce41491a288b38d54508eb
6
+ metadata.gz: 72dc160cbff635c30ba4037ec5152006ab1f8263a1fcbe9d9a86444995fdbf7c6e65ddb6c7e56c15cb7c11fb2d7789a199088622d4ab8c0dba4d0b8b0deabd42
7
+ data.tar.gz: 5ce5f5b56d266c1be628bc24162eb8dce0f5e2e65ed03538c090b6a38e94e2cd19fc0c90b341c25ea9ef792f0b3a61d089a82478b07a5462d1cdbdf6718926f4
@@ -1 +1 @@
1
- 2.2.2
1
+ 2.3.4
@@ -1,3 +1,11 @@
1
+ ## 0.2.0
2
+
3
+ - Add support for `paid_at` param in invoice `fire` method.
4
+
5
+ ```ruby
6
+ Fakturoid::Client::Invoice.fire(1234, 'pay', paid_at: '2017-07-03')
7
+ ```
8
+
1
9
  ## 0.1.1
2
10
 
3
11
  - Added support for `updated_since` param.
@@ -8,7 +16,7 @@
8
16
  invoice = Fakturoid::Client::Invoice.find(1234)
9
17
  invoice.respond_to?(:number)
10
18
  # => false
11
-
19
+
12
20
  ### After
13
21
  invoice = Fakturoid::Client::Invoice.find(1234)
14
22
  invoice.respond_to?(:number)
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Fakturoid
2
2
 
3
3
  The Fakturoid gem is ruby library for API communication with web based invoicing service [www.fakturoid.cz](https://fakturoid.cz).
4
- Fakturoid [API documentation](http://docs.fakturoid.apiary.io).
4
+ Fakturoid [API documentation](http://docs.fakturoid.apiary.io).
5
5
 
6
6
  [![Gem Version](https://badge.fury.io/rb/fakturoid.svg)](http://badge.fury.io/rb/fakturoid)
7
7
  [![Circle CI](https://circleci.com/gh/fakturoid/fakturoid-ruby.svg?style=svg)](https://circleci.com/gh/fakturoid/fakturoid-ruby)
@@ -148,11 +148,11 @@ You can create new invoice with:
148
148
 
149
149
  ```ruby
150
150
  invoice = {
151
- subject_id: 123,
151
+ subject_id: 123,
152
152
  lines: [
153
- {
154
- quantity: 5,
155
- unit_name: 'kg',
153
+ {
154
+ quantity: 5,
155
+ unit_name: 'kg',
156
156
  name: 'Sand',
157
157
  unit_price: '100',
158
158
  vat_rate: 21
@@ -260,4 +260,4 @@ The Fakturoid gem raises exceptions if error response is returned from the serve
260
260
  </table>
261
261
 
262
262
  ## Thanks
263
- Development was supported by [eBallance Creative s.r.o.](http://www.eballance.cz)
263
+ Development was supported by [eBallance Creative s.r.o.](http://www.eballance.cz)
data/Rakefile CHANGED
@@ -7,4 +7,4 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.libs << "test"
8
8
  t.test_files = FileList['test/*_test.rb']
9
9
  t.verbose = true
10
- end
10
+ end
@@ -17,10 +17,10 @@ Gem::Specification.new do |s|
17
17
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
19
  s.require_paths = ["lib"]
20
-
20
+
21
21
  s.add_dependency 'multi_json'
22
22
  s.add_dependency 'faraday'
23
-
23
+
24
24
  s.add_development_dependency "bundler", "> 1"
25
25
  s.add_development_dependency "rake"
26
26
  s.add_development_dependency "minitest"
@@ -14,14 +14,14 @@ require 'fakturoid/railtie' if defined?(::Rails)
14
14
  module Fakturoid
15
15
  class ApiError < StandardError
16
16
  attr_accessor :response_code, :response_body
17
-
17
+
18
18
  def initialize(message = nil, response_code = nil, response_body = nil)
19
19
  super(message)
20
20
  self.response_code = response_code
21
21
  self.response_body = response_body
22
22
  end
23
23
  end
24
-
24
+
25
25
  class ContentTypeError < ApiError; end
26
26
  class UserAgentError < ApiError; end
27
27
  class AuthenticationError < ApiError; end
@@ -36,10 +36,10 @@ module Fakturoid
36
36
  class SubjectLimitError < ApiError; end
37
37
  class GeneratorLimitError < ApiError; end
38
38
  class UnsupportedFeatureError < ApiError; end
39
-
39
+
40
40
  class ClientError < ApiError; end
41
41
  class ServerError < ApiError; end
42
-
42
+
43
43
  def self.configure(&block)
44
44
  Fakturoid::Api.configure(&block)
45
45
  end
@@ -5,11 +5,11 @@ module Fakturoid
5
5
  class Api
6
6
  extend Arguments
7
7
  extend HttpMethods
8
-
8
+
9
9
  def self.configure(&block)
10
10
  @config ||= Fakturoid::Config.new(&block)
11
11
  end
12
-
12
+
13
13
  def self.config
14
14
  @config
15
15
  end
@@ -4,12 +4,12 @@ module Fakturoid
4
4
  def permit_params(params_hash, *permitted_params)
5
5
  params_hash.select { |param, _value| permitted_params.include?(param.to_sym) }
6
6
  end
7
-
7
+
8
8
  def validate_numerical_id(id)
9
9
  raise ArgumentError, "Wrong ID given: #{id}" if !id.is_a?(Integer) && !(id.is_a?(String) && id =~ /\A\d+\z/)
10
10
  true
11
11
  end
12
-
12
+
13
13
  def validate_search_query(query)
14
14
  raise ArgumentError, 'Query parameter is required' if query.nil? || query.empty?
15
15
  true
@@ -4,15 +4,15 @@ module Fakturoid
4
4
  def get_request(path, params = {})
5
5
  Request.new(:get, path, self).call(params)
6
6
  end
7
-
7
+
8
8
  def post_request(path, params = {})
9
9
  Request.new(:post, path, self).call(params)
10
10
  end
11
-
11
+
12
12
  def patch_request(path, params = {})
13
13
  Request.new(:patch, path, self).call(params)
14
14
  end
15
-
15
+
16
16
  def delete_request(path, params = {})
17
17
  Request.new(:delete, path, self).call(params)
18
18
  end
@@ -3,13 +3,13 @@ module Fakturoid
3
3
  class Event < Fakturoid::Api
4
4
  def self.all(params = {})
5
5
  request_params = permit_params(params, :page, :since, :subject_id) || {}
6
-
6
+
7
7
  get_request('events.json', request_params: request_params)
8
8
  end
9
-
9
+
10
10
  def self.paid(params = {})
11
11
  request_params = permit_params(params, :page, :since, :subject_id) || {}
12
-
12
+
13
13
  get_request('events/paid.json', request_params: request_params)
14
14
  end
15
15
  end
@@ -3,34 +3,34 @@ module Fakturoid
3
3
  class Expense < Fakturoid::Api
4
4
  def self.all(params = {})
5
5
  request_params = permit_params(params, :page, :since, :updated_since, :number, :variable_symbol, :status, :subject_id) || {}
6
-
6
+
7
7
  get_request('expenses.json', request_params: request_params)
8
8
  end
9
-
9
+
10
10
  def self.find(id)
11
11
  validate_numerical_id(id)
12
12
  get_request("expenses/#{id}.json")
13
13
  end
14
-
14
+
15
15
  def self.search(query)
16
16
  validate_search_query(query)
17
17
  get_request('expenses/search.json', request_params: { query: query })
18
18
  end
19
-
19
+
20
20
  def self.fire(id, event)
21
21
  validate_numerical_id(id)
22
22
  post_request("expenses/#{id}/fire.json", request_params: { event: event })
23
23
  end
24
-
24
+
25
25
  def self.create(payload = {})
26
26
  post_request('expenses.json', payload: payload)
27
27
  end
28
-
28
+
29
29
  def self.update(id, payload = {})
30
30
  validate_numerical_id(id)
31
31
  patch_request("expenses/#{id}.json", payload: payload)
32
32
  end
33
-
33
+
34
34
  def self.delete(id)
35
35
  validate_numerical_id(id)
36
36
  delete_request("expenses/#{id}.json")
@@ -3,36 +3,36 @@ module Fakturoid
3
3
  class Generator < Fakturoid::Api
4
4
  def self.all(params = {})
5
5
  request_params = permit_params(params, :page, :since, :updated_since, :subject_id) || {}
6
-
6
+
7
7
  get_request('generators.json', request_params: request_params)
8
8
  end
9
-
9
+
10
10
  def self.recurring(params = {})
11
11
  request_params = permit_params(params, :page, :since, :updated_since, :subject_id) || {}
12
-
12
+
13
13
  get_request('generators/recurring.json', request_params: request_params)
14
14
  end
15
-
15
+
16
16
  def self.template(params = {})
17
17
  request_params = permit_params(params, :page, :since, :updated_since, :subject_id) || {}
18
-
18
+
19
19
  get_request('generators/template.json', request_params: request_params)
20
20
  end
21
-
21
+
22
22
  def self.find(id)
23
23
  validate_numerical_id(id)
24
24
  get_request("generators/#{id}.json")
25
25
  end
26
-
26
+
27
27
  def self.create(payload = {})
28
28
  post_request('generators.json', payload: payload)
29
29
  end
30
-
30
+
31
31
  def self.update(id, payload = {})
32
32
  validate_numerical_id(id)
33
33
  patch_request("generators/#{id}.json", payload: payload)
34
34
  end
35
-
35
+
36
36
  def self.delete(id)
37
37
  validate_numerical_id(id)
38
38
  delete_request("generators/#{id}.json")
@@ -3,56 +3,59 @@ module Fakturoid
3
3
  class Invoice < Fakturoid::Api
4
4
  def self.all(params = {})
5
5
  request_params = permit_params(params, :page, :since, :updated_since, :number, :status, :subject_id) || {}
6
-
6
+
7
7
  get_request('invoices.json', request_params: request_params)
8
8
  end
9
-
9
+
10
10
  def self.regular(params = {})
11
11
  request_params = permit_params(params, :page, :since, :updated_since, :number, :status, :subject_id) || {}
12
-
12
+
13
13
  get_request('invoices/regular.json', request_params: request_params)
14
14
  end
15
-
15
+
16
16
  def self.proforma(params = {})
17
17
  request_params = permit_params(params, :page, :since, :updated_since, :number, :status, :subject_id) || {}
18
-
18
+
19
19
  get_request('invoices/proforma.json', request_params: request_params)
20
20
  end
21
-
21
+
22
22
  def self.find(id)
23
23
  validate_numerical_id(id)
24
24
  get_request("invoices/#{id}.json")
25
25
  end
26
-
26
+
27
27
  def self.search(query)
28
28
  validate_search_query(query)
29
29
  get_request('invoices/search.json', request_params: { query: query })
30
30
  end
31
-
31
+
32
32
  def self.download_pdf(id)
33
33
  validate_numerical_id(id)
34
34
  get_request("invoices/#{id}/download.pdf", headers: { content_type: 'application/pdf' })
35
35
  end
36
-
37
- def self.fire(id, event)
36
+
37
+ def self.fire(id, event, params = {})
38
+ request_params = permit_params(params, :paid_at) || {}
39
+ request_params[:event] = event
40
+
38
41
  validate_numerical_id(id)
39
- post_request("invoices/#{id}/fire.json", request_params: { event: event })
42
+ post_request("invoices/#{id}/fire.json", request_params: request_params)
40
43
  end
41
-
44
+
42
45
  def self.deliver_message(invoice_id, payload = {})
43
46
  validate_numerical_id(invoice_id)
44
47
  post_request("invoices/#{invoice_id}/message.json", payload: payload)
45
48
  end
46
-
49
+
47
50
  def self.create(payload = {})
48
51
  post_request('invoices.json', payload: payload)
49
52
  end
50
-
53
+
51
54
  def self.update(id, payload = {})
52
55
  validate_numerical_id(id)
53
56
  patch_request("invoices/#{id}.json", payload: payload)
54
57
  end
55
-
58
+
56
59
  def self.delete(id)
57
60
  validate_numerical_id(id)
58
61
  delete_request("invoices/#{id}.json")
@@ -3,29 +3,29 @@ module Fakturoid
3
3
  class Subject < Fakturoid::Api
4
4
  def self.all(params = {})
5
5
  request_params = permit_params(params, :page, :since, :updated_since, :custom_id) || {}
6
-
6
+
7
7
  get_request('subjects.json', request_params: request_params)
8
8
  end
9
-
9
+
10
10
  def self.find(id)
11
11
  validate_numerical_id(id)
12
12
  get_request("subjects/#{id}.json")
13
13
  end
14
-
14
+
15
15
  def self.search(query)
16
16
  validate_search_query(query)
17
17
  get_request('subjects/search.json', request_params: { query: query })
18
18
  end
19
-
19
+
20
20
  def self.create(payload = {})
21
21
  post_request('subjects.json', payload: payload)
22
22
  end
23
-
23
+
24
24
  def self.update(id, payload = {})
25
25
  validate_numerical_id(id)
26
26
  patch_request("subjects/#{id}.json", payload: payload)
27
27
  end
28
-
28
+
29
29
  def self.delete(id)
30
30
  validate_numerical_id(id)
31
31
  delete_request("subjects/#{id}.json")
@@ -3,10 +3,10 @@ module Fakturoid
3
3
  class Todo < Fakturoid::Api
4
4
  def self.all(params = {})
5
5
  request_params = permit_params(params, :page, :since) || {}
6
-
6
+
7
7
  get_request('todos.json', request_params: request_params)
8
8
  end
9
-
9
+
10
10
  def self.toggle_completion(id)
11
11
  validate_numerical_id(id)
12
12
  post_request("todos/#{id}/toggle_completion.json")
@@ -4,12 +4,12 @@ module Fakturoid
4
4
  def self.current
5
5
  get_request('user.json', url: Fakturoid::Api.config.endpoint_without_account)
6
6
  end
7
-
7
+
8
8
  def self.find(id)
9
9
  validate_numerical_id(id)
10
10
  get_request("users/#{id}.json")
11
11
  end
12
-
12
+
13
13
  def self.all
14
14
  get_request('users.json')
15
15
  end
@@ -2,13 +2,13 @@ module Fakturoid
2
2
  class Config
3
3
  attr_accessor :email, :api_key, :account
4
4
  attr_writer :user_agent
5
-
5
+
6
6
  ENDPOINT = 'https://app.fakturoid.cz/api/v2'
7
-
7
+
8
8
  def initialize(&_block)
9
9
  yield self
10
10
  end
11
-
11
+
12
12
  def user_agent
13
13
  if @user_agent.nil? || @user_agent.empty?
14
14
  "Fakturoid ruby gem (#{email})"
@@ -16,11 +16,11 @@ module Fakturoid
16
16
  @user_agent
17
17
  end
18
18
  end
19
-
19
+
20
20
  def endpoint
21
21
  "#{ENDPOINT}/accounts/#{account}"
22
22
  end
23
-
23
+
24
24
  def endpoint_without_account
25
25
  ENDPOINT
26
26
  end
@@ -1,6 +1,6 @@
1
1
  module Fakturoid
2
2
  module Connection
3
-
3
+
4
4
  def default_options(options = {})
5
5
  content_type = options[:headers] && options[:headers][:content_type]
6
6
  {
@@ -11,11 +11,11 @@ module Fakturoid
11
11
  url: options[:url] || Fakturoid::Api.config.endpoint
12
12
  }
13
13
  end
14
-
14
+
15
15
  def connection(options = {})
16
16
  @connection = Faraday.new default_options(options)
17
17
  @connection.basic_auth(Fakturoid::Api.config.email, Fakturoid::Api.config.api_key)
18
-
18
+
19
19
  @connection
20
20
  end
21
21
  end
@@ -1,21 +1,21 @@
1
1
  module Fakturoid
2
2
  class Request
3
3
  include Connection
4
-
4
+
5
5
  attr_reader :method, :path, :caller
6
6
  HTTP_METHODS = [:get, :post, :patch, :delete]
7
-
7
+
8
8
  def initialize(method, path, caller)
9
9
  @method = method
10
10
  @path = path
11
11
  @caller = caller
12
12
  end
13
-
13
+
14
14
  def call(params = {})
15
15
  raise ArgumentError, "Unknown http method: #{method}" unless HTTP_METHODS.include?(method.to_sym)
16
-
16
+
17
17
  request_params = params[:request_params] || {}
18
-
18
+
19
19
  http_connection = connection(params)
20
20
  response = http_connection.send(method) do |req|
21
21
  req.url path, request_params
@@ -1,45 +1,45 @@
1
1
  module Fakturoid
2
2
  class Response
3
3
  attr_reader :response, :caller, :env, :body, :request_method
4
-
4
+
5
5
  def initialize(faraday_response, caller, request_method)
6
6
  @response = faraday_response
7
7
  @caller = caller
8
8
  @env = faraday_response.env
9
9
  @request_method = request_method.to_sym
10
-
10
+
11
11
  if !(env.body.nil? || env.body.empty? || (json? && env.body =~ /\A\s+\z/))
12
12
  @body = json? ? MultiJson.load(env.body) : env.body
13
13
  end
14
14
  handle_response
15
15
  end
16
-
16
+
17
17
  def status_code
18
18
  env['status']
19
19
  end
20
-
20
+
21
21
  def json?
22
22
  env.request_headers['Content-Type'] == 'application/json'
23
23
  end
24
-
24
+
25
25
  def headers
26
26
  env.response_headers
27
27
  end
28
-
28
+
29
29
  def inspect
30
30
  "#<#{self.class.name}:#{object_id} @body=\"#{body}\" @status_code=\"#{status_code}\">"
31
31
  end
32
-
32
+
33
33
  private
34
-
34
+
35
35
  def handle_response
36
36
  case status_code
37
- when 400
37
+ when 400
38
38
  raise error(UserAgentError, 'User-Agent header missing') if env.request_headers['User-Agent'].nil? || env.request_headers['User-Agent'].empty?
39
39
  raise error(PaginationError, 'Page does not exist')
40
40
  when 401 then raise error(AuthenticationError, 'Authentification failed')
41
41
  when 402 then raise error(BlockedAccountError, 'Account is blocked')
42
- when 403 then
42
+ when 403 then
43
43
  raise error(DestroySubjectError, 'Cannot destroy subject with invoices') if caller == Client::Subject && request_method == :delete
44
44
  raise error(SubjectLimitError, 'Subject limit for account reached') if caller == Client::Subject && request_method == :post
45
45
  raise error(GeneratorLimitError, 'Recurring generator limit for account reached') if caller == Client::Generator
@@ -54,11 +54,11 @@ module Fakturoid
54
54
  raise error(ClientError, 'Client error') if status_code >= 400
55
55
  end
56
56
  end
57
-
57
+
58
58
  def error(klass, message = nil)
59
59
  klass.new message, status_code, body
60
60
  end
61
-
61
+
62
62
  def method_missing(method, *args, &block)
63
63
  if body_has_key?(method)
64
64
  body[method.to_s]
@@ -66,11 +66,11 @@ module Fakturoid
66
66
  super
67
67
  end
68
68
  end
69
-
69
+
70
70
  def respond_to_missing?(method, _include_all)
71
71
  body_has_key?(method) || super
72
72
  end
73
-
73
+
74
74
  def body_has_key?(key)
75
75
  body && body.is_a?(Hash) && body.key?(key.to_s)
76
76
  end
@@ -1,3 +1,3 @@
1
1
  module Fakturoid
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -6,14 +6,14 @@ class Fakturoid::ApiTest < Fakturoid::TestCase
6
6
  permitted_params = Fakturoid::Api.permit_params(hash, :page, :number, :status)
7
7
  assert_equal({ page: 4, number: '2015-0015' }, permitted_params)
8
8
  end
9
-
9
+
10
10
  should 'raise argument error if id is in wrong format' do
11
11
  assert_raises(ArgumentError) { Fakturoid::Api.validate_numerical_id(nil) }
12
12
  assert_raises(ArgumentError) { Fakturoid::Api.validate_numerical_id('nil') }
13
13
  assert Fakturoid::Api.validate_numerical_id(15)
14
14
  assert Fakturoid::Api.validate_numerical_id('15')
15
15
  end
16
-
16
+
17
17
  should 'raise argument error if search query is not given' do
18
18
  assert_raises(ArgumentError) { Fakturoid::Api.validate_search_query(nil) }
19
19
  assert_raises(ArgumentError) { Fakturoid::Api.validate_search_query('') }
@@ -8,13 +8,13 @@ class Fakturoid::ConfigTest < Fakturoid::TestCase
8
8
  c.account = 'testaccount'
9
9
  c.user_agent = 'My test app (test@email.cz)'
10
10
  end
11
-
11
+
12
12
  assert_equal 'test@email.cz', config.email
13
13
  assert_equal 'XXXXXXXXXXX', config.api_key
14
14
  assert_equal 'testaccount', config.account
15
15
  assert_equal 'My test app (test@email.cz)', config.user_agent
16
16
  end
17
-
17
+
18
18
  should 'use default user agent' do
19
19
  config = Fakturoid::Config.new do |c|
20
20
  c.email = 'test@email.cz'
@@ -24,14 +24,14 @@ class Fakturoid::ConfigTest < Fakturoid::TestCase
24
24
 
25
25
  assert_equal 'Fakturoid ruby gem (test@email.cz)', config.user_agent
26
26
  end
27
-
27
+
28
28
  should 'return correct endpoints' do
29
29
  config = Fakturoid::Config.new do |c|
30
30
  c.email = 'test@email.cz'
31
31
  c.api_key = 'XXXXXXXXXXX'
32
32
  c.account = 'testaccount'
33
33
  end
34
-
34
+
35
35
  assert_equal 'https://app.fakturoid.cz/api/v2/accounts/testaccount', config.endpoint
36
36
  assert_equal 'https://app.fakturoid.cz/api/v2', config.endpoint_without_account
37
37
  end
@@ -5,4 +5,4 @@
5
5
  "invoice_url": "http://app.fakturoid.dev/robot/p/3WfeLRO5HZ/2015-0002"
6
6
  }
7
7
  ]
8
- }
8
+ }
@@ -78,4 +78,4 @@
78
78
  "url": "https://app.fakturoid.cz/api/v2/accounts/applecorp/invoices/9.json",
79
79
  "subject_url": "https://app.fakturoid.cz/api/v2/accounts/applecorp/subjects/4.json",
80
80
  "updated_at": "2012-05-13T12:11:37+02:00"
81
- }
81
+ }
@@ -4,4 +4,4 @@
4
4
  "je povinná položka"
5
5
  ]
6
6
  }
7
- }
7
+ }
@@ -38,7 +38,7 @@
38
38
  "vat_no": "CZ47123737",
39
39
  "bank_account": "",
40
40
  "iban": "",
41
- "variable_symbol": "1234567890"
41
+ "variable_symbol": "1234567890",
42
42
  "full_name": "",
43
43
  "email": "",
44
44
  "email_copy": "",
@@ -49,4 +49,4 @@
49
49
  "url": "https://app.fakturoid.cz/api/v2/accounts/applecorp/subjects/28.json",
50
50
  "updated_at": "2012-06-02T09:34:47+02:00"
51
51
  }
52
- ]
52
+ ]
@@ -10,7 +10,7 @@ class Fakturoid::RequestTest < Fakturoid::TestCase
10
10
  builder.headers = { content_type: 'application/pdf' }
11
11
  end
12
12
  Fakturoid::Request.any_instance.stubs(:connection).returns(test_connection)
13
-
13
+
14
14
  response = Fakturoid::Request.new(:get, 'invoices/5/download.pdf', Fakturoid::Client::Invoice).call
15
15
  assert !response.json?
16
16
  assert_raises(NoMethodError) { response.name }
@@ -9,17 +9,17 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
9
9
  end
10
10
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
11
11
  end
12
-
12
+
13
13
  response = Fakturoid::Response.new(test_connection.get('invoices/5.json'), Fakturoid::Client::Invoice, :get)
14
14
  assert response.json?
15
- assert_equal 200, response.status_code
15
+ assert_equal 200, response.status_code
16
16
  assert_equal 5, response.id
17
17
  assert_equal 5, response.body['id']
18
18
  assert response.respond_to?(:body)
19
19
  assert response.respond_to?(:id)
20
20
  assert_raises(NoMethodError) { response.name }
21
21
  end
22
-
22
+
23
23
  context 'Exceptions' do
24
24
  should 'raise user agent error' do
25
25
  test_connection = Faraday.new do |builder|
@@ -28,10 +28,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
28
28
  end
29
29
  builder.headers = { content_type: 'application/json', user_agent: '' }
30
30
  end
31
-
31
+
32
32
  assert_raises(Fakturoid::UserAgentError) { Fakturoid::Response.new(test_connection.get('invoices/5.json'), Fakturoid::Client::Invoice, :get) }
33
33
  end
34
-
34
+
35
35
  should 'raise pagination error' do
36
36
  test_connection = Faraday.new do |builder|
37
37
  builder.adapter :test do |stub|
@@ -39,10 +39,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
39
39
  end
40
40
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
41
41
  end
42
-
42
+
43
43
  assert_raises(Fakturoid::PaginationError) { Fakturoid::Response.new(test_connection.get('invoices.json?page=4'), Fakturoid::Client::Invoice, :get) }
44
44
  end
45
-
45
+
46
46
  should 'raise authentication error' do
47
47
  test_connection = Faraday.new do |builder|
48
48
  builder.adapter :test do |stub|
@@ -50,10 +50,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
50
50
  end
51
51
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
52
52
  end
53
-
53
+
54
54
  assert_raises(Fakturoid::AuthenticationError) { Fakturoid::Response.new(test_connection.get('invoices.json?page=4'), Fakturoid::Client::Invoice, :get) }
55
55
  end
56
-
56
+
57
57
  should 'raise blocked account error' do
58
58
  json = load_fixture('blocked_account.json')
59
59
  test_connection = Faraday.new do |builder|
@@ -62,7 +62,7 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
62
62
  end
63
63
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
64
64
  end
65
-
65
+
66
66
  begin
67
67
  Fakturoid::Response.new(test_connection.get('account.json'), Fakturoid::Client::Account, :get)
68
68
  rescue Fakturoid::BlockedAccountError => e
@@ -74,7 +74,7 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
74
74
  assert false, 'Exception was expected'
75
75
  end
76
76
  end
77
-
77
+
78
78
  should 'raise destroy subject error' do
79
79
  test_connection = Faraday.new do |builder|
80
80
  builder.adapter :test do |stub|
@@ -82,10 +82,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
82
82
  end
83
83
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
84
84
  end
85
-
85
+
86
86
  assert_raises(Fakturoid::DestroySubjectError) { Fakturoid::Response.new(test_connection.delete('subjects/5.json'), Fakturoid::Client::Subject, :delete) }
87
87
  end
88
-
88
+
89
89
  should 'raise subject limit error' do
90
90
  test_connection = Faraday.new do |builder|
91
91
  builder.adapter :test do |stub|
@@ -93,10 +93,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
93
93
  end
94
94
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
95
95
  end
96
-
96
+
97
97
  assert_raises(Fakturoid::SubjectLimitError) { Fakturoid::Response.new(test_connection.post('subjects.json', name: 'Customer s.r.o.'), Fakturoid::Client::Subject, :post) }
98
98
  end
99
-
99
+
100
100
  should 'raise generator limit error' do
101
101
  test_connection = Faraday.new do |builder|
102
102
  builder.adapter :test do |stub|
@@ -104,10 +104,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
104
104
  end
105
105
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
106
106
  end
107
-
107
+
108
108
  assert_raises(Fakturoid::GeneratorLimitError) { Fakturoid::Response.new(test_connection.post('generators.json', name: 'Customer s.r.o.', recurring: true), Fakturoid::Client::Generator, :post) }
109
109
  end
110
-
110
+
111
111
  should 'raise unsupported feature error' do
112
112
  test_connection = Faraday.new do |builder|
113
113
  builder.adapter :test do |stub|
@@ -115,10 +115,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
115
115
  end
116
116
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
117
117
  end
118
-
118
+
119
119
  assert_raises(Fakturoid::UnsupportedFeatureError) { Fakturoid::Response.new(test_connection.post('invoices/5/message.json', email: 'customer@email.cz'), Fakturoid::Client::Invoice, :post) }
120
120
  end
121
-
121
+
122
122
  should 'raise record not found error' do
123
123
  test_connection = Faraday.new do |builder|
124
124
  builder.adapter :test do |stub|
@@ -126,10 +126,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
126
126
  end
127
127
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
128
128
  end
129
-
129
+
130
130
  assert_raises(Fakturoid::RecordNotFoundError) { Fakturoid::Response.new(test_connection.get('invoices/10.json'), Fakturoid::Client::Invoice, :get) }
131
131
  end
132
-
132
+
133
133
  should 'raise content type error' do
134
134
  test_connection = Faraday.new do |builder|
135
135
  builder.adapter :test do |stub|
@@ -137,10 +137,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
137
137
  end
138
138
  builder.headers = { content_type: 'application/xml', user_agent: 'Fakturoid gem (email@testmail.cz)' }
139
139
  end
140
-
140
+
141
141
  assert_raises(Fakturoid::ContentTypeError) { Fakturoid::Response.new(test_connection.get('invoices/5.xml'), Fakturoid::Client::Invoice, :get) }
142
142
  end
143
-
143
+
144
144
  should 'raise invalid record error' do
145
145
  json = load_fixture('invoice_error.json')
146
146
  test_connection = Faraday.new do |builder|
@@ -149,7 +149,7 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
149
149
  end
150
150
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
151
151
  end
152
-
152
+
153
153
  begin
154
154
  Fakturoid::Response.new(test_connection.patch('invoice/5.json'), Fakturoid::Client::Invoice, :patch)
155
155
  rescue Fakturoid::InvalidRecordError => e
@@ -161,7 +161,7 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
161
161
  assert false, 'Exception was expected'
162
162
  end
163
163
  end
164
-
164
+
165
165
  should 'raise rate limit error' do
166
166
  test_connection = Faraday.new do |builder|
167
167
  builder.adapter :test do |stub|
@@ -169,10 +169,10 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
169
169
  end
170
170
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
171
171
  end
172
-
172
+
173
173
  assert_raises(Fakturoid::RateLimitError) { Fakturoid::Response.new(test_connection.get('invoices/5.json'), Fakturoid::Client::Invoice, :get) }
174
174
  end
175
-
175
+
176
176
  should 'raise read only site error' do
177
177
  test_connection = Faraday.new do |builder|
178
178
  builder.adapter :test do |stub|
@@ -180,7 +180,7 @@ class Fakturoid::ResponseTest < Fakturoid::TestCase
180
180
  end
181
181
  builder.headers = { content_type: 'application/json', user_agent: 'Fakturoid gem (email@testmail.cz)' }
182
182
  end
183
-
183
+
184
184
  assert_raises(Fakturoid::ReadOnlySiteError) { Fakturoid::Response.new(test_connection.delete('invoices/5.json'), Fakturoid::Client::Invoice, :delete) }
185
185
  end
186
186
  end
@@ -9,7 +9,7 @@ module Fakturoid
9
9
  def test_path
10
10
  Pathname.new(File.dirname(__FILE__))
11
11
  end
12
-
12
+
13
13
  def load_fixture(file_name)
14
14
  File.read(test_path.join('fixtures', file_name))
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fakturoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eda Riedl
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-22 00:00:00.000000000 Z
12
+ date: 2017-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
189
  version: '0'
190
190
  requirements: []
191
191
  rubyforge_project:
192
- rubygems_version: 2.4.8
192
+ rubygems_version: 2.6.12
193
193
  signing_key:
194
194
  specification_version: 4
195
195
  summary: Ruby client for web based invoicing service www.fakturoid.cz