Skip to content

Commit

Permalink
Add support Collection#products endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
siddhantbajaj committed Aug 28, 2019
1 parent 14a93e0 commit 58552d3
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
12 changes: 12 additions & 0 deletions lib/shopify_api/resources/collection.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# frozen_string_literal: true

module ShopifyAPI
class Collection < Base
include Events
include Metafields

def products(options = {})
Product.find(:all, from: "#{self.class.prefix}collections/#{id}/products.json", params: options)
end
end
end
30 changes: 30 additions & 0 deletions test/collection_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
require 'test_helper'

class CollectionTest < Test::Unit::TestCase
test "Collection get products gets all products in a collection" do
unstable_version = ShopifyAPI::Session.new(domain: 'shop2.myshopify.com', token: 'token2', api_version: :unstable)
ShopifyAPI::Base.activate_session(unstable_version)

fake(
'collections',
url: 'https://shop2.myshopify.com/admin/api/unstable/collections/1.json',
method: :get,
status: 200,
body: load_fixture('collection'),
extension: false
)

collection = ShopifyAPI::Collection.find(1)

fake(
'products',
url: 'https://shop2.myshopify.com/admin/api/unstable/collections/1/products.json',
method: :get,
status: 200,
body: load_fixture('collection_products'),
extension: false
)
assert_equal [632910392, 921728736], collection.products.map(&:id)
end

end
17 changes: 17 additions & 0 deletions test/fixtures/collection.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"collection": {
"id": 1,
"handle": "test-collection",
"title": "test-collection",
"updated_at": "2016-03-17T16:58:37-04:00",
"body_html": null,
"published_at": "2016-03-17T16:58:37-04:00",
"sort_order": "alpha-asc",
"template_suffix": null,
"published_scope": "global",
"image": {
"created_at": "2016-03-17T16:58:37-04:00",
"src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/collections\/fd43f2c8883f6e9b680e3295fd990d2c.gif?v=1458248317"
}
}
}
47 changes: 47 additions & 0 deletions test/fixtures/collection_products.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"products": [
{
"product_type": "Cult Products",
"handle": "ipod-nano",
"created_at": "2011-10-20T14:05:13-04:00",
"body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.</p>",
"title": "IPod Nano - 8GB",
"template_suffix": null,
"updated_at": "2011-10-20T14:05:13-04:00",
"id": 632910392,
"tags": "Emotive, Flash Memory, MP3, Music",
"images": [
{
"position": 1,
"created_at": "2011-10-20T14:05:13-04:00",
"product_id": 632910392,
"updated_at": "2011-10-20T14:05:13-04:00",
"src": "http://static.shopify.com/s/files/1/6909/3384/products/ipod-nano.png?0",
"id": 850703190
}
],
"vendor": "Apple",
"published_at": "2007-12-31T19:00:00-05:00",
"manually_sorted": true,
"options": [
{
"name": "Title"
}
]
},
{
"product_type": "Cult Products",
"handle": "ipod-touch",
"created_at": "2018-09-26T14:05:13-04:00",
"body_html": "<p>The iPod Touch has the iPhone's multi-touch interface, with a physical home button off the touch screen. The home screen has a list of buttons for the available applications.</p>",
"title": "IPod Touch 8GB",
"template_suffix": null,
"updated_at": "2018-09-26T14:05:13-04:00",
"id": 921728736,
"tags": null,
"vendor": "Apple",
"published_at": "2018-09-26T14:05:13-04:00",
"manually_sorted": true
}
]
}

0 comments on commit 58552d3

Please sign in to comment.