tophatter-merchant 1.0 → 1.1.1

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: 8de1362487600774b5ef62b300902aa00bcbd078
4
- data.tar.gz: d43f56863dc7cf280b01a85c0a5b4a3fb7de54d6
3
+ metadata.gz: 75730e4724f4e6b9227197c0dada5fa3a273118e
4
+ data.tar.gz: aa6621873c6c3592aa39092166b92204de4bf4d0
5
5
  SHA512:
6
- metadata.gz: ceacd0c967b71400e9c001b6979a804f1f92b4ca18d236fc130c12c24eaac066f6220fe702e902c1de2ccc984d97301c91e7b6586a8422c9f1cfad292b7f0967
7
- data.tar.gz: 3d077e9be766d053332a4708bcfe29b78b4c9398000dbd08fa23b82a6ae55f4f0f3433a7c3234caadbcc52425a588993060185191a0c73c562fa2e8949edc1b3
6
+ metadata.gz: 6b414c775476118e1776c34e1b9eb57d70e73f3c8a94ba49c783d08bd2a65e085a2d3e99b9efa00f522ce3a0af7a124b4b115fb669a59e415be68a15996b3d2d
7
+ data.tar.gz: f616055d289707ca5d633cc624312acf73d66c9c16ad19c9d291d63001398a5d2c0dfb0dcc1b42a1e7ac0036229f6dc62db49018fac884906a9a8091168116b4
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ Gemfile.lock
5
5
  .idea
6
6
  .api_path
7
7
  .access_token
8
+ *.gem
@@ -0,0 +1,32 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.2
3
+
4
+ # [Metrics]
5
+
6
+ Metrics/LineLength:
7
+ Enabled: false
8
+ Metrics/MethodLength:
9
+ Enabled: false
10
+ Metrics/ParameterLists:
11
+ Enabled: false
12
+ # Complexity metrics are difficult to understand and fix, so let's ignore them.
13
+ Metrics/AbcSize:
14
+ Enabled: false
15
+
16
+ # [Lint]
17
+
18
+ # http://www.rubydoc.info/github/bbatsov/rubocop/Rubocop/Cop/Lint/EndAlignment
19
+ Lint/EndAlignment:
20
+ Enabled: false
21
+
22
+ # [Style]
23
+
24
+ # http://www.rubydoc.info/github/bbatsov/rubocop/Rubocop/Cop/Style/Documentation
25
+ Style/Documentation:
26
+ Enabled: false
27
+ # http://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/ElseAlignment
28
+ Style/ElseAlignment:
29
+ Enabled: false
30
+ # http://www.rubydoc.info/github/bbatsov/rubocop/Rubocop/Cop/Style/IndentationWidth
31
+ Style/IndentationWidth:
32
+ Enabled: false
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
- The MIT License
1
+ The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 Tophatter, Inc
3
+ Copyright (c) 2016 Tophatter
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
9
  copies of the Software, and to permit persons to whom the Software is
10
10
  furnished to do so, subject to the following conditions:
11
11
 
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
14
 
