sk_sdk 0.4.0 → 0.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8b37450434521a67d849f242b2687bfe6cee7fe
4
- data.tar.gz: 9bdfed1b7b55e8e14ecdeae80caca207c4abe024
3
+ metadata.gz: 77ef87bd3a416159a37c8a613e0c6ac38cf439c0
4
+ data.tar.gz: 10517502170896710800a0391550bbaf0bc6c1c8
5
5
  SHA512:
6
- metadata.gz: fd0877e811c40bb79a7cf561b4feb9c4ded9c895f4514fae8a373b32742bcc7e68829560829105e5c497aec2bf6cd2f436d4e3a1162621d286198e93a5a4c51a
7
- data.tar.gz: 66efcacd645a14db318fd921d6aa589493ae8443c531d30681b55ba90d5b7ee5340cb99522578750fe05cfbef6107635ffaff23fd951c56a41be94f94e63b98e
6
+ metadata.gz: f5980bc0f780904a60a22f30b8b86049d5850f972f32fce402bde776da122fb12143e82c1c880f0f9d140c8aedee493d4e2bf491abe938e4ac898b131c378322
7
+ data.tar.gz: 6c3ec2afb4b0b59efb00444c3f98bc400bb5ef226829782e7c4b6e41f5436b496436e2c6dc91ff084506c9d90a481901ceda0e71cf57e103942267e60c5d98b2
data/README.rdoc CHANGED
@@ -12,8 +12,8 @@ SalesKing App's(using oAuth2) and API clients.
12
12
  Dependencies (gem's):
13
13
 
14
14
  * activesupport
15
- * activeresource v2.3.x, v3.1+ (v3.0.10 until sk_sdk v0.0.8)
16
- * curb
15
+ * activeresource v3.1+ (v3.0.10 until sk_sdk v0.0.8)
16
+ * httparty
17
17
  * sk_api_schema
18
18
 
19
19
  == Classes
@@ -63,8 +63,8 @@ Before running the specs, add your SalesKing credentials to /spec/settings.yml
63
63
  bundle install
64
64
  rake spec
65
65
 
66
- #test with ARes 2
67
- BUNDLE_GEMFILE=ci/Gemfile_ar2 bundle install
68
- BUNDLE_GEMFILE=ci/Gemfile_ar2 bundle exec rake spec
66
+ #test with ActiveResource 3
67
+ BUNDLE_GEMFILE=ci/Gemfile_ar3 bundle install
68
+ BUNDLE_GEMFILE=ci/Gemfile_ar3 bundle exec rake spec
69
69
 
70
- Copyright (c) 2011 Georg Leciejewski, released under the MIT license
70
+ Copyright (c) 2011-2016 Georg Leciejewski, released under the MIT license
data/Rakefile CHANGED
@@ -1,19 +1,9 @@
1
1
  require 'rake'
2
2
  require 'rspec'
3
3
  require 'rspec/core/rake_task'
4
- require 'rdoc/task'
5
4
  require 'bundler/gem_helper'
6
5
  Bundler::GemHelper.install_tasks
7
6
 
8
7
  desc "Run specs"
9
8
  RSpec::Core::RakeTask.new
10
9
  task :default => :spec
11
-
12
- desc 'Generate documentation.'
13
- Rake::RDocTask.new(:rdoc) do |rdoc|
14
- rdoc.rdoc_dir = 'rdoc'
15
- rdoc.title = 'SalesKing SDK'
16
- rdoc.options << '--line-numbers' << '--inline-source'
17
- rdoc.rdoc_files.include('README')
18
- rdoc.rdoc_files.include('lib/**/*.rb')
19
- end
data/ci/Gemfile_ar3 CHANGED
@@ -1,4 +1,4 @@
1
- source :gemcutter
1
+ source 'https://rubygems.org'
2
2
  gem "rake"
3
3
  gem "rdoc"
4
4
  gem "activesupport", "3.2"
data/ci/Gemfile_ar3.lock CHANGED
@@ -1,5 +1,5 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: https://rubygems.org/
3
3
  specs:
4
4
  activemodel (3.2.0)
5
5
  activesupport (= 3.2.0)
@@ -11,29 +11,34 @@ GEM
11
11
  i18n (~> 0.6)
12
12
  multi_json (~> 1.0)
13
13
  builder (3.0.4)
14
- curb (0.8.5)
14
+ curb (0.9.3)
15
15
  diff-lcs (1.2.5)
16
- docile (1.1.3)
17
- i18n (0.6.9)
18
- json (1.8.1)
19
- multi_json (1.8.4)
20
- rake (10.1.1)
21
- rdoc (4.1.1)
16
+ docile (1.1.5)
17
+ i18n (0.7.0)
18
+ json (1.8.3)
19
+ multi_json (1.11.3)
20
+ rake (11.1.2)
21
+ rdoc (4.2.2)
22
22
  json (~> 1.4)
23
- rspec (2.14.1)
24
- rspec-core (~> 2.14.0)
25
- rspec-expectations (~> 2.14.0)
26
- rspec-mocks (~> 2.14.0)
27
- rspec-core (2.14.7)
28
- rspec-expectations (2.14.5)
29
- diff-lcs (>= 1.1.3, < 2.0)
30
- rspec-mocks (2.14.5)
31
- simplecov (0.8.2)
23
+ rspec (3.4.0)
24
+ rspec-core (~> 3.4.0)
25
+ rspec-expectations (~> 3.4.0)
26
+ rspec-mocks (~> 3.4.0)
27
+ rspec-core (3.4.4)
28
+ rspec-support (~> 3.4.0)
29
+ rspec-expectations (3.4.0)
30
+ diff-lcs (>= 1.2.0, < 2.0)
31
+ rspec-support (~> 3.4.0)
32
+ rspec-mocks (3.4.1)
33
+ diff-lcs (>= 1.2.0, < 2.0)
34
+ rspec-support (~> 3.4.0)
35
+ rspec-support (3.4.1)
36
+ simplecov (0.11.2)
32
37
  docile (~> 1.1.0)
33
- multi_json
34
- simplecov-html (~> 0.8.0)
35
- simplecov-html (0.8.0)
36
- sk_api_schema (0.9.4)
38
+ json (~> 1.8)
39
+ simplecov-html (~> 0.10.0)
40
+ simplecov-html (0.10.0)
41
+ sk_api_schema (0.10.6)
37
42
  activesupport
38
43
 
39
44
  PLATFORMS
@@ -48,3 +53,6 @@ DEPENDENCIES
48
53
  rspec
49
54
  simplecov
50
55
  sk_api_schema
56
+
57
+ BUNDLED WITH
58
+ 1.11.2
data/lib/sk_sdk/base.rb CHANGED
@@ -4,13 +4,10 @@ require 'active_resource'
4
4
  require 'active_resource/version'
5
5
  # patches are for specific AR version
6
6
  case ActiveResource::VERSION::MAJOR
7
- when 2
8
- require 'sk_sdk/ar_patches/ar2/validations'
9
- require 'sk_sdk/ar_patches/ar2/base'
10
7
  when 3
11
8
  require 'sk_sdk/ar_patches/ar3/base'
12
9
  require 'sk_sdk/ar_patches/ar3/validations'
13
- when 4
10
+ when 4,5
14
11
  require 'sk_sdk/ar_patches/ar4/validations'
15
12
  require 'sk_sdk/ar_patches/ar4/base'
16
13
  end
@@ -44,7 +41,7 @@ class SK::SDK::Base < ActiveResource::Base
44
41
  # @option [String] :password if using httpBasic sk user password
45
42
  def self.set_connection(opts)
46
43
  self.site = site_api_url(opts[:site])
47
- self.format = :json # f*** xml
44
+ self.format = :json
48
45
  if opts[:token] #oAuth access token in header
49
46
  self.headers['Authorization'] = "Bearer #{opts[:token]}"
50
47
  else
data/lib/sk_sdk/oauth.rb CHANGED
@@ -1,10 +1,21 @@
1
1
  require 'cgi'
2
- require 'curb'
3
2
  require 'sk_sdk'
4
3
 
5
4
  module SK::SDK
6
5
  # Authenticate your SalesKing App using oAuth2. This class provides helpers
7
- # to create the token & dialog url and to get an access token
6
+ # to create the token & dialog url and build the params to get an access token.
7
+ # ==Example
8
+ # Using httparty gem:
9
+ #
10
+ # require 'sk_sdk/oauth'
11
+ # require 'httparty'
12
+ #
13
+ # auth = SK::SDK::Oauth.new(sk_app_settings)
14
+ # resp = HTTParty.post( auth.token_url,
15
+ # body: auth.token_params(code),
16
+ # basic_auth: auth.basic_params )
17
+ # Of course you can use curb or any other http lib. Just make sure to read
18
+ # their docs about POST params, HTTP BASIC Auth and https handling
8
19
  class Oauth
9
20
 
10
21
  attr_reader :id, :secret, :redirect_url
@@ -49,30 +60,25 @@ module SK::SDK
49
60
  # URL to get the access_token, used in the second step after you have
50
61
  # requested the authorization and gotten a code
51
62
  # The token url is located at /oauth/token
52
- #
53
- # @param [String] code received after auth
54
- # @return [String] Url with parameter
55
- def token_url(code)
56
- params = { :client_id => @id,
57
- :client_secret => @secret,
58
- :redirect_uri => @redirect_url,
59
- :code => code }
60
- "#{sk_url}/oauth/token?#{to_url_params(params)}"
63
+ def token_url
64
+ "#{sk_url}/oauth/token"
65
+ end
66
+
67
+ # Params used in the POST request to /token e.g see httparty example on top.
68
+ # Using the client_secret in the params is DEPRECATED. Instead use HTTP Basic
69
+ # Auth header with client_id:client_secret like provided by #basic_params
70
+ # @returns[Hash] params used to get the real access-token
71
+ # @param [String] code to exchange for the access token
72
+ def token_params(code)
73
+ { client_id: @id,
74
+ grant_type: 'authorization_code',
75
+ redirect_uri: CGI::escape(@redirect_url),
76
+ code: code }
61
77
  end
62
78
 
63
- # Makes a GET request to the access_token endpoint in SK and receives the
64
- # access token
65
- # @param [String] code request token
66
- # @return [Hash{String=>String}] access token
67
- def get_token(code)
68
- c = Curl::Easy.new( token_url( code ) )
69
- if sk_url[/dev\.salesking.eu/] # as long as we are using a self signed cert
70
- c.ssl_verify_host = false
71
- c.ssl_verify_peer = false
72
- end
73
- c.http_get
74
- # grab token from response body
75
- ActiveSupport::JSON.decode(c.body_str)
79
+ # HTTP BASIC Auth Params used in the POST request to /token e.g with httparty
80
+ def basic_params
81
+ { username: @id, password: @secret }
76
82
  end
77
83
 
78
84
  # @return [String] base api url my-sub.salesking.eu/api
@@ -81,10 +87,11 @@ module SK::SDK
81
87
  end
82
88
 
83
89
  # Each company has it's own subdomain so the url must be dynamic.
84
- # This is achieved by replacing the * with the subdomain in the instance
85
- #
90
+ # This is achieved by replacing the * with the subdomain in the instance if
91
+ # a sub_domain was given. Else the SalesKing domain MUST include the subdomain
86
92
  # @return [String] url
87
93
  def sk_url
94
+ return @sk_url unless sub_domain
88
95
  @sk_url.gsub('*', sub_domain).gsub(/\/\z/, '' )
89
96
  end
90
97
 
@@ -1,5 +1,5 @@
1
1
  module SK
2
2
  module SDK
3
- VERSION = '0.4.0'
3
+ VERSION = '0.4.1'
4
4
  end
5
5
  end
data/sk_sdk.gemspec CHANGED
@@ -4,23 +4,19 @@ require 'sk_sdk/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'sk_sdk'
7
- s.date = %q{2012-05-27}
8
7
  s.version = SK::SDK::VERSION
9
8
  s.authors = ['Georg Leciejewski', 'Mike Poltyn']
10
- s.email = ['gl@salesking.eu']
9
+ s.email = 'gl@salesking.eu'
11
10
  s.homepage = 'http://github.com/salesking/sk_sdk'
12
11
  s.summary = %q{SalesKing Ruby SDK - simplify your Business}
13
12
  s.description = %q{Connect your business with SalesKing. This gem gives ruby developers a jump-start for building SalesKing Business Apps. It provides classes to handle oAuth, make RESTfull API requests and parses JSON Schema }
14
- s.extra_rdoc_files = ['README.rdoc']
15
- s.rubygems_version = %q{1.6.2}
16
13
  s.license = 'MIT'
17
14
 
18
- s.files = `git ls-files`.split("\n")
19
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
+ s.files = `git ls-files -z`.split("\x0").reject{|i| i[/^docs\//] }
16
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
21
18
  s.require_paths = ['lib']
22
19
 
23
- s.add_runtime_dependency 'curb'
24
20
  s.add_runtime_dependency 'activesupport'
25
21
  s.add_runtime_dependency 'activeresource'
26
22
  s.add_runtime_dependency 'sk_api_schema'
@@ -28,5 +24,4 @@ Gem::Specification.new do |s|
28
24
  s.add_development_dependency 'rake'
29
25
  s.add_development_dependency 'simplecov'
30
26
  s.add_development_dependency 'rspec'
31
- s.add_development_dependency 'rdoc'
32
27
  end
@@ -31,16 +31,16 @@ describe SK::SDK::Base, "make new class" do
31
31
 
32
32
  it "should create save method" do
33
33
  c = Contact.new
34
- c.respond_to?(:save).should be_true
34
+ c.respond_to?(:save).should be true
35
35
  end
36
36
 
37
37
  it "should have new_record?" do
38
38
  c = Contact.new
39
- c.new_record?.should be_true
39
+ c.new_record?.should be true
40
40
  i = KingTester::Invoice.new
41
- i.new_record?.should be_true
41
+ i.new_record?.should be true
42
42
  p = KingTester::Product.new
43
- p.new_record?.should be_true
43
+ p.new_record?.should be true
44
44
  end
45
45
 
46
46
  it "should allow multiple parameters in initializer" do
@@ -50,7 +50,7 @@ describe SK::SDK::Base, "make new class" do
50
50
  else
51
51
  Contact.new({ :first_name => 'herbert' })
52
52
  end
53
- }.should_not raise_error(ArgumentError)
53
+ }.to_not raise_error(ArgumentError)
54
54
  end
55
55
 
56
56
  end
@@ -16,7 +16,7 @@ describe SK::SDK::Oauth, "in general" do
16
16
  a.sub_domain = 'alki'
17
17
  a.sk_url.should == "http://alki.horsts-lokal.local"
18
18
  end
19
-
19
+
20
20
  it "should get salesking api url" do
21
21
  a = SK::SDK::Oauth.new(@set)
22
22
  a.sub_domain = 'alki'
@@ -38,13 +38,19 @@ describe SK::SDK::Oauth, "in general" do
38
38
  a.sk_canvas_url.should == "http://alki.horsts-lokal.local/app/canvas-page"
39
39
  end
40
40
 
41
- it "should get token_url" do
41
+ it "has token_url" do
42
42
  a = SK::SDK::Oauth.new(@set)
43
43
  a.sub_domain = 'alki'
44
- url = a.token_url('some-code')
45
- url.should include @set['id']
46
- url.should include @set['secret']
47
- url.should include CGI::escape @set['redirect_url']
44
+ a.token_url.should == "http://alki.horsts-lokal.local/oauth/token"
45
+ end
46
+
47
+ it "has token_params" do
48
+ a = SK::SDK::Oauth.new(@set)
49
+ res = a.token_params('123')
50
+ res[:code].should == '123'
51
+ res[:client_id].should == @set['id']
52
+ res[:grant_type].should == 'authorization_code'
53
+ res[:redirect_uri].should == CGI::escape(@set['redirect_url'])
48
54
  end
49
55
 
50
56
  end
@@ -21,7 +21,7 @@ else
21
21
 
22
22
  it "should save" do
23
23
  c = Contact.new :organisation=>"Rack'n Roll", :type => 'Client'
24
- c.save.should be_true
24
+ c.save.should be true
25
25
  c.id.should_not be_empty
26
26
  c.number.should_not be_empty
27
27
  c.destroy
@@ -42,7 +42,6 @@ else
42
42
 
43
43
  it "should find contacts" do
44
44
  contacts = Contact.find(:all)
45
- ActiveResource::Collection
46
45
  contacts.length.should > 0
47
46
  end
48
47
  end
@@ -96,6 +95,4 @@ else
96
95
  @contact.addresses.length.should == cnt_before-1
97
96
  end
98
97
  end
99
-
100
-
101
98
  end
@@ -9,11 +9,11 @@ else
9
9
  before :all do
10
10
  #setup test doc to work with
11
11
  @contact = Contact.new(:type=>'Supplier', :organisation=>'Credit Note API-Tester')
12
- @contact.save.should be_true
12
+ @contact.save.should be true
13
13
  @doc = CreditNote.new()
14
14
  @doc.title = 'A Document from the API'
15
15
  @doc.contact_id = @contact.id
16
- @doc.save.should be_true
16
+ @doc.save.should be true
17
17
  end
18
18
 
19
19
  after :all do
@@ -23,7 +23,7 @@ else
23
23
  it "should create a doc and use default before after text" do
24
24
  @doc.errors.should be_empty
25
25
  @doc.notes_before.should_not be_empty
26
- @doc.new?.should be_false
26
+ @doc.new?.should be false
27
27
  end
28
28
 
29
29
  it "should fail create a doc without unique number" do
@@ -52,7 +52,7 @@ else
52
52
  @doc.notes_before = 'Payment made to you bank Account'
53
53
  @doc.title = 'Changed doc title'
54
54
 
55
- @doc.save.should be_true
55
+ @doc.save.should be true
56
56
  @doc.lock_version.should > old_lock_version # because save returns the data
57
57
  end
58
58
 
@@ -76,12 +76,12 @@ else
76
76
 
77
77
  before :all do
78
78
  @contact =Contact.new(:type=>'Supplier', :organisation=>'Credit Note API-Tester')
79
- @contact.save.should be_true
79
+ @contact.save.should be true
80
80
  #setup test doc to work with
81
81
  @doc = CreditNote.new :contact_id => @contact.id,
82
82
  :line_items =>[{ :position=>1, :description => 'Pork Chops',
83
83
  :quantity => 12, :price_single =>'10.00'}]
84
- @doc.save.should be_true
84
+ @doc.save.should be true
85
85
  end
86
86
 
87
87
  after :all do
@@ -127,7 +127,7 @@ else
127
127
  end
128
128
 
129
129
  it "should update from draft to open and set number with date" do
130
- @doc.save.should be_true
130
+ @doc.save.should be true
131
131
  @doc.status.should == 'draft'
132
132
 
133
133
  @doc.status = 'open'
@@ -10,11 +10,11 @@ describe Invoice do
10
10
 
11
11
  before :all do
12
12
  @contact = Contact.new(:type=>'Client', :organisation=>'Invoice API-Tester')
13
- @contact.save.should be_true
13
+ @contact.save.should be true
14
14
  @doc = Invoice.new()
15
15
  @doc.title = 'A Document from the API'
16
16
  @doc.contact_id = @contact.id
17
- @doc.save.should be_true
17
+ @doc.save.should be true
18
18
  end
19
19
 
20
20
  after :all do
@@ -31,7 +31,7 @@ describe Invoice do
31
31
 
32
32
  before :all do
33
33
  @contact = Contact.new(:type=>'Client', :organisation=>'Invoice API-Tester')
34
- @contact.save.should be_true
34
+ @contact.save.should be true
35
35
  end
36
36
  after :all do
37
37
  @contact.destroy
@@ -43,9 +43,9 @@ describe Invoice do
43
43
  doc.notes_before = 'Your shiny new invoice [number]'
44
44
  doc.notes_after = 'Please pay me'
45
45
  doc.contact_id = @contact.id
46
- doc.save.should be_true
46
+ doc.save.should be true
47
47
  doc.errors.should be_empty
48
- doc.new?.should be_false
48
+ doc.new?.should be false
49
49
  doc.notes_before.should == 'Your shiny new invoice [number]'
50
50
  doc.destroy
51
51
  end
@@ -56,7 +56,7 @@ describe Invoice do
56
56
  doc.contact_id = @contact.id
57
57
  doc.save
58
58
  doc.errors.should be_empty
59
- doc.new?.should be_false
59
+ doc.new?.should be false
60
60
  doc.notes_before.should_not be_empty
61
61
  doc.destroy
62
62
  end
@@ -85,12 +85,12 @@ describe Invoice do
85
85
  #setup test doc to work with
86
86
  # create client
87
87
  @contact = Contact.new(:type=>'Client', :organisation=>'Invoice API-Tester')
88
- @contact.save.should be_true
88
+ @contact.save.should be true
89
89
  @doc = Invoice.new
90
90
  @doc.title = 'A Document from the API'
91
91
  @doc.notes_before = 'Your invoice [number]'
92
92
  @doc.contact_id = @contact.id
93
- @doc.save.should be_true
93
+ @doc.save.should be true
94
94
  end
95
95
 
96
96
  after :all do
@@ -104,7 +104,7 @@ describe Invoice do
104
104
  @doc.notes_after = 'Payment made to you bank Account'
105
105
  @doc.title = 'Changed doc title'
106
106
 
107
- @doc.save.should be_true
107
+ @doc.save.should be true
108
108
  @doc.lock_version.should > old_lock_version # because save returns the data
109
109
  @doc.notes_before.should == 'You will recieve the amout of:'
110
110
  end
@@ -129,12 +129,12 @@ describe Invoice do
129
129
 
130
130
  before :all do
131
131
  @contact = Contact.new(:type=>'Client', :organisation=>'Credit Note API-Tester')
132
- @contact.save.should be_true
132
+ @contact.save.should be true
133
133
  #setup test doc to work with
134
134
  @doc = Invoice.new(:contact_id => @contact.id,
135
135
  :line_items => [{ :position=>1, :description => 'Pork Chops',
136
136
  :quantity => 12, :price_single =>'10.00' }] )
137
- @doc.save.should be_true
137
+ @doc.save.should be true
138
138
  end
139
139
 
140
140
  after :all do
@@ -157,7 +157,7 @@ describe Invoice do
157
157
  it 'should add line item' do
158
158
  item = LineItem.new( { :position=>2, :description => 'Goat-Pie', :price_single => 10, :quantity=>10} )
159
159
  product = Product.new(:name=>'Eis am Stiel', :price => 1.50, :tax=>19, :description => 'Mmmhh lecker Eis')
160
- product.save.should be_true
160
+ product.save.should be true
161
161
  item1 = LineItem.new( { :position=>3, :use_product => 1, :product_id=> product.id, :quantity => 10 } )
162
162
  @doc.line_items << item
163
163
  @doc.line_items << item1
@@ -172,7 +172,7 @@ describe Invoice do
172
172
  describe 'with items of different type' do
173
173
  before :each do
174
174
  @contact = Contact.new(:type=>'Client', :organisation=>'Credit Note API-Tester')
175
- @contact.save.should be_true
175
+ @contact.save.should be true
176
176
  @doc = Invoice.new(:contact_id => @contact.id)
177
177
  end
178
178
 
@@ -189,7 +189,7 @@ describe Invoice do
189
189
  { :position=>4, :name => 'Pork Chops', :price_single =>0, :type=>'LineItem' },
190
190
  { :position=>5, :name => 'Pork Chops', :price_single =>0.0, :type=>'LineItem' },
191
191
  ]
