Adjust API endpoint params

This commit is contained in:
Matt-Yorkley
2019-10-04 18:24:46 +01:00
parent ab330e882e
commit c54cff10d4
4 changed files with 21 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
Darkswarm.factory 'Products', (OrderCycleResource, OrderCycle, Shopfront, Dereferencer, Taxons, Properties, Cart, Variants) ->
Darkswarm.factory 'Products', (OrderCycleResource, OrderCycle, Shopfront, currentHub, Dereferencer, Taxons, Properties, Cart, Variants) ->
new class Products
constructor: ->
@update()
@@ -15,7 +15,8 @@ Darkswarm.factory 'Products', (OrderCycleResource, OrderCycle, Shopfront, Derefe
@loading = false
return
params['id'] = OrderCycle.order_cycle.order_cycle_id if params['id'] == undefined
params['id'] = order_cycle_id
params['distributor'] = currentHub.id
OrderCycleResource.products params, (data)=>
@products = [] unless load_more

View File

@@ -8,8 +8,12 @@ module Api
skip_authorization_check
def products
products = OpenFoodNetwork::ProductsRenderer.new(current_distributor, current_order_cycle, params).products_json
# products = ::ProductsFilterer.new(current_distributor, current_customer, products_json).call # TBD
products = OpenFoodNetwork::ProductsRenderer.new(
distributor,
order_cycle,
customer,
params
).products_json
render json: products
rescue OpenFoodNetwork::ProductsRenderer::NoProducts

View File

@@ -12,7 +12,7 @@ module OpenFoodNetwork
end
def products_json
if products
if order_cycle && distributor && products
enterprise_fee_calculator = EnterpriseFeeCalculator.new distributor, order_cycle
ActiveModel::ArraySerializer.new(products,

View File

@@ -12,6 +12,7 @@ describe 'Products service', ->
properties = null
taxons = null
Geo = {}
endpoint = "/api/order_cycles/1/products?distributor=1"
beforeEach ->
product =
@@ -62,60 +63,60 @@ describe 'Products service', ->
$httpBackend = _$httpBackend_
it "Fetches products from the backend on init", ->
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].test).toEqual "cats"
it "dereferences suppliers", ->
Shopfront.producers_by_id =
{id: 9, name: "test"}
$httpBackend.expectGET("/api/order_cycles/1/products").respond([{supplier : {id: 9}, master: {}}])
$httpBackend.expectGET(endpoint).respond([{supplier : {id: 9}, master: {}}])
$httpBackend.flush()
expect(Products.products[0].supplier).toBe Shopfront.producers_by_id["9"]
it "dereferences taxons", ->
product.taxons = [2]
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].taxons[1]).toBe taxons[0]
it "dereferences properties", ->
product.properties_with_values = [1]
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].properties[1]).toBe properties[0]
it "registers variants with Variants service", ->
product.variants = [{id: 1}]
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].variants[0]).toBe Variants.variants[1]
it "stores variant names", ->
product.variants = [{id: 1, name_to_display: "one"}, {id: 2, name_to_display: "two"}]
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].variant_names).toEqual "one two "
it "sets primaryImageOrMissing when no images are provided", ->
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].primaryImage).toBeUndefined()
expect(Products.products[0].primaryImageOrMissing).toEqual "/assets/noimage/small.png"
it "sets largeImage", ->
$httpBackend.expectGET("/api/order_cycles/1/products").respond([productWithImage])
$httpBackend.expectGET(endpoint).respond([productWithImage])
$httpBackend.flush()
expect(Products.products[0].largeImage).toEqual("foo.png")
describe "determining the price to display for a product", ->
it "displays the product price when the product does not have variants", ->
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].price).toEqual 11.00
it "displays the minimum variant price when the product has variants", ->
product.variants = [{price: 22}, {price: 33}]
$httpBackend.expectGET("/api/order_cycles/1/products").respond([product])
$httpBackend.expectGET(endpoint).respond([product])
$httpBackend.flush()
expect(Products.products[0].price).toEqual 22