15
15
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
16
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
17
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  ### Tophatter Merchant API
2
2
  Full documentation is available [here](https://tophatter.readme.io/v1/docs).
3
3
 
4
+ ### Installation
5
+ ```ruby
6
+ gem 'tophatter-merchant', require: 'tophatter_merchant'
7
+ ```
8
+
4
9
  ### Console Testing (Development)
5
10
  ```bash
6
11
  echo http://tophatter.dev/merchant_api/v1 > .api_host
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0
1
+ 1.1.1
@@ -8,16 +8,19 @@ require 'pry'
8
8
 
9
9
  begin
10
10
  TophatterMerchant.api_path = File.read('.api_path').chomp
11
+ puts "TophatterMerchant.api_path: #{TophatterMerchant.api_path}"
11
12
  rescue Errno::ENOENT
13
+ puts "No .api_path file, using default: #{TophatterMerchant.api_path}"
12
14
  end
13
15
 
14
16
  begin
15
17
  TophatterMerchant.access_token = File.read('.access_token').chomp
18
+ puts "TophatterMerchant.access_token: #{TophatterMerchant.access_token}"
16
19
  rescue Errno::ENOENT
20
+ puts "No .access_token file - you'll have to set TophatterMerchant.access_token manually from the console."
17
21
  end
18
22
 
19
- puts "TophatterMerchant.api_path: #{TophatterMerchant.api_path}"
20
- puts "TophatterMerchant.access_token: #{TophatterMerchant.access_token}"
23
+ TophatterMerchant.logger.level = Logger::DEBUG
21
24
 
22
25
  Pry.config.color = false
23
26
  Pry.start
@@ -1,5 +1,24 @@
1
1
  require 'active_model'
2
2
 
3
+ module TophatterMerchant
4
+ class << self
5
+ attr_accessor :api_path, :access_token, :logger
6
+
7
+ def api_path
8
+ @api_path || 'https://tophatter.com/merchant_api/v1'
9
+ end
10
+
11
+ def logger
12
+ unless defined?(@logger)
13
+ @logger = Logger.new(STDOUT)
14
+ @logger.level = Logger::WARN
15
+ end
16
+
17
+ @logger
18
+ end
19
+ end
20
+ end
21
+
3
22
  require File.dirname(__FILE__) + '/tophatter_merchant/version'
4
23
  require File.dirname(__FILE__) + '/tophatter_merchant/exceptions'
5
24
 
@@ -12,23 +31,3 @@ require File.dirname(__FILE__) + '/tophatter_merchant/metadata'
12
31
  require File.dirname(__FILE__) + '/tophatter_merchant/order'
13
32
  require File.dirname(__FILE__) + '/tophatter_merchant/product'
14
33
  require File.dirname(__FILE__) + '/tophatter_merchant/variation'
15
-
16
- module TophatterMerchant
17
-
18
- def self.access_token
19
- defined?(@@access_token) ? @@access_token : nil
20
- end
21
-
22
- def self.access_token=(token)
23
- @@access_token = token
24
- end
25
-
26
- def self.api_path
27
- defined?(@@api_path) ? @@api_path : 'https://tophatter.com/merchant_api/v1'
28
- end
29
-
30
- def self.api_path=(path)
31
- @@api_path = path
32
- end
33
-
34
- end
@@ -1,6 +1,5 @@
1
1
  module TophatterMerchant
2
2
  class Account < Resource
3
-
4
3
  attr_accessor :access_token, :first_name, :last_name, :store_name, :email, :country, :time_zone
5
4
 
6
5
  def id
@@ -8,7 +7,6 @@ module TophatterMerchant
8
7
  end
9
8
 
10
9
  class << self
11
-
12
10
  # ap TophatterMerchant::Account.schema
13
11
  def schema
14
12
  get(url: "#{path}/schema.json")
@@ -16,10 +14,7 @@ module TophatterMerchant
16
14
 
17
15
  # ap TophatterMerchant::Account.authenticate(email: 'megatron@autobot.com', password: 'ipipip').to_h
18
16
  def authenticate(email:, password:)
19
- Account.new post(url: "#{path}/authenticate.json", params: {
20
- email: email,
21
- password: password
22
- })
17
+ Account.new post(url: "#{path}/authenticate.json", params: { email: email, password: password })
23
18
  end
24
19
 
25
20
  # ap TophatterMerchant::Account.me.to_h
@@ -47,7 +42,6 @@ module TophatterMerchant
47
42
  def path
48
43
  super + '/account'
49
44
  end
50
-
51
45
  end
52
46
  end
53
47
  end
@@ -1,10 +1,8 @@
1
1
  module TophatterMerchant
2
2
  class ApiKey < Resource
3
-
4
3
  attr_accessor :id, :access_token, :created_at
5
4
 
6
5
  class << self
7
-
8
6
  # ap TophatterMerchant::ApiKey.schema
9
7
  def schema
10
8
  get(url: "#{path}/schema.json")
@@ -39,7 +37,6 @@ module TophatterMerchant
39
37
  def path
40
38
  super + '/api_keys'
41
39
  end
42
-
43
40
  end
44
41
  end
45
42
  end
@@ -1,10 +1,8 @@
1
1
  module TophatterMerchant
2
2
  class Image < Resource
3
-
4
3
  attr_accessor :id, :fingerprint, :url
5
4
 
6
5
  class << self
7
-
8
6
  # request = RestClient::Request.new(method: :get, url: 'https://img0.etsystatic.com/101/0/7856452/il_fullxfull.882030160_r0tn.jpg')
9
7
  # response = request.execute
10
8
  # File.open('/tmp/foo.jpg', 'w') { |file| file.write(response.body) }
@@ -18,7 +16,6 @@ module TophatterMerchant
18
16
  def path
19
17
  super + '/images'
20
18
  end
21
-
22
19
  end
23
20
  end
24
21
  end
@@ -1,7 +1,6 @@
1
1
  module TophatterMerchant
2
2
  class Metadata < Resource
3
3
  class << self
4
-
5
4
  # ap TophatterMerchant::Metadata.all
6
5
  def all
7
6
  get(url: "#{path}.json")
@@ -70,7 +69,6 @@ module TophatterMerchant
70
69
  def path
71
70
  super + '/metadata'
72
71
  end
73
-
74
72
  end
75
73
  end
76
74
  end
@@ -1,16 +1,16 @@
1
1
  module TophatterMerchant
2
2
  class Order < Resource
3
-
4
- attr_accessor :order_id, :status
5
- attr_accessor :carrier, :tracking_number
6
- attr_accessor :product_name, :product_identifier, :variation_identifier
7
- attr_accessor :customer_name, :address1, :address2, :city, :state, :postal_code, :country
8
- attr_accessor :available_refunds, :refund_amount
9
- attr_accessor :disbursement_amount, :seller_fees_amount, :seller_fees
10
- attr_accessor :paid_at, :created_at
3
+ attr_accessor :order_id, :status,
4
+ :carrier, :tracking_number,
5
+ :product_name, :product_identifier, :variation_identifier,
6
+ :customer_id, :customer_name,
7
+ :address1, :address2, :city, :state, :postal_code, :country,
8
+ :available_refunds, :refund_amount,
9
+ :disbursement_amount, :seller_fees_amount, :seller_fees,
10
+ :paid_at, :created_at,
11
+ :ca_acknowledged # @FIXME: This shouldn't be here.
11
12
 
12
13
  class << self
13
-
14
14
  # ap TophatterMerchant::Order.schema
15
15
  def schema
16
16
  get(url: "#{path}/schema.json")
@@ -27,18 +27,12 @@ module TophatterMerchant
27
27
 
28
28
  # ap TophatterMerchant::Order.retrieve(681195262).to_h
29
29
  def retrieve(id)
30
- Order.new get(url: "#{path}/retrieve.json", params: {
31
- order_id: id
32
- })
30
+ Order.new get(url: "#{path}/retrieve.json", params: { order_id: id })
33
31
  end
34
32
 
35
33
  # ap TophatterMerchant::Order.fulfill(417953232, carrier: 'other', tracking_number: 'ABC123').to_h
36
34
  def fulfill(id, carrier:, tracking_number:)
37
- Order.new post(url: "#{path}/fulfill.json", params: {
38
- order_id: id,
39
- carrier: carrier,
40
- tracking_number: tracking_number
41
- })
35
+ Order.new post(url: "#{path}/fulfill.json", params: { order_id: id, carrier: carrier, tracking_number: tracking_number })
42
36
  end
43
37
 
44
38
  def unfulfill(id)
@@ -48,12 +42,7 @@ module TophatterMerchant
48
42
  # ap TophatterMerchant::Order.refund(417953232, type: 'full', reason: 'delay_in_shipping').to_h
49
43
  # ap TophatterMerchant::Order.refund(417953232, type: 'partial', reason: 'other', fees: ['shipping_fee']).to_h
50
44
  def refund(id, type:, reason:, fees: [])
51
- Order.new post(url: "#{path}/refund.json", params: {
52
- order_id: id,
53
- type: type,
54
- reason: reason,
55
- fees: fees
56
- })
45
+ Order.new post(url: "#{path}/refund.json", params: { order_id: id, type: type, reason: reason, fees: fees })
57
46
  end
58
47
 
59
48
  protected
@@ -61,7 +50,6 @@ module TophatterMerchant
61
50
  def path
62
51
  super + '/orders'
63
52
  end
64
-
65
53
  end
66
54
  end
67
55
  end
@@ -1,17 +1,16 @@
1
1
  module TophatterMerchant
2
2
  class Product < Resource
3
-
4
- attr_accessor :identifier
5
- attr_accessor :category, :title, :description # Basics
6
- attr_accessor :condition, :brand, :material # Facets
7
- attr_accessor :available_quantity, :variations # Variations
8
- attr_accessor :starting_bid, :buy_now_price, :retail_price, :cost_basis, :minimum_alerts_needed # Pricing
9
- attr_accessor :shipping_origin, :shipping_price, :expedited_shipping_price, :days_to_fulfill, :days_to_deliver, :expedited_days_to_deliver, :weight # Shipping
10
- attr_accessor :buy_one_get_one_price, :accessory_price, :accessory_description # Upsells
11
- attr_accessor :primary_image, :extra_images, :all_images # Images
12
- attr_accessor :slug, :ratings_average, :ratings_count # Ratings
13
- attr_accessor :created_at, :updated_at, :disabled_at, :deleted_at # Timestamps
14
- attr_accessor :blacklisted_at, :admin_hold_at, :slug, :internal_id # Other
3
+ attr_accessor :identifier,
4
+ :category, :title, :description, # Basics
5
+ :condition, :brand, :material, # Facets
6
+ :available_quantity, :variations, # Variations
7
+ :starting_bid, :buy_now_price, :retail_price, :cost_basis, :minimum_alerts_needed, # Pricing
8
+ :shipping_origin, :shipping_price, :expedited_shipping_price, :days_to_fulfill, :days_to_deliver, :expedited_days_to_deliver, :weight, # Shipping
9
+ :buy_one_get_one_price, :accessory_price, :accessory_description, # Upsells
10
+ :primary_image, :extra_images, :all_images, # Images
11
+ :slug, :ratings_average, :ratings_count, # Ratings
12
+ :created_at, :updated_at, :disabled_at, :deleted_at, # Timestamps
13
+ :blacklisted_at, :admin_hold_at, :slug, :internal_id # Other
15
14
 
16
15
  def id
17
16
  created_at.present? ? identifier : nil
@@ -27,15 +26,15 @@ module TophatterMerchant
27
26
  end
28
27
 
29
28
  def copy
30
- attributes = to_h
29
+ hash = to_h
31
30
 
32
- # Delete the attributes that shouldn't be copied.
33
- %w(identifier primary_image extra_images all_images ratings_average ratings_count created_at updated_at disabled_at deleted_at blacklisted_at slug admin_hold_at).each do |attribute|
34
- attributes.delete(attribute)
35
- attributes['variations'].each { |variation| variation.delete(attribute) }
31
+ # Delete the keys that shouldn't be copied.
32
+ %w(identifier primary_image extra_images all_images ratings_average ratings_count created_at updated_at disabled_at deleted_at blacklisted_at slug admin_hold_at).each do |key|
33
+ hash.delete(key)
34
+ hash['variations'].each { |variation| variation.delete(key) }
36
35
  end
37
36
 
38
- Product.new(attributes)
37
+ Product.new(hash)
39
38
  end
40
39
 
41
40
  def to_param
@@ -43,19 +42,13 @@ module TophatterMerchant
43
42
  end
44
43
 
45
44
  class << self
46
-
47
45
  # ap TophatterMerchant::Product.schema
48
46
  def schema
49
47
  get(url: "#{path}/schema.json")
50
48
  end
51
49
 
52
50
  def search(query:, page: 1, per_page: 50, pagination: nil)
53
- result = get(url: "#{path}/search.json", params: {
54
- query: query,
55
- page: page,
56
- per_page: per_page,
57
- pagination: pagination
58
- })
51
+ result = get(url: "#{path}/search.json", params: { query: query, page: page, per_page: per_page, pagination: pagination })
59
52
 
60
53
  if pagination.present?
61
54
  result['results'] = result['results'].map { |hash| Product.new(hash) }
@@ -68,14 +61,7 @@ module TophatterMerchant
68
61
 
69
62
  # ap TophatterMerchant::Product.all.map(&:to_h)
70
63
  def all(status: nil, category: nil, page: 1, per_page: 50, pagination: nil, sort: nil)
71
- result = get(url: "#{path}.json", params: {
72
- status: status,
73
- category: category,
74
- page: page,
75
- per_page: per_page,
76
- pagination: pagination,
77
- sort: sort
78
- })
64
+ result = get(url: "#{path}.json", params: { status: status, category: category, page: page, per_page: per_page, pagination: pagination, sort: sort })
79
65
 
80
66
  if pagination.present?
81
67
  result['results'] = result['results'].map { |hash| Product.new(hash) }
@@ -124,7 +110,6 @@ module TophatterMerchant
124
110
  def path
125
111
  super + '/products'
126
112
  end
127
-
128
113
  end
129
114
  end
130
115
  end
@@ -2,48 +2,39 @@ require 'active_model'
2
2
 
3
3
  module TophatterMerchant
4
4
  class Resource
5
-
6
5
  include ActiveModel::Model
7
6
 
8
- def self.attr_accessor(*vars)
9
- attributes!(*vars)
10
- super(*vars)
11
- end
12
-
13
7
  def initialize(hash)
14
- self.attributes = hash
15
- end
16
-
17
- def attributes=(hash)
8
+ # Only honor valid attributes.
18
9
  hash.each do |key, value|
19
- if respond_to?(key)
20
- self.class.attributes!(key)
10
+ if respond_to?("#{key}=")
21
11
  send("#{key}=", value)
12
+ else
13
+ TophatterMerchant.logger.warn "Invalid attribute #{key} specified for #{self.class.name}"
22
14
  end
23
15
  end
24
16
  end
25
17
 
26
- def to_h
27
- self.class.attributes.keys.collect { |key| [key, send(key)] }.to_h
28
- end
29
-
30
18
  def persisted?
31
- id.present?
19
+ id.present? # @TODO: Should this be internal_id?
32
20
  end
33
21
 
34
- private
35
-
36
- def self.attributes
37
- @attributes || {}
38
- end
39
-
40
- def self.attributes!(*vars)
41
- @attributes ||= {}
42
- vars.map(&:to_s).each { |var| @attributes[var] = true }
43
- @attributes
22
+ def to_h
23
+ self.class.attributes.map { |key| [key, send(key)] }.to_h
44
24
  end
45
25
 
46
26
  class << self
27
+ def attr_accessor(*vars)
28
+ # TophatterMerchant.logger.debug "#{name}: #{vars.inspect} (attr_accessor)"
29
+ @attributes ||= {}
30
+ vars.each { |var| @attributes[var.to_s] = true }
31
+ super(*vars)
32
+ end
33
+
34
+ def attributes
35
+ @attributes ||= {}
36
+ @attributes.keys
37
+ end
47
38
 
48
39
  protected
49
40
 
@@ -64,20 +55,22 @@ module TophatterMerchant
64
55
  end
65
56
 
66
57
  def execute(request)
67
- begin
68
- puts "#{request.method.upcase} #{request.url} #{request.payload.inspect}"
69
- response = request.execute
70
- raise BadContentTypeException.new, "The server didn't return JSON. You probably made a bad request." if response.headers[:content_type] == 'text/html; charset=utf-8'
71
- JSON.parse(response.body)
72
- rescue RestClient::Request::Unauthorized => e
73
- raise UnauthorizedException.new, parse_error(e, e.message)
74
- rescue RestClient::BadRequest => e
75
- raise BadRequestException.new, parse_error(e, e.message)
76
- rescue RestClient::ResourceNotFound => e
77
- raise NotFoundException.new, parse_error(e, 'The API path you requested does not exist.')
78
- rescue RestClient::InternalServerError => e
79
- raise ServerErrorException.new, parse_error(e, 'The server encountered an internal error. This is probably a bug, and you should contact support.')
80
- end
58
+ TophatterMerchant.logger.debug "#{request.method.upcase} #{request.url} #{request.payload.inspect}"
59
+ response = request.execute
60
+ raise BadContentTypeException.new, "The server didn't return JSON. You probably made a bad request." if response.headers[:content_type] == 'text/html; charset=utf-8'
61
+ JSON.parse(response.body)
62
+ rescue RestClient::Request::Unauthorized, RestClient::Forbidden => e
63
+ TophatterMerchant.logger.debug "#{e.class.name}: #{e.response.code} -> raising UnauthorizedException"
64
+ raise UnauthorizedException.new, parse_error(e, e.message)
65
+ rescue RestClient::ResourceNotFound => e
66
+ TophatterMerchant.logger.debug "#{e.class.name}: #{e.response.code} -> raising NotFoundException"
67
+ raise NotFoundException.new, parse_error(e, 'The API path you requested does not exist.')
68
+ rescue RestClient::BadRequest => e
69
+ TophatterMerchant.logger.debug "#{e.class.name}: #{e.response.code} -> raising BadRequestException"
70
+ raise BadRequestException.new, parse_error(e, e.message)
71
+ rescue RestClient::InternalServerError => e
72
+ TophatterMerchant.logger.debug "#{e.class.name}: #{e.response.code} -> raising ServerErrorException"
73
+ raise ServerErrorException.new, parse_error(e, 'The server encountered an internal error. This is probably a bug, and you should contact support.')
81
74
  end
82
75
 
83
76
  def request(method:, url:, params:)
@@ -102,9 +95,9 @@ module TophatterMerchant
102
95
  rescue
103
96
  {}
104
97
  end
105
- raise BadRequestException.new, error['message'] || fallback
106
- end
107
98
 
99
+ error['message'] || fallback
100
+ end
108
101
  end
109
102
  end
110
103
  end
@@ -1,6 +1,5 @@
1
1
  module TophatterMerchant
2
2
  class Variation < Resource
3
-
4
3
  attr_accessor :identifier, :size, :color, :quantity, :created_at
5
4
 
6
5
  def id
@@ -8,7 +7,6 @@ module TophatterMerchant
8
7
  end
9
8
 
10
9
  class << self
11
-
12
10
  # ap TophatterMerchant::Variation.schema
13
11
  def schema
14
12
  get(url: "#{path}/schema.json")
@@ -34,8 +32,6 @@ module TophatterMerchant
34
32
  def path
35
33
  super + '/variations'
36
34
  end
37
-
38
35
  end
39
-
40
36
  end
41
37
  end
@@ -1,3 +1,3 @@
1
1
  module TophatterMerchant
2
- VERSION = '1.0'
2
+ VERSION = '1.1.1'.freeze
3
3
  end
@@ -6,7 +6,6 @@ WebMock.disable_net_connect!(allow_localhost: true)
6
6
 
7
7
  # http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
8
8
  RSpec.configure do |config|
9
-
10
9
  config.expect_with :rspec do |expectations|
11
10
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
12
11
  end
@@ -20,5 +19,4 @@ RSpec.configure do |config|
20
19
  stub_request(:get, /.*conditions\.json/).to_return(File.new(File.dirname(__FILE__) + '/../tmp/stubs/metadata/conditions.json'))
21
20
  stub_request(:get, /.*gemstones\.json/).to_return(File.new(File.dirname(__FILE__) + '/../tmp/stubs/metadata/gemstones.json'))
22
21
  end
23
-
24
22
  end
@@ -2,7 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  # rspec spec/tophatter_merchant/metadata_spec.rb
4
4
  describe TophatterMerchant::Metadata do
5
-
6
5
  it 'returns metadata' do
7
6
  metadata = TophatterMerchant::Metadata.all
8
7
  expect(metadata.keys.include?('categories')).to be true
@@ -34,5 +33,4 @@ describe TophatterMerchant::Metadata do
34
33
  expect(gemstones['Gemstones'].include?('Ruby')).to be true
35
34
  expect(gemstones['Gemstones'].include?("Micheal Jackson's Hair Diamond")).to be false
36
35
  end
37
-
38
36
  end
@@ -2,10 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  # rspec spec/tophatter_merchant/product_spec.rb
4
4
  describe TophatterMerchant::Product do
5
-
6
5
  it 'instantiates' do
7
6
  product = TophatterMerchant::Product.new({})
8
7
  expect(product.persisted?).to be false
9
8
  end
10
-
11
9
  end
@@ -2,6 +2,9 @@
2
2
  $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
3
  require 'tophatter_merchant/version'
4
4
 
5
+ # To publish the next version:
6
+ # gem build tophatter-merchant.gemspec
7
+ # gem push tophatter-merchant-<version>.gem
5
8
  Gem::Specification.new do |s|
6
9
  s.name = 'tophatter-merchant'
7
10
  s.version = TophatterMerchant::VERSION
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tophatter-merchant
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Estreich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-23 00:00:00.000000000 Z
11
+ date: 2016-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -49,6 +49,7 @@ extra_rdoc_files: []
49
49
  files:
50
50
  - ".gitignore"
51
51
  - ".rspec"
52
+ - ".rubocop.yml"
52
53
  - CHANGELOG
53
54
  - Gemfile
54
55
  - LICENSE