192
- @doc.save.should be_true
192
+ @doc.save.should be true
193
193
  @doc.items.length.should == 5
194
194
  @doc.gross_total.should == 0.0
195
195
  end
@@ -201,7 +201,7 @@ describe Invoice do
201
201
  { :position=>2, :name => 'Yummi Beef', :type=>'DividerItem' },
202
202
  { :position=>3, :name => 'Beef Jerky', :description=> 'Jaw Breaker',:quantity => 1, :price_single =>'10.00', :type=>'LineItem' }
203
203
  ]
204
- @doc.save.should be_true
204
+ @doc.save.should be true
205
205
  @doc.items.length.should == 4
206
206
  @doc.gross_total.should == 130.0
207
207
  end
@@ -214,7 +214,7 @@ describe Invoice do
214
214
  { :divider_item => { :position=>2, :name => 'Yummi Beef', :type=>'DividerItem' }},
215
215
  { :line_item => { :position=>3, :name => 'Beef Jerky', :description=> 'Jaw Breaker',:quantity => 1, :price_single =>'10.00' }}
216
216
  ]
217
- @doc.save.should be_true
217
+ @doc.save.should be true
218
218
  @doc.items.length.should == 4
219
219
  @doc.gross_total.should == 130.0
220
220
  end
@@ -223,7 +223,7 @@ describe Invoice do
223
223
  describe 'with items and line_items' do
