Skip to content

Commit 453ce0f

Browse files
committed
Update Inventory Level Resource
The inventory level structure has changed, and the API will now be returning a simplified, flatter response structure. Due to this, the InventoryLevel object needs to be refactored to take into account the new response structure and the new top-level key. This change addresses the need by: * Updating the Inventory Level response fake
1 parent be0f117 commit 453ce0f

4 files changed

Lines changed: 52 additions & 27 deletions

File tree

‎lib/bls/core/resources/inventory_level.rb‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,21 @@ def resources_path
1111
"#{api.base_url}/products/inventory-levels"
1212
end
1313

14+
def to_json
15+
{
16+
sku: sku,
17+
date: date,
18+
distribution_center: distribution_center,
19+
quantity: quantity
20+
}
21+
end
22+
1423
def self.retrieve_all
1524
resource = new
1625
api_client = resource.client
1726
response = api_client.get(path: resource.resources_path)
1827
if response.success?
19-
response.data[:products].map { |product| build(product) }
28+
response.data[:inventory].map { |inventory| build(inventory) }
2029
else
2130
raise ResourceRetrievalError.build(response)
2231
end

‎lib/bls/core/testing/fake.rb‎

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,25 @@ module Testing
66
class Fake
77
def self.configure(*); end
88

9-
class DistributionCenterInventory
10-
def self.create(name: "WEST_COAST", quantity: 100)
11-
OpenStruct.new(distribution_center: name, quantity: quantity)
12-
end
13-
end
14-
159
class InventoryLevel
1610
def self.create(sku: "SKU1", date: Date.today.to_s,
17-
dc_inventory: [DistributionCenterInventory.create])
18-
inventory_level = OpenStruct.new(
19-
date: date,
20-
inventory_by_distribution_center: dc_inventory
21-
)
22-
OpenStruct.new(sku: sku, inventory_levels: [inventory_level])
11+
distribution_center_name: "WEST_COAST",
12+
quantity: 100)
13+
OpenStruct.new(sku: sku, date: date,
14+
distribution_center: distribution_center_name,
15+
quantity: quantity)
16+
end
17+
18+
def self.serialize(sku: "SKU1", date: Date.today.to_s,
19+
distribution_center_name: "WEST_COAST",
20+
quantity: 100)
21+
create(sku: sku, date: date,
22+
distribution_center_name: distribution_center_name,
23+
quantity: quantity).to_h
24+
end
25+
26+
def self.retrieve_all
27+
[Fake::InventoryLevel.create]
2328
end
2429
end
2530

‎spec/core/resources/inventory_level_spec.rb‎

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,26 @@
1111

1212
result = Bls::Core::InventoryLevel.retrieve_all
1313

14-
expect(result.map(&:product_code)).to match_array(product_id)
14+
expect(result.map(&:sku)).to match_array(product_id)
15+
end
16+
end
17+
18+
describe "#to_json" do
19+
it "returns a serialized inventory level" do
20+
level = Bls::Core::InventoryLevel.new(sku: "BLS123",
21+
date: "2026-01-01",
22+
distribution_center: "WEST_COAST",
23+
quantity: 100)
24+
serialized_level = {
25+
sku: "BLS123",
26+
date: "2026-01-01",
27+
distribution_center: "WEST_COAST",
28+
quantity: 100,
29+
}
30+
31+
result = level.to_json
32+
33+
expect(result).to eq(serialized_level)
1534
end
1635
end
1736
end

‎spec/support/fixtures/inventory_levels_response.json‎

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,10 @@
11
{
2-
"products": [
2+
"inventory": [
33
{
4-
"product_code": "MP0527",
5-
"inventory_levels": [
6-
{
7-
"date": "2020-04-19",
8-
"inventory_by_distribution_center": [
9-
{
10-
"distribution_center": "WEST_COAST",
11-
"quantity": "2.0"
12-
}
13-
]
14-
}
15-
]
4+
"sku": "MP0527",
5+
"date": "2020-04-19",
6+
"distribution_center": "WEST_COAST",
7+
"quantity": 2
168
}
179
],
1810
"missing_product_codes": [

0 commit comments

Comments
 (0)