Files
ozon-api-client/ozon/products_test.go
diPhantxm ca40ab4559 initial
2023-03-12 22:37:40 +03:00

262 lines
7.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package ozon
import (
"net/http"
"testing"
core "github.com/diphantxm/ozon-api-client"
)
func TestGetStocksInfo(t *testing.T) {
tests := []struct {
statusCode int
headers map[string]string
params *GetStocksInfoParams
response string
}{
{
http.StatusOK,
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
&GetStocksInfoParams{
Limit: 100,
LastId: "",
Filter: GetStocksInfoFilter{
OfferId: "136834",
ProductId: 214887921,
Visibility: "ALL",
},
},
`{
"result": {
"items": [
{
"product_id": 214887921,
"offer_id": "136834",
"stocks": [
{
"type": "fbs",
"present": 170,
"reserved": 0
},
{
"type": "fbo",
"present": 0,
"reserved": 0
}
]
}
],
"total": 1,
"last_id": "anVsbA=="
}
}`,
},
{
400,
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
&GetStocksInfoParams{
Limit: 100,
LastId: "",
Filter: GetStocksInfoFilter{
OfferId: "136834",
ProductId: 214887921,
Visibility: "ALL",
},
},
`{
"code": 0,
"details": [
{
"typeUrl": "string",
"value": "string"
}
],
"message": "string"
}`,
},
}
for _, test := range tests {
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
resp, err := c.GetStocksInfo(test.params)
if err != nil {
t.Error(err)
}
if resp.StatusCode != test.statusCode {
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
}
}
}
func TestGetProductDetails(t *testing.T) {
tests := []struct {
statusCode int
headers map[string]string
params *GetProductDetailsParams
response string
}{
{
http.StatusOK,
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
&GetProductDetailsParams{
ProductId: 137208233,
},
`{
"result": {
"id": 137208233,
"name": "Комплект защитных плёнок для X3 NFC. Темный хлопок",
"offer_id": "143210586",
"barcode": "",
"barcodes": [
"2335900005",
"7533900005"
],
"buybox_price": "",
"category_id": 17038062,
"created_at": "2021-10-21T15:48:03.529178Z",
"images": [
"https://cdn1.ozone.ru/s3/multimedia-5/6088931525.jpg",
"https://cdn1.ozone.ru/s3/multimedia-p/6088915813.jpg"
],
"has_discounted_item": true,
"is_discounted": true,
"discounted_stocks": {
"coming": 0,
"present": 0,
"reserved": 0
},
"currency_code": "RUB",
"marketing_price": "",
"min_price": "",
"old_price": "",
"premium_price": "",
"price": "590.0000",
"recommended_price": "",
"sources": [
{
"is_enabled": true,
"sku": 522759607,
"source": "fbo"
},
{
"is_enabled": true,
"sku": 522759608,
"source": "fbs"
}
],
"stocks": {
"coming": 0,
"present": 0,
"reserved": 0
},
"errors": [],
"updated_at": "2023-02-09T06:46:44.152Z",
"vat": "0.0",
"visible": false,
"visibility_details": {
"has_price": true,
"has_stock": false,
"active_product": false
},
"price_index": "0.00",
"commissions": [],
"volume_weight": 0.1,
"is_prepayment": false,
"is_prepayment_allowed": true,
"images360": [],
"is_kgt": false,
"color_image": "",
"primary_image": "https://cdn1.ozone.ru/s3/multimedia-p/6088931545.jpg",
"status": {
"state": "imported",
"state_failed": "imported",
"moderate_status": "",
"decline_reasons": [],
"validation_state": "pending",
"state_name": "Не продается",
"state_description": "Не создан",
"is_failed": true,
"is_created": false,
"state_tooltip": "",
"item_errors": [
{
"code": "error_attribute_values_empty",
"field": "attribute",
"attribute_id": 9048,
"state": "imported",
"level": "error",
"description": "Не заполнен обязательный атрибут. Иногда мы обновляем обязательные атрибуты или добавляем новые. Отредактируйте товар или загрузите новый XLS-шаблон с актуальными атрибутами. ",
"optional_description_elements": {},
"attribute_name": "Название модели"
},
{
"code": "error_attribute_values_empty",
"field": "attribute",
"attribute_id": 5076,
"state": "imported",
"level": "error",
"description": "Не заполнен обязательный атрибут. Иногда мы обновляем обязательные атрибуты или добавляем новые. Отредактируйте товар или загрузите новый XLS-шаблон с актуальными атрибутами. ",
"optional_description_elements": {},
"attribute_name": "Рекомендовано для"
},
{
"code": "error_attribute_values_empty",
"field": "attribute",
"attribute_id": 8229,
"state": "imported",
"level": "error",
"description": "Не заполнен обязательный атрибут. Иногда мы обновляем обязательные атрибуты или добавляем новые. Отредактируйте товар или загрузите новый XLS-шаблон с актуальными атрибутами. ",
"optional_description_elements": {},
"attribute_name": "Тип"
},
{
"code": "error_attribute_values_empty",
"field": "attribute",
"attribute_id": 85,
"state": "imported",
"level": "error",
"description": "Не заполнен обязательный атрибут. Иногда мы обновляем обязательные атрибуты или добавляем новые. Отредактируйте товар или загрузите новый XLS-шаблон с актуальными атрибутами. ",
"optional_description_elements": {},
"attribute_name": "Бренд"
}
],
"state_updated_at": "2021-10-21T15:48:03.927309Z"
}
}
}`,
},
{
400,
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
&GetProductDetailsParams{
ProductId: 137208233,
},
`{
"code": 0,
"details": [
{
"typeUrl": "string",
"value": "string"
}
],
"message": "string"
}`,
},
}
for _, test := range tests {
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
resp, err := c.GetProductDetails(test.params)
if err != nil {
t.Error(err)
}
if resp.StatusCode != test.statusCode {
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
}
}
}