224
224
  before :all do
225
225
  @contact = Contact.new(:type=>'Client', :organisation=>'Credit Note API-Tester')
226
- @contact.save.should be_true
226
+ @contact.save.should be true
227
227
  @doc = Invoice.new(:contact_id => @contact.id)
228
228
  end
229
229
 
@@ -234,7 +234,7 @@ describe Invoice do
234
234
  it 'should prefer line_items over items when both are present' do
235
235
  @doc.items = [LineItem.new( :position=>12, :name => 'dropped', :quantity => 1, :price_single =>1, :type=>'LineItem' )]
236
236
  @doc.line_items = [LineItem.new( :position=>12, :name => 'added', :quantity => 1, :price_single =>10, :type=>'LineItem' )]
237
- @doc.save.should be_true
237
+ @doc.save.should be true
238
238
  @doc.items.length.should == 1
239
239
  @doc.gross_total.should == 10.0
240
240
  end
@@ -242,13 +242,13 @@ describe Invoice do
242
242
  it 'should manually remove line_items so items are used on update' do
243
243
  # first save so AR loads both(items/line_items) from response
244
244
  @doc.items = [ { :position=>1, :name => 'Pork Chops', :quantity => 1, :price_single =>'10.00', :type=>'LineItem' }]
245
- @doc.save.should be_true
245
+ @doc.save.should be true
246
246
  @doc.gross_total.should == 10.0
247
247
  # edit
248
248
  @doc.items << LineItem.new( :position=>2, :name => 'Puppy Seeds', :quantity => 1, :price_single =>1, :type=>'LineItem' )
249
249
  @doc.line_items = nil # <= IMPORTANT part
250
250
 
251
- @doc.save.should be_true
251
+ @doc.save.should be true
252
252
  @doc.items.length.should == 2
253
253
  @doc.gross_total.should == 11.0
254
254
  end
@@ -8,11 +8,11 @@ describe Payment do
8
8
 
9
9
  before :all do
10
10
  @contact = Contact.new(:type=>'Client', :organisation=>'Payment API-Tester')
11
- @contact.save.should be_true
11
+ @contact.save.should be true
12
12
  @doc = Invoice.new
13
13
  @doc.title = 'A Document from the API for payment testing'
14
14
  @doc.contact_id = @contact.id
15
- @doc.save.should be_true
15
+ @doc.save.should be true
16
16
  end
17
17
 
18
18
  after :all do
@@ -67,7 +67,7 @@ describe Payment do
67
67
  it "should create" do
68
68
  # relation MUST be set
69
69
  p = Payment.new :amount => 12.34, :related_object_id=>@doc.id
70
- p.save.should be_true
70
+ p.save.should be true
71
71
 
72
72
  payments = Payment.send( :instantiate_collection, @doc.get(:payments))
73
73
  payments.map(&:amount).should include 12.34
@@ -9,7 +9,7 @@ else
9
9
  before :all do
10
10
  #setup test product to work with
11
11
  @product = Product.new(:name=>'Eis am Stiel', :price => 1.50)
12
- @product.save.should be_true
12
+ @product.save.should be true
13
13
  end
14
14
 
15
15
  after :all do
@@ -23,7 +23,7 @@ else
23
23
  it "should create a product" do
24
24
  @product.number.should_not be_nil
25
25
  @product.price.should == 1.50
26
- @product.new?.should be_false
26
+ @product.new?.should be false
27
27
  end
28
28
 
29
29
  it "should fail create a product without name" do
@@ -35,7 +35,7 @@ else
35
35
 
36
36
  it "should fail create a product with empty price" do
37
37
  product = Product.new(:name => 'No brain', :price =>' ')
38
- product.save.should be_false
38
+ product.save.should be false
39
39
  product.errors.full_messages.should == ["Price can't be blank", "Price is not a number"]
40
40
  end
41
41
 
@@ -20,12 +20,12 @@ describe SK::SDK::Sync do
20
20
  end
21
21
 
22
22
  it "should not be outdated" do
23
- @sync.outdated?.should be_false # both objects are empty
23
+ @sync.outdated?.should be false # both objects are empty
24
24
  end
25
25
 
26
26
  it "should find outdated fields" do
27
27
  @l_obj.firstname = 'theo'
28
- @sync.outdated?.should be_true
28
+ @sync.outdated?.should be true
29
29
  @sync.outdated.first.should == @sync.field(:firstname)
30
30
  end
31
31
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sk_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Leciejewski
@@ -9,22 +9,8 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-27 00:00:00.000000000 Z
12
+ date: 2017-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: curb
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: activesupport
30
16
  requirement: !ruby/object:Gem::Requirement
@@ -109,44 +95,23 @@ dependencies:
109
95
  - - ">="
110
96
  - !ruby/object:Gem::Version
111
97
  version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: rdoc
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
98
  description: 'Connect your business with SalesKing. This gem gives ruby developers
127
99
  a jump-start for building SalesKing Business Apps. It provides classes to handle
128
100
  oAuth, make RESTfull API requests and parses JSON Schema '
129
- email:
130
- - gl@salesking.eu
101
+ email: gl@salesking.eu
131
102
  executables: []
132
103
  extensions: []
133
- extra_rdoc_files:
134
- - README.rdoc
104
+ extra_rdoc_files: []
135
105
  files:
136
106
  - ".gitignore"
137
- - ".travis.yml"
138
107
  - Gemfile
139
108
  - MIT-LICENSE
140
109
  - README.rdoc
141
110
  - Rakefile
142
- - ci/Gemfile_ar2
143
- - ci/Gemfile_ar2.lock
144
111
  - ci/Gemfile_ar3
145
112
  - ci/Gemfile_ar3.lock
146
113
  - lib/sk_sdk.rb
147
114
  - lib/sk_sdk/README.rdoc
148
- - lib/sk_sdk/ar_patches/ar2/base.rb
149
- - lib/sk_sdk/ar_patches/ar2/validations.rb
150
115
  - lib/sk_sdk/ar_patches/ar3/base.rb
151
116
  - lib/sk_sdk/ar_patches/ar3/validations.rb
152
117
  - lib/sk_sdk/ar_patches/ar4/base.rb
@@ -193,8 +158,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
158
  version: '0'
194
159
  requirements: []
195
160
  rubyforge_project:
196
- rubygems_version: 2.2.2
161
+ rubygems_version: 2.4.8
197
162
  signing_key:
198
163
  specification_version: 4
199
164
  summary: SalesKing Ruby SDK - simplify your Business
200
- test_files: []
165
+ test_files:
166
+ - spec/resources_spec_helper.rb
167
+ - spec/settings.yml.default
168
+ - spec/sk_sdk/base_spec.rb
169
+ - spec/sk_sdk/oauth_spec.rb
170
+ - spec/sk_sdk/resources/README.rdoc
171
+ - spec/sk_sdk/resources/contacts_spec.rb
172
+ - spec/sk_sdk/resources/credit_note_spec.rb
173
+ - spec/sk_sdk/resources/invoice_spec.rb
174
+ - spec/sk_sdk/resources/payment_spec.rb
175
+ - spec/sk_sdk/resources/product_spec.rb
176
+ - spec/sk_sdk/signed_request_spec.rb
177
+ - spec/sk_sdk/sync_field_spec.rb
178
+ - spec/sk_sdk/sync_spec.rb
179
+ - spec/spec_helper.rb
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- # Sorry no travis since you need a private sk login .. too bad
2
- rvm:
3
- - 1.8.7
4
- - 1.9.2
5
- gemfile:
6
- - Gemfile
7
- - ci/Gemfile_ar2
data/ci/Gemfile_ar2 DELETED
@@ -1,11 +0,0 @@
1
- source :gemcutter
2
- gem "rake"
3
- gem "rdoc"
4
- gem "activesupport", "2.3.14"
5
- gem "activeresource", "2.3.14"
6
- gem "sk_api_schema"
7
- gem "curb"
8
- group :test do
9
- gem "rspec"
10
- gem "simplecov"
11
- end
data/ci/Gemfile_ar2.lock DELETED
@@ -1,38 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- activeresource (2.3.14)
5
- activesupport (= 2.3.14)
6
- activesupport (2.3.14)
7
- curb (0.7.15)
8
- diff-lcs (1.1.3)
9
- multi_json (1.3.5)
10
- rake (0.9.2)
11
- rdoc (3.9.4)
12
- rspec (2.6.0)
13
- rspec-core (~> 2.6.0)
14
- rspec-expectations (~> 2.6.0)
15
- rspec-mocks (~> 2.6.0)
16
- rspec-core (2.6.4)
17
- rspec-expectations (2.6.0)
18
- diff-lcs (~> 1.1.2)
19
- rspec-mocks (2.6.0)
20
- simplecov (0.6.4)
21
- multi_json (~> 1.0)
22
- simplecov-html (~> 0.5.3)
23
- simplecov-html (0.5.3)
24
- sk_api_schema (0.2.4)
25
- activesupport
26
-
27
- PLATFORMS
28
- ruby
29
-
30
- DEPENDENCIES
31
- activeresource (= 2.3.14)
32
- activesupport (= 2.3.14)
33
- curb
34
- rake
35
- rdoc
36
- rspec
37
- simplecov
38
- sk_api_schema
@@ -1,46 +0,0 @@
1
- #temp patch as_json on decimals introduced by rails. which collpases with ruby-yail
2
- class BigDecimal
3
- def as_json
4
- self.to_f
5
- end
6
- end
7
-
8
- module ActiveResource
9
- # Overridden methods to suit SalesKing.
10
- # Some changes might be kicked when AR 3.0 is out
11
- class Base
12
-
13
- # override encode because json is also returned nested by SalesKing
14
- def encode(options={})
15
- case self.class.format
16
- when ActiveResource::Formats[:xml]
17
- self.class.format.encode(attributes, {:root => self.class.element_name}.merge(options))
18
- else # json also nested
19
- self.class.format.encode( {self.class.element_name => attributes}, options)
20
- end
21
- end
22
-
23
- # override ARes method to parse only the object part
24
- def load_attributes_from_response(response)
25
- if response['Content-Length'] != "0" && response.body.strip.size > 0
26
- load( self.class.format.decode(response.body)[self.class.element_name] )
27
- if self.respond_to?(:items)
28
- # move double nested items up
29
- new_items = []
30
- self.items.each { |item| new_items << item.attributes.first[1] }
31
- self.items = new_items
32
- end
33
- end
34
- end
35
-
36
- # Overridden to grab the data(= clients-collection) from json:
37
- # { 'collection'=> will_paginate infos,
38
- # 'links' => prev/next links
39
- # 'clients'=> [data], << what we need
40
- # }
41
- def self.instantiate_collection(collection, prefix_options = {})
42
- collection = collection[ self.element_name.pluralize ] if collection.is_a?(Hash)
43
- collection.collect! { |record| instantiate_record(record, prefix_options) }
44
- end
45
- end
46
- end
@@ -1,30 +0,0 @@
1
- module ActiveResource
2
-
3
- module Validations
4
- # Validate a resource and save (POST) it to the remote web service.
5
- def save_with_validation
6
- save_without_validation
7
- true
8
- rescue ResourceInvalid => error
9
- case error.response['Content-Type']
10
- when /xml/ #PATCH
11
- errors.from_xml(error.response.body)
12
- when /json/ #PATCH
13
- errors.from_json(error.response.body)
14
- end
15
- false
16
- end
17
- end
18
-
19
- class Errors
20
-
21
- # Patched cause we dont need no attribute name magic .. and its just simpler
22
- def from_array(messages)
23
- clear
24
- messages.each do |msg|
25
- add msg[0], msg[1]
26
- end
27
- end
28
- end #Errors
29
-
30
- end