Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1494ff5905 | ||
|
|
922e2de8b0 | ||
|
|
af7c167edf | ||
|
|
ba8f4ca1b2 | ||
|
|
52b18252b1 | ||
|
|
b496767c5b |
@@ -66,6 +66,7 @@ func TestRequest(t *testing.T) {
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
|
|||||||
@@ -64,8 +64,11 @@ func TestGetAnalyticsData(t *testing.T) {
|
|||||||
resp, err := c.Analytics().GetAnalyticsData(ctx, test.params)
|
resp, err := c.Analytics().GetAnalyticsData(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetAnalyticsDataResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -125,8 +128,11 @@ func TestGetStocksOnWarehouses(t *testing.T) {
|
|||||||
resp, err := c.Analytics().GetStocksOnWarehouses(ctx, test.params)
|
resp, err := c.Analytics().GetStocksOnWarehouses(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetStocksOnWarehousesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,8 +54,11 @@ func TestGenerateBarcodes(t *testing.T) {
|
|||||||
resp, err := c.Barcodes().Generate(ctx, test.params)
|
resp, err := c.Barcodes().Generate(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GenerateBarcodesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -121,8 +124,11 @@ func TestBindBarcodes(t *testing.T) {
|
|||||||
resp, err := c.Barcodes().Bind(ctx, test.params)
|
resp, err := c.Barcodes().Bind(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &BindBarcodesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ func TestListCertifiedBrands(t *testing.T) {
|
|||||||
"result": {
|
"result": {
|
||||||
"brand_certification": [
|
"brand_certification": [
|
||||||
{
|
{
|
||||||
"brand_id": 135476863,
|
|
||||||
"brand_name": "Sea of Spa",
|
"brand_name": "Sea of Spa",
|
||||||
"has_certificate": false
|
"has_certificate": false
|
||||||
}
|
}
|
||||||
@@ -57,8 +56,11 @@ func TestListCertifiedBrands(t *testing.T) {
|
|||||||
resp, err := c.Brands().List(ctx, test.params)
|
resp, err := c.Brands().List(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListCertifiedBrandsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,8 +67,11 @@ func TestGetCancellationInfo(t *testing.T) {
|
|||||||
resp, err := c.Cancellations().GetInfo(ctx, test.params)
|
resp, err := c.Cancellations().GetInfo(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetCancellationInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -123,9 +126,9 @@ func TestListCancellations(t *testing.T) {
|
|||||||
"state": "APPROVED"
|
"state": "APPROVED"
|
||||||
},
|
},
|
||||||
"cancellation_initiator": "CLIENT",
|
"cancellation_initiator": "CLIENT",
|
||||||
"order_date": "2021-09-03T07:04:53.220Z",
|
"order_date": "2021-09-03T07:04:53.22Z",
|
||||||
"approve_comment": "",
|
"approve_comment": "",
|
||||||
"approve_date": "2021-09-03T09:13:12.614200Z",
|
"approve_date": "2021-09-03T09:13:12.6142Z",
|
||||||
"auto_approve_date": "2021-09-06T07:17:12.116114Z"
|
"auto_approve_date": "2021-09-06T07:17:12.116114Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -177,8 +180,11 @@ func TestListCancellations(t *testing.T) {
|
|||||||
resp, err := c.Cancellations().List(ctx, test.params)
|
resp, err := c.Cancellations().List(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListCancellationsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -222,8 +228,11 @@ func TestApproveCancellations(t *testing.T) {
|
|||||||
resp, err := c.Cancellations().Approve(ctx, test.params)
|
resp, err := c.Cancellations().Approve(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ApproveRejectCancellationsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -267,8 +276,11 @@ func TestRejectCancellations(t *testing.T) {
|
|||||||
resp, err := c.Cancellations().Reject(ctx, test.params)
|
resp, err := c.Cancellations().Reject(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ApproveRejectCancellationsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,8 +56,11 @@ func TestGetProductTree(t *testing.T) {
|
|||||||
resp, err := c.Categories().Tree(ctx, test.params)
|
resp, err := c.Categories().Tree(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductTreeResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -118,8 +121,11 @@ func TestGetCategoryAttributes(t *testing.T) {
|
|||||||
resp, err := c.Categories().Attributes(ctx, test.params)
|
resp, err := c.Categories().Attributes(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetCategoryAttributesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -178,8 +184,11 @@ func TestGetAttributeDictionary(t *testing.T) {
|
|||||||
resp, err := c.Categories().AttributesDictionary(ctx, test.params)
|
resp, err := c.Categories().AttributesDictionary(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetAttributeDictionaryResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ type ListOfCertifiedCategoriesResponse struct {
|
|||||||
core.CommonResponse
|
core.CommonResponse
|
||||||
|
|
||||||
// Method result
|
// Method result
|
||||||
Result ListOfCertifiedCategoriesResult `json:"reult"`
|
Result ListOfCertifiedCategoriesResult `json:"result"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ListOfCertifiedCategoriesResult struct {
|
type ListOfCertifiedCategoriesResult struct {
|
||||||
@@ -233,7 +233,7 @@ type GetCertificateInfoResult struct {
|
|||||||
AccordanceTypeCode string `json:"accordance_type_code"`
|
AccordanceTypeCode string `json:"accordance_type_code"`
|
||||||
|
|
||||||
// Certificate rejection reason
|
// Certificate rejection reason
|
||||||
RejectionReasonCode string `json:"rejectio_reason_code"`
|
RejectionReasonCode string `json:"rejection_reason_code"`
|
||||||
|
|
||||||
// Moderator's comment
|
// Moderator's comment
|
||||||
VerificationComment string `json:"verification_comment"`
|
VerificationComment string `json:"verification_comment"`
|
||||||
@@ -307,7 +307,7 @@ type ListCertificatesResultCert struct {
|
|||||||
CertificateName string `json:"certificate_name"`
|
CertificateName string `json:"certificate_name"`
|
||||||
|
|
||||||
// Type
|
// Type
|
||||||
TypeCode string `json:"type"`
|
TypeCode string `json:"type_code"`
|
||||||
|
|
||||||
// Status
|
// Status
|
||||||
StatusCode string `json:"status_code"`
|
StatusCode string `json:"status_code"`
|
||||||
@@ -316,13 +316,13 @@ type ListCertificatesResultCert struct {
|
|||||||
AccordanceTypecode string `json:"accordance_type_code"`
|
AccordanceTypecode string `json:"accordance_type_code"`
|
||||||
|
|
||||||
// Certificate rejection reason
|
// Certificate rejection reason
|
||||||
RejectionReasonCode string `json:"rejectio_reason_code"`
|
RejectionReasonCode string `json:"rejection_reason_code"`
|
||||||
|
|
||||||
// Moderator's comment
|
// Moderator's comment
|
||||||
VerificationComment string `json:"verification_comment"`
|
VerificationComment string `json:"verification_comment"`
|
||||||
|
|
||||||
// Issue date
|
// Issue date
|
||||||
IssueDate time.Time `json:"issue_data"`
|
IssueDate time.Time `json:"issue_date"`
|
||||||
|
|
||||||
// Expire date
|
// Expire date
|
||||||
ExpireDate time.Time `json:"expire_date"`
|
ExpireDate time.Time `json:"expire_date"`
|
||||||
|
|||||||
@@ -56,8 +56,11 @@ func TestListOfAccordanceTypes(t *testing.T) {
|
|||||||
resp, err := c.Certificates().ListOfAccordanceTypes(ctx)
|
resp, err := c.Certificates().ListOfAccordanceTypes(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListOfAccordanceTypesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -119,8 +122,11 @@ func TestDirectoryOfDocumentTypes(t *testing.T) {
|
|||||||
resp, err := c.Certificates().DirectoryOfDocumentTypes(ctx)
|
resp, err := c.Certificates().DirectoryOfDocumentTypes(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &DirectoryOfDocumentTypesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -175,8 +181,11 @@ func TestListOfCertifiedCategories(t *testing.T) {
|
|||||||
resp, err := c.Certificates().ListOfCertifiedCategories(ctx, test.params)
|
resp, err := c.Certificates().ListOfCertifiedCategories(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListOfCertifiedCategoriesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -223,8 +232,11 @@ func TestLinkCertificateToProduct(t *testing.T) {
|
|||||||
resp, err := c.Certificates().LinkToProduct(ctx, test.params)
|
resp, err := c.Certificates().LinkToProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &LinkCertificateToProductResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -273,8 +285,11 @@ func TestDeleteCertificate(t *testing.T) {
|
|||||||
resp, err := c.Certificates().Delete(ctx, test.params)
|
resp, err := c.Certificates().Delete(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &DeleteCertificateResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -332,8 +347,11 @@ func TestGetCertificateInfo(t *testing.T) {
|
|||||||
resp, err := c.Certificates().GetInfo(ctx, test.params)
|
resp, err := c.Certificates().GetInfo(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetCertificateInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -406,8 +424,11 @@ func TestListCertificates(t *testing.T) {
|
|||||||
resp, err := c.Certificates().List(ctx, test.params)
|
resp, err := c.Certificates().List(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListCertificatesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -453,8 +474,11 @@ func TestProductStatuses(t *testing.T) {
|
|||||||
resp, err := c.Certificates().ProductStatuses(ctx)
|
resp, err := c.Certificates().ProductStatuses(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductStatusesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -511,8 +535,11 @@ func TestListProductsForCertificate(t *testing.T) {
|
|||||||
resp, err := c.Certificates().ListProductsForCertificate(ctx, test.params)
|
resp, err := c.Certificates().ListProductsForCertificate(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListProductsForCertificateResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -565,8 +592,11 @@ func TestUnlinkFromProduct(t *testing.T) {
|
|||||||
resp, err := c.Certificates().UnlinkFromProduct(ctx, test.params)
|
resp, err := c.Certificates().UnlinkFromProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UnlinkFromProductResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -612,8 +642,11 @@ func TestPossibleRejectReasons(t *testing.T) {
|
|||||||
resp, err := c.Certificates().PossibleRejectReasons(ctx)
|
resp, err := c.Certificates().PossibleRejectReasons(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &PossibleRejectReasonsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -659,8 +692,11 @@ func TestPossibleStatuses(t *testing.T) {
|
|||||||
resp, err := c.Certificates().PossibleStatuses(ctx)
|
resp, err := c.Certificates().PossibleStatuses(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &PossibleStatusesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -712,8 +748,11 @@ func TestAddCertificatesForProducts(t *testing.T) {
|
|||||||
resp, err := c.Certificates().AddForProducts(ctx, test.params)
|
resp, err := c.Certificates().AddForProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &AddCertificatesForProductsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,8 +66,11 @@ func TestListChats(t *testing.T) {
|
|||||||
resp, err := c.Chats().List(ctx, test.params)
|
resp, err := c.Chats().List(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListChatsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -125,8 +128,11 @@ func TestSendMessage(t *testing.T) {
|
|||||||
resp, err := c.Chats().SendMessage(ctx, test.params)
|
resp, err := c.Chats().SendMessage(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &SendMessageResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -174,8 +180,11 @@ func TestSendFile(t *testing.T) {
|
|||||||
resp, err := c.Chats().SendFile(ctx, test.params)
|
resp, err := c.Chats().SendFile(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &SendFileResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -238,8 +247,11 @@ func TestChatHistory(t *testing.T) {
|
|||||||
resp, err := c.Chats().History(ctx, test.params)
|
resp, err := c.Chats().History(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ChatHistoryResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -305,8 +317,11 @@ func TestUpdateChat(t *testing.T) {
|
|||||||
resp, err := c.Chats().Update(ctx, test.params)
|
resp, err := c.Chats().Update(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UpdateChatResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -354,8 +369,11 @@ func TestCreateNewChat(t *testing.T) {
|
|||||||
resp, err := c.Chats().Create(ctx, test.params)
|
resp, err := c.Chats().Create(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateNewChatResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -408,8 +426,11 @@ func TestMarkAsRead(t *testing.T) {
|
|||||||
resp, err := c.Chats().MarkAsRead(ctx, test.params)
|
resp, err := c.Chats().MarkAsRead(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &MarkAsReadResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -587,3 +587,95 @@ const (
|
|||||||
// SKU is deleted
|
// SKU is deleted
|
||||||
SKUAvailabilityUnavailable = "UNAVAILABLE"
|
SKUAvailabilityUnavailable = "UNAVAILABLE"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type RFBSReturnsGroupState string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// All requests
|
||||||
|
RFBSReturnsGroupStateAll RFBSReturnsGroupState = "All"
|
||||||
|
|
||||||
|
// New
|
||||||
|
RFBSReturnsGroupStateNew RFBSReturnsGroupState = "New"
|
||||||
|
|
||||||
|
// Returned product is on the way for check
|
||||||
|
RFBSReturnsGroupStateDelivering RFBSReturnsGroupState = "Delivering"
|
||||||
|
|
||||||
|
// Returned product is being checked
|
||||||
|
RFBSReturnsGroupStateCheckout RFBSReturnsGroupState = "Checkout"
|
||||||
|
|
||||||
|
// Disputed
|
||||||
|
RFBSReturnsGroupStateArbitration RFBSReturnsGroupState = "Arbitration"
|
||||||
|
|
||||||
|
// Approved
|
||||||
|
RFBSReturnsGroupStateApproved RFBSReturnsGroupState = "Approved"
|
||||||
|
|
||||||
|
// Rejected
|
||||||
|
RFBSReturnsGroupStateRejected RFBSReturnsGroupState = "Rejected"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GetRFBSReturnsCurrency string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Russian ruble
|
||||||
|
GetRFBSReturnsCurrencyRUB GetRFBSReturnsCurrency = "RUB"
|
||||||
|
|
||||||
|
// Belarusian ruble
|
||||||
|
GetRFBSReturnsCurrencyBYN GetRFBSReturnsCurrency = "BYN"
|
||||||
|
|
||||||
|
// Tenge
|
||||||
|
GetRFBSReturnsCurrencyKZT GetRFBSReturnsCurrency = "KZT"
|
||||||
|
|
||||||
|
// Euro
|
||||||
|
GetRFBSReturnsCurrencyEUR GetRFBSReturnsCurrency = "EUR"
|
||||||
|
|
||||||
|
// US dollar
|
||||||
|
GetRFBSReturnsCurrencyUSD GetRFBSReturnsCurrency = "USD"
|
||||||
|
|
||||||
|
// Yuan
|
||||||
|
GetRFBSReturnsCurrencyCNY GetRFBSReturnsCurrency = "CNY"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GiveoutStatus string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Undefined, contact support team
|
||||||
|
GiveoutStatusUnspecified GiveoutStatus = "GIVEOUT_STATUS_UNSPECIFIED"
|
||||||
|
|
||||||
|
// Created
|
||||||
|
GiveoutStatusCreated GiveoutStatus = "GIVEOUT_STATUS_CREATED"
|
||||||
|
|
||||||
|
// Approved
|
||||||
|
GiveoutStatusApproved GiveoutStatus = "GIVEOUT_STATUS_APPROVED"
|
||||||
|
|
||||||
|
// Completed
|
||||||
|
GiveoutStatusCompleted GiveoutStatus = "GIVEOUT_STATUS_COMPLETED"
|
||||||
|
|
||||||
|
// Cancelled
|
||||||
|
GiveoutStatusCancelled GiveoutStatus = "GIVEOUT_STATUS_CANCELLED"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GiveoutDeliverySchema string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Undefined, contact support team
|
||||||
|
GiveoutDeliverySchemaUnspecified GiveoutDeliverySchema = "GIVEOUT_DELIVERY_SCHEMA_UNSPECIFIED"
|
||||||
|
|
||||||
|
// FBO
|
||||||
|
GiveoutDeliverySchemaFBO GiveoutDeliverySchema = "GIVEOUT_DELIVERY_SCHEMA_FBO"
|
||||||
|
|
||||||
|
// FBS
|
||||||
|
GiveoutDeliverySchemaFBS GiveoutDeliverySchema = "GIVEOUT_DELIVERY_SCHEMA_FBS"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MandatoryMarkStatus string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Labeling is processed
|
||||||
|
MandatoryMarkStatusProcessing MandatoryMarkStatus = "processing"
|
||||||
|
|
||||||
|
// Check is passed
|
||||||
|
MandatoryMarkStatusPassed MandatoryMarkStatus = "passed"
|
||||||
|
|
||||||
|
// Check is failed
|
||||||
|
MandatoryMarkStatusFailed MandatoryMarkStatus = "failed"
|
||||||
|
)
|
||||||
|
|||||||
21
ozon/fbo.go
21
ozon/fbo.go
@@ -248,7 +248,7 @@ type GetShipmentDetailsResultAdditionalData struct {
|
|||||||
|
|
||||||
type GetShipmentDetailsResultAnalyticsData struct {
|
type GetShipmentDetailsResultAnalyticsData struct {
|
||||||
// Delivery city
|
// Delivery city
|
||||||
City string `json:"Delivery city"`
|
City string `json:"city"`
|
||||||
|
|
||||||
// Delivery method
|
// Delivery method
|
||||||
DeliveryType string `json:"delivery_type"`
|
DeliveryType string `json:"delivery_type"`
|
||||||
@@ -323,10 +323,14 @@ type SupplyRequestCommonResponse struct {
|
|||||||
LocalTimeslot SupplyRequestCommonResponseLocalTimeslot `json:"local_timeslot"`
|
LocalTimeslot SupplyRequestCommonResponseLocalTimeslot `json:"local_timeslot"`
|
||||||
|
|
||||||
// Date from which you want to bring the supply to the warehouse. Only for supplies via vDC
|
// Date from which you want to bring the supply to the warehouse. Only for supplies via vDC
|
||||||
PreferredSupplyDataFrom string `json:"preferred_supply_data_from"`
|
PreferredSupplyDateFrom string `json:"preferred_supply_date_from"`
|
||||||
|
|
||||||
// Date by which you want to bring the supply to the warehouse. Only for supplies via vDC
|
// Date by which you want to bring the supply to the warehouse. Only for supplies via vDC
|
||||||
PreferredSupplyDataTo string `json:"preferred_supply_data_to"`
|
PreferredSupplyDateTo string `json:"preferred_supply_date_to"`
|
||||||
|
|
||||||
|
// Your own warehouse from which you'll take the products to the supply warehouse.
|
||||||
|
// Only for supplies via vDC
|
||||||
|
SellerWarehouse SupplyRequestSellerWarehouse `json:"seller_warehouse"`
|
||||||
|
|
||||||
// Status of a supply by request
|
// Status of a supply by request
|
||||||
State string `json:"state"`
|
State string `json:"state"`
|
||||||
@@ -353,6 +357,17 @@ type SupplyRequestCommonResponse struct {
|
|||||||
TotalQuantity int32 `json:"total_quantity"`
|
TotalQuantity int32 `json:"total_quantity"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SupplyRequestSellerWarehouse struct {
|
||||||
|
// Warehouse address
|
||||||
|
Address string `json:"address"`
|
||||||
|
|
||||||
|
// Warehouse name
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Warehouse identifier
|
||||||
|
WarehouseId int64 `json:"warehouse_id"`
|
||||||
|
}
|
||||||
|
|
||||||
type SupplyRequestCommonResponseLocalTimeslot struct {
|
type SupplyRequestCommonResponseLocalTimeslot struct {
|
||||||
// Interval start
|
// Interval start
|
||||||
From string `json:"from"`
|
From string `json:"from"`
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ func TestGetFBOShipmentsList(t *testing.T) {
|
|||||||
"posting_number": "16965409-0014-1",
|
"posting_number": "16965409-0014-1",
|
||||||
"status": "delivered",
|
"status": "delivered",
|
||||||
"cancel_reason_id": 0,
|
"cancel_reason_id": 0,
|
||||||
"created_at": "2021-09-01T00:23:45.607000Z",
|
"created_at": "2021-09-01T00:23:45.607Z",
|
||||||
"in_process_at": "2021-09-01T00:25:30.120000Z",
|
"in_process_at": "2021-09-01T00:25:30.12Z",
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
"sku": 160249683,
|
"sku": 160249683,
|
||||||
@@ -138,8 +138,11 @@ func TestGetFBOShipmentsList(t *testing.T) {
|
|||||||
resp, err := c.FBO().GetShipmentsList(ctx, test.params)
|
resp, err := c.FBO().GetShipmentsList(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetFBOShipmentsListResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -267,8 +270,11 @@ func TestGetShipmentDetails(t *testing.T) {
|
|||||||
resp, err := c.FBO().GetShipmentDetails(ctx, test.params)
|
resp, err := c.FBO().GetShipmentDetails(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetShipmentDetailsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -346,8 +352,11 @@ func TestListSupplyRequests(t *testing.T) {
|
|||||||
resp, err := c.FBO().ListSupplyRequests(ctx, test.params)
|
resp, err := c.FBO().ListSupplyRequests(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListSupplyRequestsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -422,8 +431,11 @@ func TestGetSupplyRequestInfo(t *testing.T) {
|
|||||||
resp, err := c.FBO().GetSupplyRequestInfo(ctx, test.params)
|
resp, err := c.FBO().GetSupplyRequestInfo(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetSupplyRequestInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -481,8 +493,11 @@ func TestListProductsInSupplyRequest(t *testing.T) {
|
|||||||
resp, err := c.FBO().ListProductsInSupplyRequest(ctx, test.params)
|
resp, err := c.FBO().ListProductsInSupplyRequest(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListProductsInSupplyRequestResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -540,8 +555,11 @@ func TestGetWarehouseWorkload(t *testing.T) {
|
|||||||
resp, err := c.FBO().GetWarehouseWorkload(ctx)
|
resp, err := c.FBO().GetWarehouseWorkload(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetWarehouseWorkloadResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
33
ozon/fbs.go
33
ozon/fbs.go
@@ -408,7 +408,7 @@ type MarketplaceServices struct {
|
|||||||
DirectFlowTrans float64 `json:"marketplace_service_item_direct_flow_trans"`
|
DirectFlowTrans float64 `json:"marketplace_service_item_direct_flow_trans"`
|
||||||
|
|
||||||
// Shipment processing in the fulfilment warehouse (FF)
|
// Shipment processing in the fulfilment warehouse (FF)
|
||||||
DropoffFF float64 `json:"marketplace_service_item_item_dropoff_ff"`
|
DropoffFF float64 `json:"marketplace_service_item_dropoff_ff"`
|
||||||
|
|
||||||
// Shipment processing at the pick up point
|
// Shipment processing at the pick up point
|
||||||
DropoffPVZ float64 `json:"marketplace_service_item_dropoff_pvz"`
|
DropoffPVZ float64 `json:"marketplace_service_item_dropoff_pvz"`
|
||||||
@@ -910,7 +910,7 @@ type GetShipmentDataByIdentifierResult struct {
|
|||||||
Barcodes FBSBarcode `json:"barcodes"`
|
Barcodes FBSBarcode `json:"barcodes"`
|
||||||
|
|
||||||
// Cancellation details
|
// Cancellation details
|
||||||
Cancellation FBSCancellation `json:"calcellation"`
|
Cancellation FBSCancellation `json:"cancellation"`
|
||||||
|
|
||||||
// Courier information
|
// Courier information
|
||||||
Courier GetShipmentDataByIdentifierResultCourier `json:"courier"`
|
Courier GetShipmentDataByIdentifierResultCourier `json:"courier"`
|
||||||
@@ -925,10 +925,10 @@ type GetShipmentDataByIdentifierResult struct {
|
|||||||
DeliveryMethod FBSDeliveryMethod `json:"delivery_method"`
|
DeliveryMethod FBSDeliveryMethod `json:"delivery_method"`
|
||||||
|
|
||||||
// Delivery cost
|
// Delivery cost
|
||||||
DeliveryPrice string `json:"delivery_type"`
|
DeliveryPrice string `json:"delivery_price"`
|
||||||
|
|
||||||
// Data on the product cost, discount amount, payout and commission
|
// Data on the product cost, discount amount, payout and commission
|
||||||
FinancialData FBSFinancialData `json:"financial_date"`
|
FinancialData FBSFinancialData `json:"financial_data"`
|
||||||
|
|
||||||
// Start date and time of shipment processing
|
// Start date and time of shipment processing
|
||||||
InProcessAt time.Time `json:"in_process_at"`
|
InProcessAt time.Time `json:"in_process_at"`
|
||||||
@@ -1118,20 +1118,39 @@ type ProductDimension struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type FBSProductExemplar struct {
|
type FBSProductExemplar struct {
|
||||||
|
// Product item validation errors
|
||||||
|
Errors []string `json:"errors"`
|
||||||
|
|
||||||
// Mandatory “Chestny ZNAK” labeling
|
// Mandatory “Chestny ZNAK” labeling
|
||||||
MandatoryMark string `json:"mandatory_mark"`
|
MandatoryMark string `json:"mandatory_mark"`
|
||||||
|
|
||||||
|
// "Chestny ZNAK" labeling check status
|
||||||
|
MandatoryMarkCheckStatus MandatoryMarkStatus `json:"mandatory_mark_check_status"`
|
||||||
|
|
||||||
|
// "Chestny ZNAK" labeling check error codes
|
||||||
|
MandatoryMarkErrorCodes []string `json:"mandatory_mark_error_codes"`
|
||||||
|
|
||||||
// Сustoms cargo declaration (CCD) number
|
// Сustoms cargo declaration (CCD) number
|
||||||
GTD string `json:"gtd"`
|
GTD string `json:"gtd"`
|
||||||
|
|
||||||
|
// Сustoms cargo declaration (CCD) check status
|
||||||
|
GTDCheckStatus string `json:"gtd_check_status"`
|
||||||
|
|
||||||
// Indication that a сustoms cargo declaration (CCD) number hasn't been specified
|
// Indication that a сustoms cargo declaration (CCD) number hasn't been specified
|
||||||
IsGTDAbsest bool `json:"is_gtd_absent"`
|
IsGTDAbsest bool `json:"is_gtd_absent"`
|
||||||
|
|
||||||
|
// Сustoms cargo declaration (CCD) check error codes
|
||||||
|
GTDErrorCodes []string `json:"gtd_error_codes"`
|
||||||
|
|
||||||
// Product batch registration number
|
// Product batch registration number
|
||||||
RNPT string `json:"rnpt"`
|
RNPT string `json:"rnpt"`
|
||||||
|
|
||||||
// Indication that a product batch registration number hasn't been specified
|
// Indication that a product batch registration number hasn't been specified
|
||||||
IsRNPTAbsent bool `json:"is_rnpt_absent"`
|
IsRNPTAbsent bool `json:"is_rnpt_absent"`
|
||||||
|
|
||||||
|
// Check result.
|
||||||
|
// `true` if the labeling code of product item meets the requirements
|
||||||
|
Valid bool `json:"valid"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method for getting shipment details by identifier
|
// Method for getting shipment details by identifier
|
||||||
@@ -1244,7 +1263,7 @@ type ListOfShipmentCertificatesResult struct {
|
|||||||
IntegrationType string `json:"integration_type"`
|
IntegrationType string `json:"integration_type"`
|
||||||
|
|
||||||
// Number of package units
|
// Number of package units
|
||||||
ContainersCount int32 `json:"container_count"`
|
ContainersCount int32 `json:"containers_count"`
|
||||||
|
|
||||||
// Shipping status
|
// Shipping status
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
@@ -1767,7 +1786,7 @@ type CheckProductItemsDataResponse struct {
|
|||||||
// For example, you have 10 product items in your system.
|
// For example, you have 10 product items in your system.
|
||||||
// You have passed them for checking and saving. Then they added another 60 product items to your system.
|
// You have passed them for checking and saving. Then they added another 60 product items to your system.
|
||||||
// When you pass product items for checking and saving again, pass all of them: both old and newly added
|
// When you pass product items for checking and saving again, pass all of them: both old and newly added
|
||||||
func (c FBS) CheckproductItemsData(ctx context.Context, params *CheckProductItemsDataParams) (*CheckProductItemsDataResponse, error) {
|
func (c FBS) CheckProductItemsData(ctx context.Context, params *CheckProductItemsDataParams) (*CheckProductItemsDataResponse, error) {
|
||||||
url := "/v4/fbs/posting/product/exemplar/set"
|
url := "/v4/fbs/posting/product/exemplar/set"
|
||||||
|
|
||||||
resp := &CheckProductItemsDataResponse{}
|
resp := &CheckProductItemsDataResponse{}
|
||||||
@@ -2466,7 +2485,7 @@ type ListShipmentInCertificateResult struct {
|
|||||||
SellerError string `json:"seller_error"`
|
SellerError string `json:"seller_error"`
|
||||||
|
|
||||||
// Shipment record update date and time
|
// Shipment record update date and time
|
||||||
UpdatedAt time.Time `json:"update_at"`
|
UpdatedAt time.Time `json:"updated_at"`
|
||||||
|
|
||||||
// Shipment record creation date and time
|
// Shipment record creation date and time
|
||||||
CreatedAt time.Time `json:"created_at"`
|
CreatedAt time.Time `json:"created_at"`
|
||||||
|
|||||||
182
ozon/fbs_test.go
182
ozon/fbs_test.go
@@ -172,8 +172,11 @@ func TestListUnprocessedShipments(t *testing.T) {
|
|||||||
resp, err := c.FBS().ListUnprocessedShipments(ctx, test.params)
|
resp, err := c.FBS().ListUnprocessedShipments(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListUnprocessedShipmentsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -199,13 +202,19 @@ func TestGetFBSShipmentsList(t *testing.T) {
|
|||||||
Since: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2021-11-01T00:00:00.000Z"),
|
Since: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2021-11-01T00:00:00.000Z"),
|
||||||
To: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2021-12-01T23:59:59.000Z"),
|
To: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2021-12-01T23:59:59.000Z"),
|
||||||
Status: "awaiting_packaging",
|
Status: "awaiting_packaging",
|
||||||
|
WarehouseId: []int64{123},
|
||||||
|
ProviderId: []int64{223},
|
||||||
|
FBPFilter: FBPFilterAll,
|
||||||
|
DeliveryMethodId: []int64{456},
|
||||||
|
OrderId: 0,
|
||||||
},
|
},
|
||||||
Limit: 100,
|
Limit: 0,
|
||||||
Offset: 0,
|
Offset: 0,
|
||||||
With: GetFBSShipmentsListWith{
|
With: GetFBSShipmentsListWith{
|
||||||
AnalyticsData: true,
|
AnalyticsData: true,
|
||||||
FinancialData: true,
|
FinancialData: true,
|
||||||
Translit: true,
|
Translit: true,
|
||||||
|
Barcodes: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
`{
|
`{
|
||||||
@@ -216,6 +225,7 @@ func TestGetFBSShipmentsList(t *testing.T) {
|
|||||||
"order_id": 680420041,
|
"order_id": 680420041,
|
||||||
"order_number": "05708065-0029",
|
"order_number": "05708065-0029",
|
||||||
"status": "awaiting_deliver",
|
"status": "awaiting_deliver",
|
||||||
|
"substatus": "posting_awaiting_passport_data",
|
||||||
"delivery_method": {
|
"delivery_method": {
|
||||||
"id": 21321684811000,
|
"id": 21321684811000,
|
||||||
"name": "Ozon Логистика самостоятельно, Красногорск",
|
"name": "Ozon Логистика самостоятельно, Красногорск",
|
||||||
@@ -284,8 +294,11 @@ func TestGetFBSShipmentsList(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetFBSShipmentsList(ctx, test.params)
|
resp, err := c.FBS().GetFBSShipmentsList(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetFBSShipmentsListResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -346,8 +359,11 @@ func TestPackOrder(t *testing.T) {
|
|||||||
resp, err := c.FBS().PackOrder(ctx, test.params)
|
resp, err := c.FBS().PackOrder(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &PackOrderResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -424,8 +440,11 @@ func TestValidateLabelingCodes(t *testing.T) {
|
|||||||
resp, err := c.FBS().ValidateLabelingCodes(ctx, test.params)
|
resp, err := c.FBS().ValidateLabelingCodes(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ValidateLabelingCodesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -465,31 +484,8 @@ func TestGetShipmentDataByBarcode(t *testing.T) {
|
|||||||
"order_id": 438764970,
|
"order_id": 438764970,
|
||||||
"order_number": "57195475-0050",
|
"order_number": "57195475-0050",
|
||||||
"status": "awaiting_packaging",
|
"status": "awaiting_packaging",
|
||||||
"delivery_method": {
|
|
||||||
"id": 18114520187000,
|
|
||||||
"name": "Ozon Логистика самостоятельно, Москва",
|
|
||||||
"warehouse_id": 18114520187000,
|
|
||||||
"warehouse": "Москва основной",
|
|
||||||
"tpl_provider_id": 24,
|
|
||||||
"tpl_provider": "Ozon Логистика"
|
|
||||||
},
|
|
||||||
"tracking_number": "",
|
|
||||||
"tpl_integration_type": "ozon",
|
|
||||||
"in_process_at": "2021-11-20T09:14:16Z",
|
"in_process_at": "2021-11-20T09:14:16Z",
|
||||||
"shipment_date": "2021-11-23T10:00:00Z",
|
"shipment_date": "2021-11-23T10:00:00Z",
|
||||||
"delivering_date": null,
|
|
||||||
"provider_status": "",
|
|
||||||
"delivery_price": "",
|
|
||||||
"cancellation": {
|
|
||||||
"cancel_reason_id": 0,
|
|
||||||
"cancel_reason": "",
|
|
||||||
"cancellation_type": "",
|
|
||||||
"cancelled_after_ship": false,
|
|
||||||
"affect_cancellation_rating": false,
|
|
||||||
"cancellation_initiator": ""
|
|
||||||
},
|
|
||||||
"customer": null,
|
|
||||||
"addressee": null,
|
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
"price": "279.0000",
|
"price": "279.0000",
|
||||||
@@ -497,25 +493,12 @@ func TestGetShipmentDataByBarcode(t *testing.T) {
|
|||||||
"name": "Кофе ароматизированный \"Шоколадный апельсин\" 250 гр",
|
"name": "Кофе ароматизированный \"Шоколадный апельсин\" 250 гр",
|
||||||
"sku": 180550365,
|
"sku": 180550365,
|
||||||
"quantity": 1,
|
"quantity": 1,
|
||||||
"mandatory_mark": [],
|
"mandatory_mark": []
|
||||||
"dimensions": {
|
|
||||||
"height": "40.00",
|
|
||||||
"length": "240.00",
|
|
||||||
"weight": "260",
|
|
||||||
"width": "140.00"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"barcodes": null,
|
"barcodes": null,
|
||||||
"analytics_data": null,
|
"analytics_data": null,
|
||||||
"financial_data": null,
|
"financial_data": null
|
||||||
"additional_data": [],
|
|
||||||
"is_express": false,
|
|
||||||
"requirements": {
|
|
||||||
"products_requiring_gtd": [],
|
|
||||||
"products_requiring_country": []
|
|
||||||
},
|
|
||||||
"product_exemplars": null
|
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
@@ -538,8 +521,11 @@ func TestGetShipmentDataByBarcode(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetShipmentDataByBarcode(ctx, test.params)
|
resp, err := c.FBS().GetShipmentDataByBarcode(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetShipmentDataByBarcodeResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -652,8 +638,11 @@ func TestGetShipmentDataByIdentifier(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetShipmentDataByIdentifier(ctx, test.params)
|
resp, err := c.FBS().GetShipmentDataByIdentifier(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetShipmentDataByIdentifierResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -725,8 +714,11 @@ func TestAddTrackingNumbers(t *testing.T) {
|
|||||||
resp, err := c.FBS().AddTrackingNumbers(ctx, test.params)
|
resp, err := c.FBS().AddTrackingNumbers(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &AddTrackingNumbersResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -819,8 +811,11 @@ func TestListOfShipmentCertificates(t *testing.T) {
|
|||||||
resp, err := c.FBS().ListOfShipmentCertificates(ctx, test.params)
|
resp, err := c.FBS().ListOfShipmentCertificates(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListOfShipmentCertificatesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -881,8 +876,11 @@ func TestSignShipmentCertificate(t *testing.T) {
|
|||||||
resp, err := c.FBS().SignShipmentCertificate(ctx, test.params)
|
resp, err := c.FBS().SignShipmentCertificate(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &SignShipmentCertificateResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -957,24 +955,30 @@ func TestChangeStatusTo(t *testing.T) {
|
|||||||
deliveringResp, err := c.FBS().ChangeStatusToDelivering(deliveringctx, test.params)
|
deliveringResp, err := c.FBS().ChangeStatusToDelivering(deliveringctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ChangeStatusToResponse{})
|
||||||
|
|
||||||
lastMilectx, _ := context.WithTimeout(context.Background(), testTimeout)
|
lastMilectx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
lastMileResp, err := c.FBS().ChangeStatusToLastMile(lastMilectx, test.params)
|
lastMileResp, err := c.FBS().ChangeStatusToLastMile(lastMilectx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
deliveredctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
deliveredctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
deliveredResp, err := c.FBS().ChangeStatusToDelivered(deliveredctx, test.params)
|
deliveredResp, err := c.FBS().ChangeStatusToDelivered(deliveredctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
sendBySellerctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
sendBySellerctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
sendBySellerResp, err := c.FBS().ChangeStatusToSendBySeller(sendBySellerctx, test.params)
|
sendBySellerResp, err := c.FBS().ChangeStatusToSendBySeller(sendBySellerctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
assertResponse(t, &test, deliveringResp)
|
assertResponse(t, &test, deliveringResp)
|
||||||
@@ -1023,8 +1027,11 @@ func TestPassShipmentToShipping(t *testing.T) {
|
|||||||
resp, err := c.FBS().PassShipmentToShipping(ctx, test.params)
|
resp, err := c.FBS().PassShipmentToShipping(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &PassShipmentToShippingResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1072,8 +1079,11 @@ func TestCancelShipment(t *testing.T) {
|
|||||||
resp, err := c.FBS().CancelShipment(ctx, test.params)
|
resp, err := c.FBS().CancelShipment(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CancelShipmentResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1123,8 +1133,11 @@ func TestCreateAct(t *testing.T) {
|
|||||||
resp, err := c.FBS().CreateAct(ctx, test.params)
|
resp, err := c.FBS().CreateAct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateActResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1173,8 +1186,11 @@ func TestGetLabeling(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetLabeling(ctx, test.params)
|
resp, err := c.FBS().GetLabeling(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetLabelingResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1227,8 +1243,11 @@ func TestPrintLabeling(t *testing.T) {
|
|||||||
resp, err := c.FBS().PrintLabeling(ctx, test.params)
|
resp, err := c.FBS().PrintLabeling(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &PrintLabelingResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1282,8 +1301,11 @@ func TestCreateTaskForGeneratingLabel(t *testing.T) {
|
|||||||
resp, err := c.FBS().CreateTaskForGeneratingLabel(ctx, test.params)
|
resp, err := c.FBS().CreateTaskForGeneratingLabel(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateTaskForGeneratingLabelResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1343,8 +1365,11 @@ func TestGetDropOffPointRestrictions(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetDropOffPointRestrictions(ctx, test.params)
|
resp, err := c.FBS().GetDropOffPointRestrictions(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetDropOffPointRestrictionsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1401,11 +1426,14 @@ func TestCheckProductItemsData(t *testing.T) {
|
|||||||
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
resp, err := c.FBS().CheckproductItemsData(ctx, test.params)
|
resp, err := c.FBS().CheckProductItemsData(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CheckProductItemsDataResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1468,8 +1496,11 @@ func TestGetProductItemsCheckStatuses(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetProductItemsCheckStatuses(ctx, test.params)
|
resp, err := c.FBS().GetProductItemsCheckStatuses(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductItemsCheckStatusesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1537,8 +1568,11 @@ func TestRescheduleShipmentDeliveryDate(t *testing.T) {
|
|||||||
resp, err := c.FBS().RescheduleShipmentDeliveryDate(ctx, test.params)
|
resp, err := c.FBS().RescheduleShipmentDeliveryDate(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &RescheduleShipmentDeliveryDateResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1589,8 +1623,11 @@ func TestDateAvailableForDeliverySchedule(t *testing.T) {
|
|||||||
resp, err := c.FBS().DateAvailableForDeliverySchedule(ctx, test.params)
|
resp, err := c.FBS().DateAvailableForDeliverySchedule(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &DateAvailableForDeliveryScheduleResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1649,8 +1686,11 @@ func TestListManufactoruingCountries(t *testing.T) {
|
|||||||
resp, err := c.FBS().ListManufacturingCountries(ctx, test.params)
|
resp, err := c.FBS().ListManufacturingCountries(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListManufacturingCountriesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1710,8 +1750,11 @@ func TestSetManufacturingCountry(t *testing.T) {
|
|||||||
resp, err := c.FBS().SetManufacturingCountry(ctx, test.params)
|
resp, err := c.FBS().SetManufacturingCountry(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &SetManufacturingCountryResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1778,8 +1821,11 @@ func TestPartialPackOrder(t *testing.T) {
|
|||||||
resp, err := c.FBS().PartialPackOrder(ctx, test.params)
|
resp, err := c.FBS().PartialPackOrder(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &PartialPackOrderResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1851,8 +1897,11 @@ func TestAvailableFreightsList(t *testing.T) {
|
|||||||
resp, err := c.FBS().AvailableFreightsList(ctx, test.params)
|
resp, err := c.FBS().AvailableFreightsList(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &AvailableFreightsListResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1899,8 +1948,11 @@ func TestGenerateAct(t *testing.T) {
|
|||||||
resp, err := c.FBS().GenerateAct(ctx, test.params)
|
resp, err := c.FBS().GenerateAct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GenerateActResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1949,8 +2001,11 @@ func TestGetDigitalAct(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetDigitalAct(ctx, test.params)
|
resp, err := c.FBS().GetDigitalAct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetDigitalActResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2004,8 +2059,11 @@ func TestPackageUnitLabels(t *testing.T) {
|
|||||||
resp, err := c.FBS().PackageUnitLabel(ctx, test.params)
|
resp, err := c.FBS().PackageUnitLabel(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &PackageUnitLabelsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2057,8 +2115,11 @@ func TestOpenDisputeOverShipment(t *testing.T) {
|
|||||||
resp, err := c.FBS().OpenDisputeOverShipment(ctx, test.params)
|
resp, err := c.FBS().OpenDisputeOverShipment(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &OpenDisputeOverShipmentResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2125,8 +2186,11 @@ func TestShipmentCancellationReasons(t *testing.T) {
|
|||||||
resp, err := c.FBS().ShipmentCancellationReasons(ctx, test.params)
|
resp, err := c.FBS().ShipmentCancellationReasons(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ShipmentCancellationReasonsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2221,8 +2285,11 @@ func TestShipmentsCancellationReasons(t *testing.T) {
|
|||||||
resp, err := c.FBS().ShipmentsCancellationReasons(ctx)
|
resp, err := c.FBS().ShipmentsCancellationReasons(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ShipmentsCancellationReasonsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2283,8 +2350,11 @@ func TestAddWeightForBulkProduct(t *testing.T) {
|
|||||||
resp, err := c.FBS().AddWeightForBulkProduct(ctx, test.params)
|
resp, err := c.FBS().AddWeightForBulkProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &AddWeightForBulkProductResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2344,8 +2414,11 @@ func TestCancelSending(t *testing.T) {
|
|||||||
resp, err := c.FBS().CancelSending(ctx, test.params)
|
resp, err := c.FBS().CancelSending(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CancelSendingResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2410,8 +2483,11 @@ func TestListShipmentInCertificate(t *testing.T) {
|
|||||||
resp, err := c.FBS().ListShipmentInCertificate(ctx, test.params)
|
resp, err := c.FBS().ListShipmentInCertificate(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListShipmentInCertificateResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2459,8 +2535,11 @@ func TestSpecifyNumberOfBoxes(t *testing.T) {
|
|||||||
resp, err := c.FBS().SpecifyNumberOfBoxes(ctx, test.params)
|
resp, err := c.FBS().SpecifyNumberOfBoxes(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &SpecifyNumberOfBoxesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2485,7 +2564,13 @@ func TestStatusOfAct(t *testing.T) {
|
|||||||
},
|
},
|
||||||
`{
|
`{
|
||||||
"result": {
|
"result": {
|
||||||
"result": true
|
"added_to_act": [
|
||||||
|
"true"
|
||||||
|
],
|
||||||
|
"removed_from_act": [
|
||||||
|
"false"
|
||||||
|
],
|
||||||
|
"status": "ready"
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
@@ -2508,8 +2593,11 @@ func TestStatusOfAct(t *testing.T) {
|
|||||||
resp, err := c.FBS().StatusOfAct(ctx, test.params)
|
resp, err := c.FBS().StatusOfAct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &StatusOfActResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2567,8 +2655,11 @@ func TestETGBCustomsDeclarations(t *testing.T) {
|
|||||||
resp, err := c.FBS().ETGBCustomsDeclarations(ctx, test.params)
|
resp, err := c.FBS().ETGBCustomsDeclarations(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ETGBCustomsDeclarationsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2616,8 +2707,11 @@ func TestBarcodeFromProductShipment(t *testing.T) {
|
|||||||
resp, err := c.FBS().BarcodeFromProductShipment(ctx, test.params)
|
resp, err := c.FBS().BarcodeFromProductShipment(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &BarcodeFromProductShipmentResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2675,8 +2769,11 @@ func TestBarcodeValueFromProductShipment(t *testing.T) {
|
|||||||
resp, err := c.FBS().BarcodeValueFromProductShipment(ctx, test.params)
|
resp, err := c.FBS().BarcodeValueFromProductShipment(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &BarcodeValueFromProductShipmentResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2730,8 +2827,11 @@ func TestGetActPDF(t *testing.T) {
|
|||||||
resp, err := c.FBS().GetActPDF(ctx, test.params)
|
resp, err := c.FBS().GetActPDF(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetActPDFResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ type GetTotalTransactionsSumResult struct {
|
|||||||
AccrualsForSale float64 `json:"accruals_for_sale"`
|
AccrualsForSale float64 `json:"accruals_for_sale"`
|
||||||
|
|
||||||
// Compensations
|
// Compensations
|
||||||
CompensationAmount float64 `json:"compensatino_amount"`
|
CompensationAmount float64 `json:"compensation_amount"`
|
||||||
|
|
||||||
// Charges for delivery and returns when working under rFBS scheme
|
// Charges for delivery and returns when working under rFBS scheme
|
||||||
MoneyTransfer float64 `json:"money_transfer"`
|
MoneyTransfer float64 `json:"money_transfer"`
|
||||||
|
|||||||
@@ -91,8 +91,11 @@ func TestReportOnSoldProducts(t *testing.T) {
|
|||||||
resp, err := c.Finance().ReportOnSoldProducts(ctx, test.params)
|
resp, err := c.Finance().ReportOnSoldProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ReportOnSoldProductsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -160,8 +163,11 @@ func TestGetTotalTransactionsSum(t *testing.T) {
|
|||||||
resp, err := c.Finance().GetTotalTransactionsSum(ctx, test.params)
|
resp, err := c.Finance().GetTotalTransactionsSum(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetTotalTransactionsSumResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -249,8 +255,11 @@ func TestListTransactions(t *testing.T) {
|
|||||||
resp, err := c.Finance().ListTransactions(ctx, test.params)
|
resp, err := c.Finance().ListTransactions(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListTransactionsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,8 +53,11 @@ func TestCreateUpdateProformaLink(t *testing.T) {
|
|||||||
resp, err := c.Invoices().CreateUpdate(ctx, test.params)
|
resp, err := c.Invoices().CreateUpdate(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateUpdateProformaLinkResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -102,8 +105,11 @@ func TestGetProformaLink(t *testing.T) {
|
|||||||
resp, err := c.Invoices().Get(ctx, test.params)
|
resp, err := c.Invoices().Get(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProformaLinkResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -149,8 +155,11 @@ func TestDeleteProformaLink(t *testing.T) {
|
|||||||
resp, err := c.Invoices().Delete(ctx, test.params)
|
resp, err := c.Invoices().Delete(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &DeleteProformaLinkResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -626,12 +626,14 @@ func TestNotificationServerErrors(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
continue
|
continue
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
gotJson, err := ioutil.ReadAll(httpResp.Body)
|
gotJson, err := ioutil.ReadAll(httpResp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
continue
|
continue
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := map[string]interface{}{}
|
expected := map[string]interface{}{}
|
||||||
@@ -640,16 +642,19 @@ func TestNotificationServerErrors(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
continue
|
continue
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
err = json.Unmarshal([]byte(testCase.response), &expected)
|
err = json.Unmarshal([]byte(testCase.response), &expected)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
continue
|
continue
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := compare(expected, got); err != nil {
|
if err := compare(expected, got); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
continue
|
continue
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ func TestCreateDeliveryPolygon(t *testing.T) {
|
|||||||
Coordinates: "[[[30.149574279785153,59.86550435303646],[30.21205902099609,59.846884387977326],[30.255661010742184,59.86240174913176],[30.149574279785153,59.86550435303646]]]",
|
Coordinates: "[[[30.149574279785153,59.86550435303646],[30.21205902099609,59.846884387977326],[30.255661010742184,59.86240174913176],[30.149574279785153,59.86550435303646]]]",
|
||||||
},
|
},
|
||||||
`{
|
`{
|
||||||
"polygonId": "1323"
|
"polygon_id": 1323
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
// Test No Client-Id or Api-Key
|
// Test No Client-Id or Api-Key
|
||||||
@@ -47,8 +47,11 @@ func TestCreateDeliveryPolygon(t *testing.T) {
|
|||||||
resp, err := c.Polygons().CreateDelivery(ctx, test.params)
|
resp, err := c.Polygons().CreateDelivery(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateDeliveryPolygonResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -102,8 +105,11 @@ func TestLinkDeliveryMethodToPolygon(t *testing.T) {
|
|||||||
resp, err := c.Polygons().Link(ctx, test.params)
|
resp, err := c.Polygons().Link(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &LinkDeliveryMethodToPolygonResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,66 +16,66 @@ type GetStocksInfoParams struct {
|
|||||||
// Identifier of the last value on the page. Leave this field blank in the first request.
|
// Identifier of the last value on the page. Leave this field blank in the first request.
|
||||||
//
|
//
|
||||||
// To get the next values, specify last_id from the response of the previous request.
|
// To get the next values, specify last_id from the response of the previous request.
|
||||||
LastId string `json:"last_id,omitempty"`
|
LastId string `json:"last_id"`
|
||||||
|
|
||||||
// Number of values per page. Minimum is 1, maximum is 1000
|
// Number of values per page. Minimum is 1, maximum is 1000
|
||||||
Limit int64 `json:"limit,omitempty"`
|
Limit int64 `json:"limit"`
|
||||||
|
|
||||||
// Filter by product
|
// Filter by product
|
||||||
Filter GetStocksInfoFilter `json:"filter,omitempty"`
|
Filter GetStocksInfoFilter `json:"filter"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetStocksInfoFilter struct {
|
type GetStocksInfoFilter struct {
|
||||||
// Filter by the offer_id parameter. It is possible to pass a list of values
|
// Filter by the offer_id parameter. It is possible to pass a list of values
|
||||||
OfferId string `json:"offer_id,omitempty"`
|
OfferId string `json:"offer_id"`
|
||||||
|
|
||||||
// Filter by the product_id parameter. It is possible to pass a list of values
|
// Filter by the product_id parameter. It is possible to pass a list of values
|
||||||
ProductId int64 `json:"product_id,omitempty"`
|
ProductId int64 `json:"product_id"`
|
||||||
|
|
||||||
// Filter by product visibility
|
// Filter by product visibility
|
||||||
Visibility string `json:"visibility,omitempty"`
|
Visibility string `json:"visibility"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetStocksInfoResponse struct {
|
type GetStocksInfoResponse struct {
|
||||||
core.CommonResponse
|
core.CommonResponse
|
||||||
|
|
||||||
// Method Result
|
// Method Result
|
||||||
Result GetStocksInfoResult `json:"result,omitempty"`
|
Result GetStocksInfoResult `json:"result"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetStocksInfoResult struct {
|
type GetStocksInfoResult struct {
|
||||||
// Identifier of the last value on the page
|
// Identifier of the last value on the page
|
||||||
//
|
//
|
||||||
// To get the next values, specify the recieved value in the next request in the last_id parameter
|
// To get the next values, specify the recieved value in the next request in the last_id parameter
|
||||||
LastId string `json:"last_id,omitempty"`
|
LastId string `json:"last_id"`
|
||||||
|
|
||||||
// The number of unique products for which information about stocks is displayed
|
// The number of unique products for which information about stocks is displayed
|
||||||
Total int32 `json:"total,omitempty"`
|
Total int32 `json:"total"`
|
||||||
|
|
||||||
// Product details
|
// Product details
|
||||||
Items []GetStocksInfoResultItem `json:"items,omitempty"`
|
Items []GetStocksInfoResultItem `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetStocksInfoResultItem struct {
|
type GetStocksInfoResultItem struct {
|
||||||
// Product identifier in the seller's system
|
// Product identifier in the seller's system
|
||||||
OfferId string `json:"offer_id,omitempty"`
|
OfferId string `json:"offer_id"`
|
||||||
|
|
||||||
// Product identifier
|
// Product identifier
|
||||||
ProductId int64 `json:"product_id,omitempty"`
|
ProductId int64 `json:"product_id"`
|
||||||
|
|
||||||
// Stock details
|
// Stock details
|
||||||
Stocks []GetStocksInfoResultItemStock `json:"stocks,omitempty"`
|
Stocks []GetStocksInfoResultItemStock `json:"stocks"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetStocksInfoResultItemStock struct {
|
type GetStocksInfoResultItemStock struct {
|
||||||
// In a warehouse
|
// In a warehouse
|
||||||
Present int32 `json:"present,omitempty"`
|
Present int32 `json:"present"`
|
||||||
|
|
||||||
// Reserved
|
// Reserved
|
||||||
Reserved int32 `json:"reserved,omitempty"`
|
Reserved int32 `json:"reserved"`
|
||||||
|
|
||||||
// Warehouse type
|
// Warehouse type
|
||||||
Type string `json:"type,omitempty" default:"ALL"`
|
Type string `json:"type" default:"ALL"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns information about the quantity of products in stock:
|
// Returns information about the quantity of products in stock:
|
||||||
@@ -112,7 +112,7 @@ type GetProductDetailsResponse struct {
|
|||||||
core.CommonResponse
|
core.CommonResponse
|
||||||
|
|
||||||
// Request results
|
// Request results
|
||||||
Result ProductDetails `json:"Result"`
|
Result ProductDetails `json:"result"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductDetails struct {
|
type ProductDetails struct {
|
||||||
@@ -210,12 +210,12 @@ type ProductDetails struct {
|
|||||||
Price string `json:"price"`
|
Price string `json:"price"`
|
||||||
|
|
||||||
// Product price indexes
|
// Product price indexes
|
||||||
PriceIndexes ProductDetailPriceIndex `json:"prices_indexes"`
|
PriceIndexes ProductDetailPriceIndex `json:"price_indexes"`
|
||||||
|
|
||||||
// Deprecated: Price index. Learn more in Help Center
|
// Deprecated: Price index. Learn more in Help Center
|
||||||
//
|
//
|
||||||
// Use PriceIndexes instead
|
// Use PriceIndexes instead
|
||||||
PriceIndex string `json:"price_idnex"`
|
PriceIndex string `json:"price_index"`
|
||||||
|
|
||||||
// Product price suggested by the system based on similar offers
|
// Product price suggested by the system based on similar offers
|
||||||
RecommendedPrice string `json:"recommended_price"`
|
RecommendedPrice string `json:"recommended_price"`
|
||||||
@@ -242,7 +242,7 @@ type ProductDetails struct {
|
|||||||
Visible bool `json:"visible"`
|
Visible bool `json:"visible"`
|
||||||
|
|
||||||
// Product volume weight
|
// Product volume weight
|
||||||
VolumeWeight float64 `json:"volume_weights"`
|
VolumeWeight float64 `json:"volume_weight"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductDetailCommission struct {
|
type ProductDetailCommission struct {
|
||||||
@@ -276,7 +276,7 @@ type ProductDetailPriceIndex struct {
|
|||||||
PriceIndex string `json:"price_index"`
|
PriceIndex string `json:"price_index"`
|
||||||
|
|
||||||
// Price of your product on other marketplaces
|
// Price of your product on other marketplaces
|
||||||
SelfMarketplaceIndexData ProductDetailPriceIndexSelfMarketplace `json:"self_marketplace_index_data"`
|
SelfMarketplaceIndexData ProductDetailPriceIndexSelfMarketplace `json:"self_marketplaces_index_data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductDetailPriceIndexExternal struct {
|
type ProductDetailPriceIndexExternal struct {
|
||||||
@@ -374,6 +374,8 @@ type ProductDetailStock struct {
|
|||||||
|
|
||||||
type ProductDetailVisibilityDetails struct {
|
type ProductDetailVisibilityDetails struct {
|
||||||
// If the product is active, the value is true
|
// If the product is active, the value is true
|
||||||
|
//
|
||||||
|
// Deprecated: Use `visible` parameter of `ProductDetails`
|
||||||
ActiveProduct bool `json:"active_product"`
|
ActiveProduct bool `json:"active_product"`
|
||||||
|
|
||||||
// If the price is set, the value is true
|
// If the price is set, the value is true
|
||||||
@@ -381,6 +383,9 @@ type ProductDetailVisibilityDetails struct {
|
|||||||
|
|
||||||
// If there is stock at the warehouses, the value is true
|
// If there is stock at the warehouses, the value is true
|
||||||
HasStock bool `json:"has_stock"`
|
HasStock bool `json:"has_stock"`
|
||||||
|
|
||||||
|
// Reason why the product is hidden
|
||||||
|
Reasons map[string]interface{} `json:"reasons"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductDiscountedStocks struct {
|
type ProductDiscountedStocks struct {
|
||||||
@@ -559,7 +564,7 @@ type UpdateQuantityStockProductsResultError struct {
|
|||||||
//
|
//
|
||||||
// You can update the stock of one product in one warehouse only once in 2 minutes, otherwise there will be the TOO_MANY_REQUESTS error in the response.
|
// You can update the stock of one product in one warehouse only once in 2 minutes, otherwise there will be the TOO_MANY_REQUESTS error in the response.
|
||||||
//
|
//
|
||||||
// Availability can only be set after the product status has been changed to processed.
|
// You can set the availability of an item only after the product status is changed to price_sent
|
||||||
//
|
//
|
||||||
// Bulky products stock can only be updated in the warehouses for bulky products.
|
// Bulky products stock can only be updated in the warehouses for bulky products.
|
||||||
func (c Products) UpdateQuantityStockProducts(ctx context.Context, params *UpdateQuantityStockProductsParams) (*UpdateQuantityStockProductsResponse, error) {
|
func (c Products) UpdateQuantityStockProducts(ctx context.Context, params *UpdateQuantityStockProductsParams) (*UpdateQuantityStockProductsResponse, error) {
|
||||||
@@ -1150,6 +1155,10 @@ type CreateProductsByOzonIDItem struct {
|
|||||||
type CreateProductByOzonIDResponse struct {
|
type CreateProductByOzonIDResponse struct {
|
||||||
core.CommonResponse
|
core.CommonResponse
|
||||||
|
|
||||||
|
Result CreateProductByOzonIDResult `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreateProductByOzonIDResult struct {
|
||||||
// Products import task code
|
// Products import task code
|
||||||
TaskId int64 `json:"task_id"`
|
TaskId int64 `json:"task_id"`
|
||||||
|
|
||||||
@@ -1942,7 +1951,7 @@ type GetPRoductPriceInfoResultItem struct {
|
|||||||
PriceIndex string `json:"price_index"`
|
PriceIndex string `json:"price_index"`
|
||||||
|
|
||||||
// Product price indexes
|
// Product price indexes
|
||||||
PriceIndexes GetProductPriceInfoResultItemPriceIndexes `json:"prices_indexes"`
|
PriceIndexes GetProductPriceInfoResultItemPriceIndexes `json:"price_indexes"`
|
||||||
|
|
||||||
// Product identifier
|
// Product identifier
|
||||||
ProductId int64 `json:"product_id"`
|
ProductId int64 `json:"product_id"`
|
||||||
@@ -1986,7 +1995,7 @@ type GetProductPriceInfoResultItemCommission struct {
|
|||||||
FBSShipmentProcessingToFee float64 `json:"fbs_first_mile_min_amount"`
|
FBSShipmentProcessingToFee float64 `json:"fbs_first_mile_min_amount"`
|
||||||
|
|
||||||
// Maximal shipment processing fee (FBS) — 25 rubles
|
// Maximal shipment processing fee (FBS) — 25 rubles
|
||||||
FBSShipmentProcessingFromFee float64 `json:"Shipment processing fee from (FBS)"`
|
FBSShipmentProcessingFromFee float64 `json:"fbs_first_mile_max_amount"`
|
||||||
|
|
||||||
// Return and cancellation fees, shipment processing (FBS)
|
// Return and cancellation fees, shipment processing (FBS)
|
||||||
FBSReturnCancellationProcessingFee float64 `json:"fbs_return_flow_amount"`
|
FBSReturnCancellationProcessingFee float64 `json:"fbs_return_flow_amount"`
|
||||||
@@ -2084,7 +2093,7 @@ type GetProductPriceInfoResultItemPriceIndexes struct {
|
|||||||
PriceIndex string `json:"price_index"`
|
PriceIndex string `json:"price_index"`
|
||||||
|
|
||||||
// Price of your product on other marketplaces
|
// Price of your product on other marketplaces
|
||||||
SelfMarketplaceIndexData GetProductPriceInfoResultItemPriceIndexesSelfMarketplace `json:"self_marketplace_index_data"`
|
SelfMarketplaceIndexData GetProductPriceInfoResultItemPriceIndexesSelfMarketplace `json:"self_marketplaces_index_data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetProductPriceInfoResultItemPriceIndexesExternal struct {
|
type GetProductPriceInfoResultItemPriceIndexesExternal struct {
|
||||||
@@ -2164,7 +2173,7 @@ type GetMarkdownInfoItem struct {
|
|||||||
// - 3 — very good,
|
// - 3 — very good,
|
||||||
// - 4 — excellent,
|
// - 4 — excellent,
|
||||||
// - 5–7 — like new
|
// - 5–7 — like new
|
||||||
ConditionEstimate string `json:"condition_estimate"`
|
ConditionEstimation string `json:"condition_estimation"`
|
||||||
|
|
||||||
// Product defects
|
// Product defects
|
||||||
Defects string `json:"defects"`
|
Defects string `json:"defects"`
|
||||||
|
|||||||
@@ -75,8 +75,11 @@ func TestGetStocksInfo(t *testing.T) {
|
|||||||
resp, err := c.Products().GetStocksInfo(ctx, test.params)
|
resp, err := c.Products().GetStocksInfo(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetStocksInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -161,7 +164,6 @@ func TestGetProductDetails(t *testing.T) {
|
|||||||
"present": 0,
|
"present": 0,
|
||||||
"reserved": 0
|
"reserved": 0
|
||||||
},
|
},
|
||||||
"errors": [],
|
|
||||||
"updated_at": "2023-02-09T06:46:44.152Z",
|
"updated_at": "2023-02-09T06:46:44.152Z",
|
||||||
"vat": "0.0",
|
"vat": "0.0",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
@@ -273,8 +275,11 @@ func TestGetProductDetails(t *testing.T) {
|
|||||||
resp, err := c.Products().GetProductDetails(ctx, test.params)
|
resp, err := c.Products().GetProductDetails(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductDetailsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -348,8 +353,11 @@ func TestUpdateStocks(t *testing.T) {
|
|||||||
resp, err := c.Products().UpdateStocks(ctx, test.params)
|
resp, err := c.Products().UpdateStocks(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UpdateStocksResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -418,8 +426,11 @@ func TestStocksInSellersWarehouse(t *testing.T) {
|
|||||||
resp, err := c.Products().StocksInSellersWarehouse(ctx, test.params)
|
resp, err := c.Products().StocksInSellersWarehouse(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &StocksInSellersWarehouseResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -493,8 +504,11 @@ func TestUpdatePrices(t *testing.T) {
|
|||||||
resp, err := c.Products().UpdatePrices(ctx, test.params)
|
resp, err := c.Products().UpdatePrices(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UpdatePricesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -566,8 +580,11 @@ func TestUpdateQuantityStockProducts(t *testing.T) {
|
|||||||
resp, err := c.Products().UpdateQuantityStockProducts(ctx, test.params)
|
resp, err := c.Products().UpdateQuantityStockProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UpdateQuantityStockProductsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -701,8 +718,11 @@ func TestCreateOrUpdateProduct(t *testing.T) {
|
|||||||
resp, err := c.Products().CreateOrUpdateProduct(ctx, test.params)
|
resp, err := c.Products().CreateOrUpdateProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateOrUpdateProductResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -769,8 +789,11 @@ func TestGetListOfProducts(t *testing.T) {
|
|||||||
resp, err := c.Products().GetListOfProducts(ctx, test.params)
|
resp, err := c.Products().GetListOfProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetListOfProductsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1016,8 +1039,11 @@ func TestGetProductsRatingBySKU(t *testing.T) {
|
|||||||
resp, err := c.Products().GetProductsRatingBySKU(ctx, test.params)
|
resp, err := c.Products().GetProductsRatingBySKU(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductsRatingBySKUResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1084,8 +1110,11 @@ func TestGetProductImportStatus(t *testing.T) {
|
|||||||
resp, err := c.Products().GetProductImportStatus(ctx, test.params)
|
resp, err := c.Products().GetProductImportStatus(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductImportStatusResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1156,8 +1185,11 @@ func TestCreateProductByOzonID(t *testing.T) {
|
|||||||
resp, err := c.Products().CreateProductByOzonID(ctx, test.params)
|
resp, err := c.Products().CreateProductByOzonID(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateProductByOzonIDResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1225,8 +1257,11 @@ func TestUpdateProductImages(t *testing.T) {
|
|||||||
resp, err := c.Products().UpdateProductImages(ctx, test.params)
|
resp, err := c.Products().UpdateProductImages(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1294,8 +1329,11 @@ func TestCheckImageUploadingStatus(t *testing.T) {
|
|||||||
resp, err := c.Products().CheckImageUploadingStatus(ctx, test.params)
|
resp, err := c.Products().CheckImageUploadingStatus(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1368,13 +1406,11 @@ func TestListProductsByIDs(t *testing.T) {
|
|||||||
"source": "fbs"
|
"source": "fbs"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"state": "",
|
|
||||||
"stocks": {
|
"stocks": {
|
||||||
"coming": 0,
|
"coming": 0,
|
||||||
"present": 13,
|
"present": 13,
|
||||||
"reserved": 0
|
"reserved": 0
|
||||||
},
|
},
|
||||||
"errors": [],
|
|
||||||
"updated_at": "2023-02-09T06:46:44.152Z",
|
"updated_at": "2023-02-09T06:46:44.152Z",
|
||||||
"vat": "0.0",
|
"vat": "0.0",
|
||||||
"visible": true,
|
"visible": true,
|
||||||
@@ -1410,7 +1446,6 @@ func TestListProductsByIDs(t *testing.T) {
|
|||||||
"offer_id": "23",
|
"offer_id": "23",
|
||||||
"barcode": "",
|
"barcode": "",
|
||||||
"buybox_price": "",
|
"buybox_price": "",
|
||||||
"category_id": 90635895,
|
|
||||||
"created_at": "2021-05-26T20:26:07.565586Z",
|
"created_at": "2021-05-26T20:26:07.565586Z",
|
||||||
"images": [],
|
"images": [],
|
||||||
"marketing_price": "",
|
"marketing_price": "",
|
||||||
@@ -1431,13 +1466,11 @@ func TestListProductsByIDs(t *testing.T) {
|
|||||||
"source": "fbs"
|
"source": "fbs"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"state": "",
|
|
||||||
"stocks": {
|
"stocks": {
|
||||||
"coming": 0,
|
"coming": 0,
|
||||||
"present": 19,
|
"present": 19,
|
||||||
"reserved": 0
|
"reserved": 0
|
||||||
},
|
},
|
||||||
"errors": [],
|
|
||||||
"updated_at": "2023-02-09T06:46:44.152Z",
|
"updated_at": "2023-02-09T06:46:44.152Z",
|
||||||
"vat": "0.0",
|
"vat": "0.0",
|
||||||
"visible": true,
|
"visible": true,
|
||||||
@@ -1490,8 +1523,11 @@ func TestListProductsByIDs(t *testing.T) {
|
|||||||
resp, err := c.Products().ListProductsByIDs(ctx, test.params)
|
resp, err := c.Products().ListProductsByIDs(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListProductsByIDsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1698,8 +1734,7 @@ func TestGetDescriptionOfProduct(t *testing.T) {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"complex_attributes": [],
|
"complex_attributes": [],
|
||||||
"color_image": "",
|
"color_image": ""
|
||||||
"last_id": ""
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"total": 1,
|
"total": 1,
|
||||||
@@ -1725,8 +1760,11 @@ func TestGetDescriptionOfProduct(t *testing.T) {
|
|||||||
resp, err := c.Products().GetDescriptionOfProduct(ctx, test.params)
|
resp, err := c.Products().GetDescriptionOfProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetDescriptionOfProductResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1784,8 +1822,11 @@ func TestGetProductDescription(t *testing.T) {
|
|||||||
resp, err := c.Products().GetProductDescription(ctx, test.params)
|
resp, err := c.Products().GetProductDescription(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductDescriptionResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1848,8 +1889,11 @@ func TestGetProductRangeLimit(t *testing.T) {
|
|||||||
resp, err := c.Products().GetProductRangeLimit(ctx)
|
resp, err := c.Products().GetProductRangeLimit(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductRangeLimitResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1905,8 +1949,11 @@ func TestChangeProductIDs(t *testing.T) {
|
|||||||
resp, err := c.Products().ChangeProductIDs(ctx, test.params)
|
resp, err := c.Products().ChangeProductIDs(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ChangeProductIDsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1952,8 +1999,11 @@ func TestArchiveProduct(t *testing.T) {
|
|||||||
resp, err := c.Products().ArchiveProduct(ctx, test.params)
|
resp, err := c.Products().ArchiveProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ArchiveProductResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -1999,8 +2049,11 @@ func TestUnarchiveProduct(t *testing.T) {
|
|||||||
resp, err := c.Products().UnarchiveProduct(ctx, test.params)
|
resp, err := c.Products().UnarchiveProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ArchiveProductResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2056,8 +2109,11 @@ func TestRemoveProductWithoutSKU(t *testing.T) {
|
|||||||
resp, err := c.Products().RemoveProductWithoutSKU(ctx, test.params)
|
resp, err := c.Products().RemoveProductWithoutSKU(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &RemoveProductWithoutSKUResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2134,8 +2190,11 @@ func TestListGeoRestrictions(t *testing.T) {
|
|||||||
resp, err := c.Products().ListGeoRestrictions(ctx, test.params)
|
resp, err := c.Products().ListGeoRestrictions(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListGeoRestrictionsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2184,8 +2243,11 @@ func TestUploadActivationCodes(t *testing.T) {
|
|||||||
resp, err := c.Products().UploadActivationCodes(ctx, test.params)
|
resp, err := c.Products().UploadActivationCodes(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UploadActivationCodesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2233,8 +2295,11 @@ func TestStatusOfUploadingActivationCodes(t *testing.T) {
|
|||||||
resp, err := c.Products().StatusOfUploadingActivationCodes(ctx, test.params)
|
resp, err := c.Products().StatusOfUploadingActivationCodes(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &StatusOfUploadingActivationCodesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2347,8 +2412,11 @@ func TestGetProductPriceInfo(t *testing.T) {
|
|||||||
resp, err := c.Products().GetProductPriceInfo(ctx, test.params)
|
resp, err := c.Products().GetProductPriceInfo(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetProductPriceInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -2410,6 +2478,7 @@ func TestGetMarkdownInfo(t *testing.T) {
|
|||||||
resp, err := c.Products().GetMarkdownInfo(ctx, test.params)
|
resp, err := c.Products().GetMarkdownInfo(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
@@ -2417,6 +2486,8 @@ func TestGetMarkdownInfo(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode == http.StatusOK {
|
if resp.StatusCode == http.StatusOK {
|
||||||
|
compareJsonResponse(t, test.response, &GetMarkdownInfoResponse{})
|
||||||
|
|
||||||
if len(resp.Items) > 0 {
|
if len(resp.Items) > 0 {
|
||||||
if fmt.Sprint(resp.Items[0].DiscountedSKU) != test.params.DiscountedSKUs[0] {
|
if fmt.Sprint(resp.Items[0].DiscountedSKU) != test.params.DiscountedSKUs[0] {
|
||||||
t.Errorf("SKUs in reqest and resonse are not equal")
|
t.Errorf("SKUs in reqest and resonse are not equal")
|
||||||
@@ -2466,11 +2537,14 @@ func TestSetDiscountOnMarkdownProduct(t *testing.T) {
|
|||||||
resp, err := c.Products().SetDiscountOnMarkdownProduct(ctx, test.params)
|
resp, err := c.Products().SetDiscountOnMarkdownProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &SetDiscountOnMarkdownProductResponse{})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2518,12 +2592,15 @@ func TestNumberOfSubsToProductAvailability(t *testing.T) {
|
|||||||
resp, err := c.Products().NumberOfSubsToProductAvailability(ctx, test.params)
|
resp, err := c.Products().NumberOfSubsToProductAvailability(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &NumberOfSubsToProductAvailabilityResponse{})
|
||||||
|
|
||||||
if resp.StatusCode == http.StatusOK {
|
if resp.StatusCode == http.StatusOK {
|
||||||
if len(resp.Result) != len(test.params.SKUS) {
|
if len(resp.Result) != len(test.params.SKUS) {
|
||||||
t.Errorf("Length of SKUS in request and response are not equal")
|
t.Errorf("Length of SKUS in request and response are not equal")
|
||||||
@@ -2593,11 +2670,14 @@ func TestUpdateCharacteristics(t *testing.T) {
|
|||||||
resp, err := c.Products().UpdateCharacteristics(ctx, test.params)
|
resp, err := c.Products().UpdateCharacteristics(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UpdateCharacteristicsResponse{})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2655,12 +2735,15 @@ func TestGetRelatedSKUs(t *testing.T) {
|
|||||||
resp, err := c.Products().GetRelatedSKUs(ctx, test.params)
|
resp, err := c.Products().GetRelatedSKUs(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetRelatedSKUsResponse{})
|
||||||
|
|
||||||
if len(resp.Errors)+len(resp.Items) != len(test.params.SKUs) {
|
if len(resp.Errors)+len(resp.Items) != len(test.params.SKUs) {
|
||||||
t.Errorf("expected equal length of skus in request and response")
|
t.Errorf("expected equal length of skus in request and response")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ type GetAvailablePromotionsResult struct {
|
|||||||
ParticipatingProductsCount float64 `json:"participating_products_count"`
|
ParticipatingProductsCount float64 `json:"participating_products_count"`
|
||||||
|
|
||||||
// Whether or not you participate in the promotion
|
// Whether or not you participate in the promotion
|
||||||
IsParticipating bool `json:"participating"`
|
IsParticipating bool `json:"is_participating"`
|
||||||
|
|
||||||
// Indication that customers need a promo code to participate in the promotion
|
// Indication that customers need a promo code to participate in the promotion
|
||||||
IsVoucherAction bool `json:"is_voucher_action"`
|
IsVoucherAction bool `json:"is_voucher_action"`
|
||||||
@@ -183,7 +183,7 @@ type PromotionProduct struct {
|
|||||||
ActionPrice float64 `json:"action_price"`
|
ActionPrice float64 `json:"action_price"`
|
||||||
|
|
||||||
// Maximum possible promotional product price
|
// Maximum possible promotional product price
|
||||||
MaxActionType float64 `json:"max_action_type"`
|
MaxActionPrice float64 `json:"max_action_price"`
|
||||||
|
|
||||||
// Type of adding a product to the promotion: automatically or manually by the seller
|
// Type of adding a product to the promotion: automatically or manually by the seller
|
||||||
AddMode string `json:"add_mode"`
|
AddMode string `json:"add_mode"`
|
||||||
@@ -225,7 +225,7 @@ type ProductsInPromotionResponse struct {
|
|||||||
core.CommonResponse
|
core.CommonResponse
|
||||||
|
|
||||||
// Method result
|
// Method result
|
||||||
Result ProductsInPromotionResult `json:"reuslt"`
|
Result ProductsInPromotionResult `json:"result"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductsInPromotionResult struct {
|
type ProductsInPromotionResult struct {
|
||||||
@@ -387,7 +387,7 @@ type ProductsAvailableForHotSalePromotionResultProduct struct {
|
|||||||
IsActive bool `json:"is_active"`
|
IsActive bool `json:"is_active"`
|
||||||
|
|
||||||
// Maximum possible promotional price of the product
|
// Maximum possible promotional price of the product
|
||||||
MaxActionPrice float64 `json:"max_action_type"`
|
MaxActionPrice float64 `json:"max_action_price"`
|
||||||
|
|
||||||
// Minimum number of product units in a stock discount type promotion
|
// Minimum number of product units in a stock discount type promotion
|
||||||
MinStock float64 `json:"min_stock"`
|
MinStock float64 `json:"min_stock"`
|
||||||
|
|||||||
@@ -61,8 +61,11 @@ func TestGetAvailablePromotions(t *testing.T) {
|
|||||||
resp, err := c.Promotions().GetAvailablePromotions(ctx)
|
resp, err := c.Promotions().GetAvailablePromotions(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetAvailablePromotionsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -131,8 +134,11 @@ func TestAddToPromotion(t *testing.T) {
|
|||||||
resp, err := c.Promotions().AddToPromotion(ctx, test.params)
|
resp, err := c.Promotions().AddToPromotion(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &AddProductToPromotionResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -208,8 +214,11 @@ func TestProductsAvailableForPromotion(t *testing.T) {
|
|||||||
resp, err := c.Promotions().ProductsAvailableForPromotion(ctx, test.params)
|
resp, err := c.Promotions().ProductsAvailableForPromotion(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductsAvailableForPromotionResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -270,8 +279,11 @@ func TestProductsInPromotion(t *testing.T) {
|
|||||||
resp, err := c.Promotions().ProductsInPromotion(ctx, test.params)
|
resp, err := c.Promotions().ProductsInPromotion(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductsInPromotionResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -323,8 +335,11 @@ func TestRemoveProduct(t *testing.T) {
|
|||||||
resp, err := c.Promotions().RemoveProduct(ctx, test.params)
|
resp, err := c.Promotions().RemoveProduct(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &RemoveProductFromPromotionResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -383,8 +398,11 @@ func TestListHotSalePromotions(t *testing.T) {
|
|||||||
resp, err := c.Promotions().ListHotSalePromotions(ctx)
|
resp, err := c.Promotions().ListHotSalePromotions(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListHotSalePromotionsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -445,8 +463,11 @@ func TestProductsAvailableForHotSalePromotion(t *testing.T) {
|
|||||||
resp, err := c.Promotions().ProductsAvailableForHotSalePromotion(ctx, test.params)
|
resp, err := c.Promotions().ProductsAvailableForHotSalePromotion(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductsAvailableForHotSalePromotionResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -506,8 +527,11 @@ func TestAddProductsToHotSale(t *testing.T) {
|
|||||||
resp, err := c.Promotions().AddProductsToHotSale(ctx, test.params)
|
resp, err := c.Promotions().AddProductsToHotSale(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductsToHotSaleResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -561,8 +585,11 @@ func TestRemoveProductsToHotSale(t *testing.T) {
|
|||||||
resp, err := c.Promotions().RemoveProductsToHotSale(ctx, test.params)
|
resp, err := c.Promotions().RemoveProductsToHotSale(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ProductsToHotSaleResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -648,8 +675,11 @@ func TestListDiscountRequests(t *testing.T) {
|
|||||||
resp, err := c.Promotions().ListDiscountRequests(ctx, test.params)
|
resp, err := c.Promotions().ListDiscountRequests(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListDiscountRequestsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -712,8 +742,11 @@ func TestApproveDiscountRequest(t *testing.T) {
|
|||||||
resp, err := c.Promotions().ApproveDiscountRequest(ctx, test.params)
|
resp, err := c.Promotions().ApproveDiscountRequest(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &DiscountRequestResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -776,8 +809,11 @@ func TestDeclineDiscountRequest(t *testing.T) {
|
|||||||
resp, err := c.Promotions().DeclineDiscountRequest(ctx, test.params)
|
resp, err := c.Promotions().DeclineDiscountRequest(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &DiscountRequestResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ type GetCurrentSellerRatingInfoResponse struct {
|
|||||||
|
|
||||||
// Rating groups list
|
// Rating groups list
|
||||||
Groups []GetCurrentSellerRatingInfoGroup `json:"groups"`
|
Groups []GetCurrentSellerRatingInfoGroup `json:"groups"`
|
||||||
|
|
||||||
|
// An indication that the penalty points balance is exceeded
|
||||||
|
PenaltyScoreExceeded bool `json:"penalty_score_exceeded"`
|
||||||
|
|
||||||
|
// An indication that you participate in the Premium program
|
||||||
|
Premium bool `json:"premium"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetCurrentSellerRatingInfoGroup struct {
|
type GetCurrentSellerRatingInfoGroup struct {
|
||||||
@@ -25,12 +31,6 @@ type GetCurrentSellerRatingInfoGroup struct {
|
|||||||
|
|
||||||
// Ratings list
|
// Ratings list
|
||||||
Items []GetCurrentSellerRatingInfoGroupItem `json:"items"`
|
Items []GetCurrentSellerRatingInfoGroupItem `json:"items"`
|
||||||
|
|
||||||
// An indication that the penalty points balance is exceeded
|
|
||||||
PenaltyScoreExceeded bool `json:"penalty_score_exceeded"`
|
|
||||||
|
|
||||||
// An indication that you participate in the Premium program
|
|
||||||
Premium bool `json:"premium"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetCurrentSellerRatingInfoGroupItem struct {
|
type GetCurrentSellerRatingInfoGroupItem struct {
|
||||||
|
|||||||
@@ -63,8 +63,11 @@ func TestGetCurrentRatingInfo(t *testing.T) {
|
|||||||
resp, err := c.Rating().GetCurrentSellerRatingInfo(ctx)
|
resp, err := c.Rating().GetCurrentSellerRatingInfo(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetCurrentSellerRatingInfoResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -152,8 +155,11 @@ func TestGetRatingInfoForPeriod(t *testing.T) {
|
|||||||
resp, err := c.Rating().GetSellerRatingInfoForPeriod(ctx, test.params)
|
resp, err := c.Rating().GetSellerRatingInfoForPeriod(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetSellerRatingInfoPeriodResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
162
ozon/reports.go
162
ozon/reports.go
@@ -61,6 +61,9 @@ type GetReportsListResultReport struct {
|
|||||||
Error string `json:"error"`
|
Error string `json:"error"`
|
||||||
|
|
||||||
// Link to CSV file
|
// Link to CSV file
|
||||||
|
//
|
||||||
|
// For a report with the SELLER_RETURNS type,
|
||||||
|
// the link is available within 5 minutes after making a request.
|
||||||
File string `json:"file"`
|
File string `json:"file"`
|
||||||
|
|
||||||
// Array with the filters specified when the seller created the report
|
// Array with the filters specified when the seller created the report
|
||||||
@@ -193,7 +196,7 @@ type GetFinancialResultResultCashflow struct {
|
|||||||
Period GetFinancialResultResultCashflowPeriod `json:"period"`
|
Period GetFinancialResultResultCashflowPeriod `json:"period"`
|
||||||
|
|
||||||
// Sum of sold products prices
|
// Sum of sold products prices
|
||||||
OrdersAmount float64 `json:"order_amount"`
|
OrdersAmount float64 `json:"orders_amount"`
|
||||||
|
|
||||||
// Sum of returned products prices
|
// Sum of returned products prices
|
||||||
ReturnsAmount float64 `json:"returns_amount"`
|
ReturnsAmount float64 `json:"returns_amount"`
|
||||||
@@ -445,86 +448,6 @@ func (c Reports) GetProducts(ctx context.Context, params *GetProductsReportParam
|
|||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetStocksReportParams struct {
|
|
||||||
// Default: "DEFAULT"
|
|
||||||
// Response language:
|
|
||||||
// - RU — Russian
|
|
||||||
// - EN — English
|
|
||||||
Language string `json:"language" default:"DEFAULT"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetStocksReportResponse struct {
|
|
||||||
core.CommonResponse
|
|
||||||
|
|
||||||
// Method result
|
|
||||||
Result GetStocksReportResult `json:"result"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetStocksReportResult struct {
|
|
||||||
// Unique report identifier
|
|
||||||
Code string `json:"code"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Report with information about the number of available and reserved products in stock
|
|
||||||
func (c Reports) GetStocks(ctx context.Context, params *GetStocksReportParams) (*GetStocksReportResponse, error) {
|
|
||||||
url := "/v1/report/stock/create"
|
|
||||||
|
|
||||||
resp := &GetStocksReportResponse{}
|
|
||||||
|
|
||||||
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
response.CopyCommonResponse(&resp.CommonResponse)
|
|
||||||
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetProductsMovementReportParams struct {
|
|
||||||
// Date from which the data will be in the report
|
|
||||||
DateFrom time.Time `json:"date_from"`
|
|
||||||
|
|
||||||
// Date up to which the data will be in the report
|
|
||||||
DateTo time.Time `json:"date_to"`
|
|
||||||
|
|
||||||
// Default: "DEFAULT"
|
|
||||||
// Response language:
|
|
||||||
// - RU — Russian
|
|
||||||
// - EN — English
|
|
||||||
Language string `json:"language" default:"DEFAULT"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetProductsMovementReportResponse struct {
|
|
||||||
core.CommonResponse
|
|
||||||
|
|
||||||
// Method result
|
|
||||||
Result GetProductsMovementReportResult `json:"result"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetProductsMovementReportResult struct {
|
|
||||||
// Unique report identifier
|
|
||||||
Code string `json:"code"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Report with complete information on products, as well as the number of products with statuses:
|
|
||||||
// - products with defects or in inventory,
|
|
||||||
// - products in transit between the fulfillment centers,
|
|
||||||
// - products in delivery,
|
|
||||||
// - products to be sold
|
|
||||||
func (c Reports) GetProductsMovement(ctx context.Context, params *GetProductsMovementReportParams) (*GetProductsMovementReportResponse, error) {
|
|
||||||
url := "/v1/report/products/movement/create"
|
|
||||||
|
|
||||||
resp := &GetProductsMovementReportResponse{}
|
|
||||||
|
|
||||||
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
response.CopyCommonResponse(&resp.CommonResponse)
|
|
||||||
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetReturnsReportParams struct {
|
type GetReturnsReportParams struct {
|
||||||
// Filter
|
// Filter
|
||||||
Filter GetReturnsReportsFilter `json:"filter"`
|
Filter GetReturnsReportsFilter `json:"filter"`
|
||||||
@@ -555,7 +478,7 @@ type GetReturnsReportResponse struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type GetReturnReportResult struct {
|
type GetReturnReportResult struct {
|
||||||
// Unique report identifier
|
// Unique report identifier. The report is available for downloading within 3 days after making a request.
|
||||||
Code string `json:"code"`
|
Code string `json:"code"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,9 +514,12 @@ type GetShipmentReportFilter struct {
|
|||||||
// Cancellation reason identifier
|
// Cancellation reason identifier
|
||||||
CancelReasonId []int64 `json:"cancel_reason_id"`
|
CancelReasonId []int64 `json:"cancel_reason_id"`
|
||||||
|
|
||||||
// Work scheme: FBO or FBS.
|
// The scheme of operation is FBO or FBS.
|
||||||
//
|
//
|
||||||
// To get an FBO scheme report, pass fbo in this parameter. For an FBS scheme report pass fbs
|
// Only one of the parameters can be passed to the array per query:
|
||||||
|
//
|
||||||
|
// fbo - to get a report by FBO scheme,
|
||||||
|
// fbs - to get a report by FBS scheme
|
||||||
DeliverySchema []string `json:"delivery_schema"`
|
DeliverySchema []string `json:"delivery_schema"`
|
||||||
|
|
||||||
// Product identifier
|
// Product identifier
|
||||||
@@ -676,56 +602,34 @@ func (c Reports) IssueOnDiscountedProducts(ctx context.Context) (*IssueOnDiscoun
|
|||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReportOnDiscountedProductsParams struct {
|
type GetFBSStocksParams struct {
|
||||||
|
// Response language
|
||||||
|
Language string `json:"language"`
|
||||||
|
|
||||||
|
// Warehouses identifiers
|
||||||
|
WarehouseIds []int64 `json:"warehouse_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetFBSStocksResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
// Method result
|
||||||
|
Result GetFBSStocksResult `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetFBSStocksResult struct {
|
||||||
// Unique report identifier
|
// Unique report identifier
|
||||||
Code string `json:"code"`
|
Code string `json:"code"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReportOnDiscountedProductsResponse struct {
|
// Report with information about the number of available and reserved products in stock.
|
||||||
core.CommonResponse
|
//
|
||||||
|
// The method returns a report identifier.
|
||||||
|
// To get the report, send the identifier in the request of the `/v1/report/info` method.
|
||||||
|
func (c Reports) GetFBSStocks(ctx context.Context, params *GetFBSStocksParams) (*GetFBSStocksResponse, error) {
|
||||||
|
url := "/v1/report/warehouse/stock"
|
||||||
|
|
||||||
// Report information
|
resp := &GetFBSStocksResponse{}
|
||||||
Report ReportonDiscountedProductsReport `json:"report"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type ReportonDiscountedProductsReport struct {
|
|
||||||
// Report creation date
|
|
||||||
CreatedAt time.Time `json:"created_at"`
|
|
||||||
|
|
||||||
// Link to report file
|
|
||||||
File string `json:"file"`
|
|
||||||
|
|
||||||
// Report status:
|
|
||||||
// - success — created
|
|
||||||
// - pending — waiting to be processed
|
|
||||||
// - processing — processed
|
|
||||||
// - failed — generation error
|
|
||||||
Status string `json:"status"`
|
|
||||||
|
|
||||||
// Report generation error code
|
|
||||||
Error string `json:"error"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// By report identifier, returns information about the report generated earlier
|
|
||||||
func (c Reports) ReportOnDiscountedProducts(ctx context.Context, params *ReportOnDiscountedProductsParams) (*ReportOnDiscountedProductsResponse, error) {
|
|
||||||
url := "/v1/report/discounted/info"
|
|
||||||
|
|
||||||
resp := &ReportOnDiscountedProductsResponse{}
|
|
||||||
|
|
||||||
response, err := c.client.Request(ctx, http.MethodPost, url, nil, resp, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
response.CopyCommonResponse(&resp.CommonResponse)
|
|
||||||
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// By report identifier, returns information about the report generated earlier
|
|
||||||
func (c Reports) ListReportsOnDiscountedProducts(ctx context.Context) (*ReportOnDiscountedProductsResponse, error) {
|
|
||||||
url := "/v1/report/discounted/list"
|
|
||||||
|
|
||||||
resp := &ReportOnDiscountedProductsResponse{}
|
|
||||||
|
|
||||||
response, err := c.client.Request(ctx, http.MethodPost, url, nil, resp, nil)
|
response, err := c.client.Request(ctx, http.MethodPost, url, nil, resp, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -74,8 +74,11 @@ func TestGetList(t *testing.T) {
|
|||||||
resp, err := c.Reports().GetList(ctx, test.params)
|
resp, err := c.Reports().GetList(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetReportsListResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -113,7 +116,7 @@ func TestGetReportDetails(t *testing.T) {
|
|||||||
"file": "https://storage.yandexcloud.net/ozon.reports/95/c1/95c1ae93320294cb.csv",
|
"file": "https://storage.yandexcloud.net/ozon.reports/95/c1/95c1ae93320294cb.csv",
|
||||||
"report_type": "seller_products",
|
"report_type": "seller_products",
|
||||||
"params": {},
|
"params": {},
|
||||||
"created_at": "2021-11-25T14:54:55.688260Z"
|
"created_at": "2021-11-25T14:54:55.68826Z"
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
@@ -136,8 +139,11 @@ func TestGetReportDetails(t *testing.T) {
|
|||||||
resp, err := c.Reports().GetReportDetails(ctx, test.params)
|
resp, err := c.Reports().GetReportDetails(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetReportDetailsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -258,8 +264,7 @@ func TestGetFinancialReport(t *testing.T) {
|
|||||||
},
|
},
|
||||||
"end_balance_amount": 0
|
"end_balance_amount": 0
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"page_count": 15
|
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
// Test No Client-Id or Api-Key
|
// Test No Client-Id or Api-Key
|
||||||
@@ -281,8 +286,11 @@ func TestGetFinancialReport(t *testing.T) {
|
|||||||
resp, err := c.Reports().GetFinancial(ctx, test.params)
|
resp, err := c.Reports().GetFinancial(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetFinancialReportResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -336,116 +344,10 @@ func TestGetProductsReport(t *testing.T) {
|
|||||||
resp, err := c.Reports().GetProducts(ctx, test.params)
|
resp, err := c.Reports().GetProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
compareJsonResponse(t, test.response, &GetProductsReportResponse{})
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
|
||||||
}
|
|
||||||
|
|
||||||
if resp.StatusCode == http.StatusOK {
|
|
||||||
if resp.Result.Code == "" {
|
|
||||||
t.Errorf("Code cannot be empty")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetStocksReport(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
statusCode int
|
|
||||||
headers map[string]string
|
|
||||||
params *GetStocksReportParams
|
|
||||||
response string
|
|
||||||
}{
|
|
||||||
// Test Ok
|
|
||||||
{
|
|
||||||
http.StatusOK,
|
|
||||||
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
|
||||||
&GetStocksReportParams{},
|
|
||||||
`{
|
|
||||||
"result": {
|
|
||||||
"code": "d55f4517-8347-4e24-9d93-d6e736c1c07c"
|
|
||||||
}
|
|
||||||
}`,
|
|
||||||
},
|
|
||||||
// Test No Client-Id or Api-Key
|
|
||||||
{
|
|
||||||
http.StatusUnauthorized,
|
|
||||||
map[string]string{},
|
|
||||||
&GetStocksReportParams{},
|
|
||||||
`{
|
|
||||||
"code": 16,
|
|
||||||
"message": "Client-Id and Api-Key headers are required"
|
|
||||||
}`,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
|
||||||
|
|
||||||
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
|
||||||
resp, err := c.Reports().GetStocks(ctx, 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)
|
|
||||||
}
|
|
||||||
|
|
||||||
if resp.StatusCode == http.StatusOK {
|
|
||||||
if resp.Result.Code == "" {
|
|
||||||
t.Errorf("Code cannot be empty")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetProductsMovementReport(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
statusCode int
|
|
||||||
headers map[string]string
|
|
||||||
params *GetProductsMovementReportParams
|
|
||||||
response string
|
|
||||||
}{
|
|
||||||
// Test Ok
|
|
||||||
{
|
|
||||||
http.StatusOK,
|
|
||||||
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
|
||||||
&GetProductsMovementReportParams{
|
|
||||||
DateFrom: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2020-08-01T14:15:22Z"),
|
|
||||||
DateTo: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2020-08-01T14:15:22Z"),
|
|
||||||
},
|
|
||||||
`{
|
|
||||||
"result": {
|
|
||||||
"code": "h56f4917-1346-4e64-9d90-с6e736c1e07c"
|
|
||||||
}
|
|
||||||
}`,
|
|
||||||
},
|
|
||||||
// Test No Client-Id or Api-Key
|
|
||||||
{
|
|
||||||
http.StatusUnauthorized,
|
|
||||||
map[string]string{},
|
|
||||||
&GetProductsMovementReportParams{},
|
|
||||||
`{
|
|
||||||
"code": 16,
|
|
||||||
"message": "Client-Id and Api-Key headers are required"
|
|
||||||
}`,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
|
||||||
|
|
||||||
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
|
||||||
resp, err := c.Reports().GetProductsMovement(ctx, test.params)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
@@ -502,8 +404,11 @@ func TestGetReturnsReport(t *testing.T) {
|
|||||||
resp, err := c.Reports().GetReturns(ctx, test.params)
|
resp, err := c.Reports().GetReturns(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetReturnsReportResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -561,8 +466,11 @@ func TestGetShipmentReport(t *testing.T) {
|
|||||||
resp, err := c.Reports().GetShipment(ctx, test.params)
|
resp, err := c.Reports().GetShipment(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetShipmentReportResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -609,6 +517,7 @@ func TestIssueOnDiscountedProducts(t *testing.T) {
|
|||||||
resp, err := c.Reports().IssueOnDiscountedProducts(ctx)
|
resp, err := c.Reports().IssueOnDiscountedProducts(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
@@ -616,6 +525,7 @@ func TestIssueOnDiscountedProducts(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode == http.StatusOK {
|
if resp.StatusCode == http.StatusOK {
|
||||||
|
compareJsonResponse(t, test.response, &IssueOnDiscountedProductsResponse{})
|
||||||
if resp.Code == "" {
|
if resp.Code == "" {
|
||||||
t.Errorf("Code cannot be empty")
|
t.Errorf("Code cannot be empty")
|
||||||
}
|
}
|
||||||
@@ -623,28 +533,26 @@ func TestIssueOnDiscountedProducts(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReportOnDiscountedProducts(t *testing.T) {
|
func TestGetFBSStocks(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
statusCode int
|
statusCode int
|
||||||
headers map[string]string
|
headers map[string]string
|
||||||
params *ReportOnDiscountedProductsParams
|
params *GetFBSStocksParams
|
||||||
response string
|
response string
|
||||||
}{
|
}{
|
||||||
// Test Ok
|
// Test Ok
|
||||||
{
|
{
|
||||||
http.StatusOK,
|
http.StatusOK,
|
||||||
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
&ReportOnDiscountedProductsParams{
|
&GetFBSStocksParams{
|
||||||
Code: "d55f4517-8347-4e24-9d93-d6e736c1c07c",
|
Language: "EN",
|
||||||
|
WarehouseIds: []int64{123},
|
||||||
},
|
},
|
||||||
`{
|
`{
|
||||||
"report": {
|
"result": {
|
||||||
"created_at": "2022-10-04T10:07:08.146Z",
|
"code": "d55f4517-8347-4e24-9d93-d6e736c1c07c"
|
||||||
"error": "string",
|
|
||||||
"file": "string",
|
|
||||||
"status": "string"
|
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
@@ -652,7 +560,7 @@ func TestReportOnDiscountedProducts(t *testing.T) {
|
|||||||
{
|
{
|
||||||
http.StatusUnauthorized,
|
http.StatusUnauthorized,
|
||||||
map[string]string{},
|
map[string]string{},
|
||||||
&ReportOnDiscountedProductsParams{},
|
&GetFBSStocksParams{},
|
||||||
`{
|
`{
|
||||||
"code": 16,
|
"code": 16,
|
||||||
"message": "Client-Id and Api-Key headers are required"
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
@@ -664,60 +572,14 @@ func TestReportOnDiscountedProducts(t *testing.T) {
|
|||||||
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
resp, err := c.Reports().ReportOnDiscountedProducts(ctx, test.params)
|
resp, err := c.Reports().GetFBSStocks(ctx, 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 TestListReportsOnDiscountedProducts(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
statusCode int
|
|
||||||
headers map[string]string
|
|
||||||
response string
|
|
||||||
}{
|
|
||||||
// Test Ok
|
|
||||||
{
|
|
||||||
http.StatusOK,
|
|
||||||
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
|
||||||
`{
|
|
||||||
"reports": [
|
|
||||||
{
|
|
||||||
"created_at": "2022-10-04T10:07:08.146Z",
|
|
||||||
"error": "string",
|
|
||||||
"file": "string",
|
|
||||||
"status": "string"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}`,
|
|
||||||
},
|
|
||||||
// Test No Client-Id or Api-Key
|
|
||||||
{
|
|
||||||
http.StatusUnauthorized,
|
|
||||||
map[string]string{},
|
|
||||||
`{
|
|
||||||
"code": 16,
|
|
||||||
"message": "Client-Id and Api-Key headers are required"
|
|
||||||
}`,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
|
||||||
|
|
||||||
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
|
||||||
resp, err := c.Reports().ListReportsOnDiscountedProducts(ctx)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetFBSStocksResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
616
ozon/returns.go
616
ozon/returns.go
@@ -161,7 +161,7 @@ type GetFBSReturnsResponse struct {
|
|||||||
|
|
||||||
type GetFBSReturnResultReturn struct {
|
type GetFBSReturnResultReturn struct {
|
||||||
// Time of receiving the return from the customer
|
// Time of receiving the return from the customer
|
||||||
AcceptedFromCustomerAmount string `json:"accepted_from_customer_amount"`
|
AcceptedFromCustomerMoment string `json:"accepted_from_customer_moment"`
|
||||||
|
|
||||||
// Bottom barcode on the product label
|
// Bottom barcode on the product label
|
||||||
ClearingId int64 `json:"clearing_id"`
|
ClearingId int64 `json:"clearing_id"`
|
||||||
@@ -261,3 +261,617 @@ func (c Returns) GetFBSReturns(ctx context.Context, params *GetFBSReturnsParams)
|
|||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnsParams struct {
|
||||||
|
// Filter
|
||||||
|
Filter GetRFBSReturnsFilter `json:"filter"`
|
||||||
|
|
||||||
|
// Identifier of the last value on the page.
|
||||||
|
// Leave this field blank in the first request
|
||||||
|
LastId int32 `json:"last_id"`
|
||||||
|
|
||||||
|
// Number of values per page
|
||||||
|
Limit int32 `json:"limit"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnsFilter struct {
|
||||||
|
// Product identifier in the seller's system
|
||||||
|
OfferId string `json:"offer_id"`
|
||||||
|
|
||||||
|
// Shipment number
|
||||||
|
PostingNumber string `json:"posting_number"`
|
||||||
|
|
||||||
|
// Filter by request statuses
|
||||||
|
GroupState []RFBSReturnsGroupState `json:"group_state"`
|
||||||
|
|
||||||
|
// Period of request creation
|
||||||
|
CreatedAt GetRFBSReturnsFilterCreatedAt `json:"created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnsFilterCreatedAt struct {
|
||||||
|
// Period start date
|
||||||
|
From time.Time `json:"from"`
|
||||||
|
|
||||||
|
// Period end date
|
||||||
|
To time.Time `json:"to"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnsResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
// Information on return requests
|
||||||
|
Returns GetRFBSReturnsReturn `json:"returns"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnsReturn struct {
|
||||||
|
// Customer name
|
||||||
|
ClientName string `json:"client_name"`
|
||||||
|
|
||||||
|
// Request creation date
|
||||||
|
CreatedAt time.Time `json:"created_at"`
|
||||||
|
|
||||||
|
// Order number
|
||||||
|
OrderNumber string `json:"order_number"`
|
||||||
|
|
||||||
|
// Shipment number
|
||||||
|
PostingNumber string `json:"posting_number"`
|
||||||
|
|
||||||
|
// Product details
|
||||||
|
Product GetRFBSReturnsProduct `json:"product"`
|
||||||
|
|
||||||
|
// Return request identifier
|
||||||
|
ReturnId int64 `json:"return_id"`
|
||||||
|
|
||||||
|
// Return request number
|
||||||
|
ReturnNumber string `json:"return_number"`
|
||||||
|
|
||||||
|
// Request and refund statuses
|
||||||
|
State GetRFBSReturnsState `json:"state"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnsProduct struct {
|
||||||
|
// Product name
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Product identifier in the seller's system
|
||||||
|
OfferId string `json:"offer_id"`
|
||||||
|
|
||||||
|
// Currency of your prices. It matches the currency set in your personal account
|
||||||
|
CurrencyCode GetRFBSReturnsCurrency `json:"currency_code"`
|
||||||
|
|
||||||
|
// Product price
|
||||||
|
Price string `json:"price"`
|
||||||
|
|
||||||
|
// Product identifier in the Ozon system, SKU
|
||||||
|
SKU int64 `json:"sku"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnsState struct {
|
||||||
|
// Request status by the applied filter
|
||||||
|
GroupState RFBSReturnsGroupState `json:"group_state"`
|
||||||
|
|
||||||
|
// Refund status
|
||||||
|
MoneyReturnStateName string `json:"money_return_state_name"`
|
||||||
|
|
||||||
|
// Request status
|
||||||
|
State string `json:"state"`
|
||||||
|
|
||||||
|
// Request status name in Russian
|
||||||
|
StateName string `json:"state_name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get a list of return requests
|
||||||
|
func (c Returns) GetRFBSReturns(ctx context.Context, params *GetRFBSReturnsParams) (*GetRFBSReturnsResponse, error) {
|
||||||
|
url := "/v2/returns/rfbs/list"
|
||||||
|
|
||||||
|
resp := &GetRFBSReturnsResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnParams struct {
|
||||||
|
// Request identifier
|
||||||
|
ReturnId int64 `json:"return_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
Returns GetRFBSReturn `json:"returns"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturn struct {
|
||||||
|
// List of available actions on the request
|
||||||
|
AvailableActions []GetRFBSReturnAction `json:"available_actions"`
|
||||||
|
|
||||||
|
// Customer name
|
||||||
|
ClientName string `json:"client_name"`
|
||||||
|
|
||||||
|
// Links to product images
|
||||||
|
ClientPhoto []string `json:"client_photo"`
|
||||||
|
|
||||||
|
// Information on return method
|
||||||
|
ClientReturnMethodType GetRFBSReturnMethodType `json:"client_return_method_type"`
|
||||||
|
|
||||||
|
// Customer comment
|
||||||
|
Comment string `json:"comment"`
|
||||||
|
|
||||||
|
// Request creation date
|
||||||
|
CreatedAt time.Time `json:"created_at"`
|
||||||
|
|
||||||
|
// Order number
|
||||||
|
OrderNumber string `json:"order_number"`
|
||||||
|
|
||||||
|
// Shipment number
|
||||||
|
PostingNumber string `json:"posting_number"`
|
||||||
|
|
||||||
|
// Product details
|
||||||
|
Product GetRFBSReturnsProduct `json:"product"`
|
||||||
|
|
||||||
|
// Comment on request rejection
|
||||||
|
RejectionComment string `json:"rejection_comment"`
|
||||||
|
|
||||||
|
// Information on rejection reason
|
||||||
|
RejectionReason []GetRFBSReturnRejectionReason `json:"rejection_reason"`
|
||||||
|
|
||||||
|
// Method of product return
|
||||||
|
ReturnMethodDescription string `json:"return_method_description"`
|
||||||
|
|
||||||
|
// Return request number
|
||||||
|
ReturnNumber string `json:"return_number"`
|
||||||
|
|
||||||
|
// Information on return reason
|
||||||
|
ReturnReason GetRFBSReturnReason `json:"return_reason"`
|
||||||
|
|
||||||
|
// Postal tracking number
|
||||||
|
RUPostTrackingNumber string `json:"ru_post_tracking_number"`
|
||||||
|
|
||||||
|
// Information on return status
|
||||||
|
State GetRFBSReturnState `json:"state"`
|
||||||
|
|
||||||
|
// Warehouse identifier
|
||||||
|
WarehouseId int64 `json:"warehouse_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnAction struct {
|
||||||
|
// Action identifier
|
||||||
|
Id int32 `json:"id"`
|
||||||
|
|
||||||
|
// Action name
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnMethodType struct {
|
||||||
|
// Identifier
|
||||||
|
Id int32 `json:"id"`
|
||||||
|
|
||||||
|
// Name
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnRejectionReason struct {
|
||||||
|
// Hint on further actions with the return
|
||||||
|
Hint string `json:"hint"`
|
||||||
|
|
||||||
|
// Reason identifier
|
||||||
|
Id int32 `json:"id"`
|
||||||
|
|
||||||
|
// `true` if you need to attach a comment
|
||||||
|
IsCommentRequired bool `json:"is_comment_required"`
|
||||||
|
|
||||||
|
// Reason description
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnReason struct {
|
||||||
|
// Reason identifier
|
||||||
|
Id int32 `json:"id"`
|
||||||
|
|
||||||
|
// `true` if the product is defective
|
||||||
|
IsDefect bool `json:"is_defect"`
|
||||||
|
|
||||||
|
// Reason description
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRFBSReturnState struct {
|
||||||
|
// Status
|
||||||
|
State string `json:"state"`
|
||||||
|
|
||||||
|
// Status name in Russian
|
||||||
|
StateName string `json:"state_name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get information about a return request
|
||||||
|
func (c Returns) GetRFBSReturn(ctx context.Context, params *GetRFBSReturnParams) (*GetRFBSReturnResponse, error) {
|
||||||
|
url := "/v2/returns/rfbs/get"
|
||||||
|
|
||||||
|
resp := &GetRFBSReturnResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type RejectRFBSReturnParams struct {
|
||||||
|
// Return request identifier
|
||||||
|
ReturnId int64 `json:"return_id"`
|
||||||
|
|
||||||
|
// Comment
|
||||||
|
//
|
||||||
|
// The comment is required if the
|
||||||
|
// `rejection_reason.is_comment_required` parameter is `true`
|
||||||
|
// in the response of the `/v2/returns/rfbs/get` method
|
||||||
|
Comment string `json:"comment"`
|
||||||
|
|
||||||
|
// Rejection reason identifier.
|
||||||
|
//
|
||||||
|
// Pass the value from the list of reasons received in the response
|
||||||
|
// of the `/v2/returns/rfbs/get` method in the `rejection_reason` parameter
|
||||||
|
RejectionReasonId int64 `json:"rejection_reason_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RejectRFBSReturnResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
// The method rejects an rFBS return request. Explain your decision in the `comment` parameter
|
||||||
|
func (c Returns) RejectRFBSReturn(ctx context.Context, params *RejectRFBSReturnParams) (*RejectRFBSReturnResponse, error) {
|
||||||
|
url := "/v2/returns/rfbs/reject"
|
||||||
|
|
||||||
|
resp := &RejectRFBSReturnResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type CompensateRFBSReturnParams struct {
|
||||||
|
// Compensation amount
|
||||||
|
CompensationAmount string `json:"compensation_amount"`
|
||||||
|
|
||||||
|
// Return request identifier
|
||||||
|
ReturnId int64 `json:"return_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CompensateRFBSReturnResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
// Using this method you can confirm the partial compensation and agree to keep the product with the customer
|
||||||
|
func (c Returns) CompensateRFBSReturn(ctx context.Context, params *CompensateRFBSReturnParams) (*CompensateRFBSReturnResponse, error) {
|
||||||
|
url := "/v2/returns/rfbs/compensate"
|
||||||
|
|
||||||
|
resp := &CompensateRFBSReturnResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type ApproveRFBSReturnParams struct {
|
||||||
|
// Return request identifier
|
||||||
|
ReturnId int64 `json:"return_id"`
|
||||||
|
|
||||||
|
// Method of product return
|
||||||
|
ReturnMethodDescription string `json:"return_method_description"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ApproveRFBSReturnResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
// The method allows to approve an rFBS return request and agree to receive products for verification.
|
||||||
|
//
|
||||||
|
// Confirm that you've received the product using the `/v2/returns/rfbs/receive-return` method.
|
||||||
|
func (c Returns) ApproveRFBSReturn(ctx context.Context, params *ApproveRFBSReturnParams) (*ApproveRFBSReturnResponse, error) {
|
||||||
|
url := "/v2/returns/rfbs/verify"
|
||||||
|
|
||||||
|
resp := &ApproveRFBSReturnResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReceiveRFBSReturnParams struct {
|
||||||
|
// Return request identifier
|
||||||
|
ReturnId int64 `json:"return_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReceiveRFBSReturnResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
// Confirm receipt of a product for check
|
||||||
|
func (c Returns) ReceiveRFBSReturn(ctx context.Context, params *ReceiveRFBSReturnParams) (*ReceiveRFBSReturnResponse, error) {
|
||||||
|
url := "/v2/returns/rfbs/receive-return"
|
||||||
|
|
||||||
|
resp := &ReceiveRFBSReturnResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type RefundRFBSParams struct {
|
||||||
|
// Return request identifier
|
||||||
|
ReturnId int64 `json:"return_id"`
|
||||||
|
|
||||||
|
// Refund amount for shipping the product
|
||||||
|
ReturnForBackWay int64 `json:"return_for_back_way"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RefundRFBSResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
// The method confirms the refund of the full product cost.
|
||||||
|
// Use the method if you agree to refund the customer:
|
||||||
|
//
|
||||||
|
// Immediately without receiving the product.
|
||||||
|
// After you received and checked the product.
|
||||||
|
// If the product is defective or damaged, you also refund its return shipment cost.
|
||||||
|
func (c Returns) RefundRFBS(ctx context.Context, params *RefundRFBSParams) (*RefundRFBSResponse, error) {
|
||||||
|
url := "/v2/returns/rfbs/return-money"
|
||||||
|
|
||||||
|
resp := &RefundRFBSResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type IsGiveoutEnabledResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
// `true` if you can pick up a return shipment by barcode.
|
||||||
|
Enabled bool `json:"enabled"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the ability to receive return shipments by barcode
|
||||||
|
//
|
||||||
|
// The `enabled` parameter is true if you can pick up return shipments by barcode.
|
||||||
|
func (c Returns) IsGiveoutEnabled(ctx context.Context) (*IsGiveoutEnabledResponse, error) {
|
||||||
|
url := "/v1/return/giveout/is-enabled"
|
||||||
|
|
||||||
|
resp := &IsGiveoutEnabledResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, struct{}{}, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
// PDF file with barcode in binary format
|
||||||
|
FileContent string `json:"file_content"`
|
||||||
|
|
||||||
|
// File name
|
||||||
|
FileName string `json:"file_name"`
|
||||||
|
|
||||||
|
// File type
|
||||||
|
ContentType string `json:"content_type"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Barcode for return shipment in PDF format
|
||||||
|
//
|
||||||
|
// Returns a PDF file with a barcode
|
||||||
|
func (c Returns) GetGiveoutPDF(ctx context.Context) (*GetGiveoutResponse, error) {
|
||||||
|
url := "/v1/return/giveout/get-pdf"
|
||||||
|
|
||||||
|
resp := &GetGiveoutResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, struct{}{}, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Barcode for return shipment in PNG format
|
||||||
|
//
|
||||||
|
// Returns a PNG file with a barcode
|
||||||
|
func (c Returns) GetGiveoutPNG(ctx context.Context) (*GetGiveoutResponse, error) {
|
||||||
|
url := "/v1/return/giveout/get-png"
|
||||||
|
|
||||||
|
resp := &GetGiveoutResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, struct{}{}, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutBarcodeResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
// Barcode value in text format
|
||||||
|
Barcode string `json:"barcode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Value of barcode for return shipments
|
||||||
|
//
|
||||||
|
// Use this method to get the barcode from the response of the
|
||||||
|
// `/v1/return/giveout/get-png` and `/v1/return/giveout/get-pdf` methods in text format
|
||||||
|
func (c Returns) GetGiveoutBarcode(ctx context.Context) (*GetGiveoutBarcodeResponse, error) {
|
||||||
|
url := "/v1/return/giveout/barcode"
|
||||||
|
|
||||||
|
resp := &GetGiveoutBarcodeResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, struct{}{}, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use this method if an unauthorized person has gained access to your barcode.
|
||||||
|
//
|
||||||
|
// The method returns a PNG file with the new barcode. Once the method is used,
|
||||||
|
// you won't be able to get a return shipment using the old barcodes.
|
||||||
|
// To get a new barcode in PDF format, use the /v1/return/giveout/get-pdf method
|
||||||
|
func (c Returns) ResetGiveoutBarcode(ctx context.Context) (*GetGiveoutResponse, error) {
|
||||||
|
url := "/v1/return/giveout/barcode-reset"
|
||||||
|
|
||||||
|
resp := &GetGiveoutResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, struct{}{}, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutListParams struct {
|
||||||
|
// Identifier of the last value on the page
|
||||||
|
LastId int64 `json:"last_id"`
|
||||||
|
|
||||||
|
// Number of values in the response
|
||||||
|
Limit int64 `json:"limit"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutListResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
// Shipment identifier
|
||||||
|
Giveouts []GetGiveoutListGiveout `json:"giveouts"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutListGiveout struct {
|
||||||
|
// Number of products in shipment
|
||||||
|
ApprovedArticlesCount int32 `json:"approved_articles_count"`
|
||||||
|
|
||||||
|
// Creation date and time
|
||||||
|
CreatedAt time.Time `json:"created_at"`
|
||||||
|
|
||||||
|
// Shipment identifier
|
||||||
|
GiveoutId int64 `json:"giveout_id"`
|
||||||
|
|
||||||
|
// Return shipment status
|
||||||
|
GiveoutStatus GiveoutStatus `json:"giveout_status"`
|
||||||
|
|
||||||
|
// Total number of products to be picked up from the warehouse
|
||||||
|
TotalArticlesCount int32 `json:"total_articles_count"`
|
||||||
|
|
||||||
|
// Warehouse address
|
||||||
|
WarehouseAddress string `json:"warehouse_address"`
|
||||||
|
|
||||||
|
// Warehouse identifier
|
||||||
|
WarehouseId int64 `json:"warehouse_id"`
|
||||||
|
|
||||||
|
// Warehouse name
|
||||||
|
WarehouseName string `json:"warehouse_name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return shipments list
|
||||||
|
func (c Returns) GetGiveoutList(ctx context.Context, params *GetGiveoutListParams) (*GetGiveoutListResponse, error) {
|
||||||
|
url := "/v1/return/giveout/list"
|
||||||
|
|
||||||
|
resp := &GetGiveoutListResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, struct{}{}, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutInfoParams struct {
|
||||||
|
// Shipment identifier
|
||||||
|
GiveoutId int64 `json:"giveout_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutInfoResponse struct {
|
||||||
|
core.CommonResponse
|
||||||
|
|
||||||
|
// Product IDs
|
||||||
|
Articles []GetGiveoutInfoArticle `json:"articles"`
|
||||||
|
|
||||||
|
// Shipment identifier
|
||||||
|
GiveoutId int64 `json:"giveout_id"`
|
||||||
|
|
||||||
|
// Return shipment status
|
||||||
|
GiveoutStatus GiveoutStatus `json:"giveout_status"`
|
||||||
|
|
||||||
|
// Warehouse address
|
||||||
|
WarehouseAddress string `json:"warehouse_address"`
|
||||||
|
|
||||||
|
// Warehouse name
|
||||||
|
WarehouseName string `json:"warehouse_name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetGiveoutInfoArticle struct {
|
||||||
|
// `true` if the shipment is confirmed
|
||||||
|
Approved bool `json:"approved"`
|
||||||
|
|
||||||
|
// Delivery schema
|
||||||
|
DeliverySchema GiveoutDeliverySchema `json:"delivery_schema"`
|
||||||
|
|
||||||
|
// Product name
|
||||||
|
Name string `json:"name"`
|
||||||
|
|
||||||
|
// Seller identifier
|
||||||
|
SellerId int64 `json:"seller_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Information on return shipment
|
||||||
|
func (c Returns) GetGiveoutInfo(ctx context.Context, params *GetGiveoutInfoParams) (*GetGiveoutInfoResponse, error) {
|
||||||
|
url := "/v1/return/giveout/info"
|
||||||
|
|
||||||
|
resp := &GetGiveoutInfoResponse{}
|
||||||
|
|
||||||
|
response, err := c.client.Request(ctx, http.MethodPost, url, struct{}{}, resp, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
response.CopyCommonResponse(&resp.CommonResponse)
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -66,8 +66,11 @@ func TestGetFBOReturns(t *testing.T) {
|
|||||||
resp, err := c.Returns().GetFBOReturns(ctx, test.params)
|
resp, err := c.Returns().GetFBOReturns(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetFBOReturnsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -165,8 +168,11 @@ func TestGetFBSReturns(t *testing.T) {
|
|||||||
resp, err := c.Returns().GetFBSReturns(ctx, test.params)
|
resp, err := c.Returns().GetFBSReturns(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetFBSReturnsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -189,3 +195,795 @@ func TestGetFBSReturns(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetRFBSReturns(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *GetRFBSReturnsParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&GetRFBSReturnsParams{
|
||||||
|
LastId: 999,
|
||||||
|
Limit: 555,
|
||||||
|
Filter: GetRFBSReturnsFilter{
|
||||||
|
OfferId: "123",
|
||||||
|
PostingNumber: "111",
|
||||||
|
GroupState: []RFBSReturnsGroupState{RFBSReturnsGroupStateAll},
|
||||||
|
CreatedAt: GetRFBSReturnsFilterCreatedAt{
|
||||||
|
From: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2019-08-24T14:15:22Z"),
|
||||||
|
To: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2019-08-24T14:15:22Z"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
`{
|
||||||
|
"returns": {
|
||||||
|
"client_name": "string",
|
||||||
|
"created_at": "2019-08-24T14:15:22Z",
|
||||||
|
"order_number": "string",
|
||||||
|
"posting_number": "111",
|
||||||
|
"product": {
|
||||||
|
"name": "string",
|
||||||
|
"offer_id": "123",
|
||||||
|
"currency_code": "string",
|
||||||
|
"price": "string",
|
||||||
|
"sku": 123
|
||||||
|
},
|
||||||
|
"return_id": 0,
|
||||||
|
"return_number": "string",
|
||||||
|
"state": {
|
||||||
|
"group_state": "All",
|
||||||
|
"money_return_state_name": "string",
|
||||||
|
"state": "string",
|
||||||
|
"state_name": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&GetRFBSReturnsParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().GetRFBSReturns(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetRFBSReturnsResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode == http.StatusOK {
|
||||||
|
if resp.Returns.Product.OfferId != test.params.Filter.OfferId {
|
||||||
|
t.Errorf("expected offer ID %s, but got: %s", test.params.Filter.OfferId, resp.Returns.Product.OfferId)
|
||||||
|
}
|
||||||
|
if resp.Returns.PostingNumber != test.params.Filter.PostingNumber {
|
||||||
|
t.Errorf("expected posting number %s, but got: %s", test.params.Filter.PostingNumber, resp.Returns.PostingNumber)
|
||||||
|
}
|
||||||
|
if resp.Returns.State.GroupState != test.params.Filter.GroupState[0] {
|
||||||
|
t.Errorf("expected group state %s, but got: %s", test.params.Filter.GroupState[0], resp.Returns.State.GroupState)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRFBSReturn(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *GetRFBSReturnParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&GetRFBSReturnParams{
|
||||||
|
ReturnId: 123,
|
||||||
|
},
|
||||||
|
`{
|
||||||
|
"returns": {
|
||||||
|
"available_actions": [
|
||||||
|
{
|
||||||
|
"id": 0,
|
||||||
|
"name": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"client_name": "string",
|
||||||
|
"client_photo": [
|
||||||
|
"string"
|
||||||
|
],
|
||||||
|
"client_return_method_type": {
|
||||||
|
"id": 0,
|
||||||
|
"name": "string"
|
||||||
|
},
|
||||||
|
"comment": "string",
|
||||||
|
"created_at": "2019-08-24T14:15:22Z",
|
||||||
|
"order_number": "string",
|
||||||
|
"posting_number": "string",
|
||||||
|
"product": {
|
||||||
|
"name": "string",
|
||||||
|
"offer_id": "string",
|
||||||
|
"currency_code": "string",
|
||||||
|
"price": "string",
|
||||||
|
"sku": 0
|
||||||
|
},
|
||||||
|
"rejection_comment": "string",
|
||||||
|
"rejection_reason": [
|
||||||
|
{
|
||||||
|
"hint": "string",
|
||||||
|
"id": 0,
|
||||||
|
"is_comment_required": true,
|
||||||
|
"name": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"return_method_description": "string",
|
||||||
|
"return_number": "string",
|
||||||
|
"return_reason": {
|
||||||
|
"id": 0,
|
||||||
|
"is_defect": true,
|
||||||
|
"name": "string"
|
||||||
|
},
|
||||||
|
"ru_post_tracking_number": "string",
|
||||||
|
"state": {
|
||||||
|
"state": "string",
|
||||||
|
"state_name": "string"
|
||||||
|
},
|
||||||
|
"warehouse_id": 0
|
||||||
|
}
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&GetRFBSReturnParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().GetRFBSReturn(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetRFBSReturnResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRejectRFBSReturn(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *RejectRFBSReturnParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&RejectRFBSReturnParams{
|
||||||
|
ReturnId: 123,
|
||||||
|
Comment: "No comment",
|
||||||
|
RejectionReasonId: 111,
|
||||||
|
},
|
||||||
|
`{}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&RejectRFBSReturnParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().RejectRFBSReturn(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &RejectRFBSReturnResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCompensateRFBSreturn(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *CompensateRFBSReturnParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&CompensateRFBSReturnParams{
|
||||||
|
ReturnId: 123,
|
||||||
|
CompensationAmount: "11",
|
||||||
|
},
|
||||||
|
`{}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&CompensateRFBSReturnParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().CompensateRFBSReturn(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CompensateRFBSReturnResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestApproveRFBSReturn(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *ApproveRFBSReturnParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&ApproveRFBSReturnParams{
|
||||||
|
ReturnId: 123,
|
||||||
|
ReturnMethodDescription: "some description",
|
||||||
|
},
|
||||||
|
`{}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&ApproveRFBSReturnParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().ApproveRFBSReturn(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ApproveRFBSReturnResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestReceiveRFBSReturn(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *ReceiveRFBSReturnParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&ReceiveRFBSReturnParams{
|
||||||
|
ReturnId: 123,
|
||||||
|
},
|
||||||
|
`{}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&ReceiveRFBSReturnParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().ReceiveRFBSReturn(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ReceiveRFBSReturnResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRefundRFBS(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *RefundRFBSParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&RefundRFBSParams{
|
||||||
|
ReturnId: 123,
|
||||||
|
ReturnForBackWay: 111,
|
||||||
|
},
|
||||||
|
`{}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&RefundRFBSParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().RefundRFBS(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &RefundRFBSResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIsGiveoutEnabled(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
`{
|
||||||
|
"enabled": true
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().IsGiveoutEnabled(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &IsGiveoutEnabledResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetGiveoutPDF(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
`{
|
||||||
|
"content_type": "application/pdf",
|
||||||
|
"file_name": "string",
|
||||||
|
"file_content": "string"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().GetGiveoutPDF(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetGiveoutResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetGiveoutPNG(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
`{
|
||||||
|
"content_type": "image/png",
|
||||||
|
"file_name": "string",
|
||||||
|
"file_content": "string"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().GetGiveoutPNG(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetGiveoutResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetGiveoutBarcode(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
`{
|
||||||
|
"barcode": "string"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().GetGiveoutBarcode(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetGiveoutBarcodeResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestResetGiveoutBarcode(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
`{
|
||||||
|
"content_type": "image/png",
|
||||||
|
"file_name": "string",
|
||||||
|
"file_content": "string"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().ResetGiveoutBarcode(ctx)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetGiveoutResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetGiveoutList(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *GetGiveoutListParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&GetGiveoutListParams{
|
||||||
|
LastId: 0,
|
||||||
|
Limit: 0,
|
||||||
|
},
|
||||||
|
`{
|
||||||
|
"giveouts": [
|
||||||
|
{
|
||||||
|
"approved_articles_count": 0,
|
||||||
|
"created_at": "2019-08-24T14:15:22Z",
|
||||||
|
"giveout_id": 0,
|
||||||
|
"giveout_status": "string",
|
||||||
|
"total_articles_count": 0,
|
||||||
|
"warehouse_address": "string",
|
||||||
|
"warehouse_id": 0,
|
||||||
|
"warehouse_name": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&GetGiveoutListParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().GetGiveoutList(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetGiveoutListResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetGiveoutInfo(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
statusCode int
|
||||||
|
headers map[string]string
|
||||||
|
params *GetGiveoutInfoParams
|
||||||
|
response string
|
||||||
|
}{
|
||||||
|
// Test Ok
|
||||||
|
{
|
||||||
|
http.StatusOK,
|
||||||
|
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
|
||||||
|
&GetGiveoutInfoParams{
|
||||||
|
GiveoutId: 11,
|
||||||
|
},
|
||||||
|
`{
|
||||||
|
"articles": [
|
||||||
|
{
|
||||||
|
"approved": true,
|
||||||
|
"delivery_schema": "string",
|
||||||
|
"name": "string",
|
||||||
|
"seller_id": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"giveout_id": 11,
|
||||||
|
"giveout_status": "string",
|
||||||
|
"warehouse_address": "string",
|
||||||
|
"warehouse_name": "string"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
// Test No Client-Id or Api-Key
|
||||||
|
{
|
||||||
|
http.StatusUnauthorized,
|
||||||
|
map[string]string{},
|
||||||
|
&GetGiveoutInfoParams{},
|
||||||
|
`{
|
||||||
|
"code": 16,
|
||||||
|
"message": "Client-Id and Api-Key headers are required"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := NewMockClient(core.NewMockHttpHandler(test.statusCode, test.response, test.headers))
|
||||||
|
|
||||||
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
||||||
|
resp, err := c.Returns().GetGiveoutInfo(ctx, test.params)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetGiveoutInfoResponse{})
|
||||||
|
|
||||||
|
if resp.StatusCode != test.statusCode {
|
||||||
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
|
}
|
||||||
|
if resp.GiveoutId != test.params.GiveoutId {
|
||||||
|
t.Errorf("expected giveout id to be equal: got: %d, expected: %d", resp.GiveoutId, test.params.GiveoutId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ type ListCompetitorsResponse struct {
|
|||||||
core.CommonResponse
|
core.CommonResponse
|
||||||
|
|
||||||
// List of competitors
|
// List of competitors
|
||||||
Competitors []ListCompetitorsCompetitor `json:"competitors"`
|
Competitor []ListCompetitorsCompetitor `json:"competitor"`
|
||||||
|
|
||||||
// Total number of competitors
|
// Total number of competitors
|
||||||
Total int32 `json:"total"`
|
Total int32 `json:"total"`
|
||||||
@@ -32,10 +32,10 @@ type ListCompetitorsResponse struct {
|
|||||||
|
|
||||||
type ListCompetitorsCompetitor struct {
|
type ListCompetitorsCompetitor struct {
|
||||||
// Competitor's name
|
// Competitor's name
|
||||||
Name string `json:"name"`
|
Name string `json:"competitor_name"`
|
||||||
|
|
||||||
// Competitor identifier
|
// Competitor identifier
|
||||||
Id int64 `json:"id"`
|
Id int64 `json:"competitor_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method for getting a list of competitors—sellers with similar products in other online stores and marketplaces
|
// Method for getting a list of competitors—sellers with similar products in other online stores and marketplaces
|
||||||
@@ -74,10 +74,10 @@ type ListStrategiesResponse struct {
|
|||||||
|
|
||||||
type ListStrategiesStrategy struct {
|
type ListStrategiesStrategy struct {
|
||||||
// Strategy identifier
|
// Strategy identifier
|
||||||
Id string `json:"id"`
|
Id string `json:"strategy_id"`
|
||||||
|
|
||||||
// Strategy name
|
// Strategy name
|
||||||
Name string `json:"name"`
|
Name string `json:"strategy_name"`
|
||||||
|
|
||||||
// Strategy type
|
// Strategy type
|
||||||
Type StrategyType `json:"type"`
|
Type StrategyType `json:"type"`
|
||||||
|
|||||||
@@ -54,8 +54,11 @@ func TestListCompetitors(t *testing.T) {
|
|||||||
resp, err := c.Strategies().ListCompetitors(ctx, test.params)
|
resp, err := c.Strategies().ListCompetitors(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListCompetitorsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -114,8 +117,11 @@ func TestListStrategies(t *testing.T) {
|
|||||||
resp, err := c.Strategies().List(ctx, test.params)
|
resp, err := c.Strategies().List(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListStrategiesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -158,7 +164,7 @@ func TestCreateStrategy(t *testing.T) {
|
|||||||
},
|
},
|
||||||
`{
|
`{
|
||||||
"result": {
|
"result": {
|
||||||
"id": "4f3a1d4c-5833-4f04-b69b-495cbc1f6f1c"
|
"strategy_id": "4f3a1d4c-5833-4f04-b69b-495cbc1f6f1c"
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
@@ -181,8 +187,11 @@ func TestCreateStrategy(t *testing.T) {
|
|||||||
resp, err := c.Strategies().Create(ctx, test.params)
|
resp, err := c.Strategies().Create(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &CreateStrategyResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -207,7 +216,7 @@ func TestInfoStrategy(t *testing.T) {
|
|||||||
},
|
},
|
||||||
`{
|
`{
|
||||||
"result": {
|
"result": {
|
||||||
"strategy_name": "test1",
|
"name": "test1",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"update_type": "strategyItemsListChanged",
|
"update_type": "strategyItemsListChanged",
|
||||||
"type": "COMP_PRICE",
|
"type": "COMP_PRICE",
|
||||||
@@ -243,8 +252,11 @@ func TestInfoStrategy(t *testing.T) {
|
|||||||
resp, err := c.Strategies().Info(ctx, test.params)
|
resp, err := c.Strategies().Info(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &InfoStrategyResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -311,8 +323,11 @@ func TestUpdateStrategy(t *testing.T) {
|
|||||||
resp, err := c.Strategies().Update(ctx, test.params)
|
resp, err := c.Strategies().Update(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &UpdateStrategyResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -361,8 +376,11 @@ func TestAddProductsToStrategy(t *testing.T) {
|
|||||||
resp, err := c.Strategies().AddProducts(ctx, test.params)
|
resp, err := c.Strategies().AddProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &AddProductsToStrategyResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -415,8 +433,11 @@ func TestGetStrategiesByProductIds(t *testing.T) {
|
|||||||
resp, err := c.Strategies().GetByProductIds(ctx, test.params)
|
resp, err := c.Strategies().GetByProductIds(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetStrategiesByProductIdsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -478,8 +499,11 @@ func TestListProductsInStrategy(t *testing.T) {
|
|||||||
resp, err := c.Strategies().ListProducts(ctx, test.params)
|
resp, err := c.Strategies().ListProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ListProductsInStrategyResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -532,8 +556,11 @@ func TestGetCompetitorPrice(t *testing.T) {
|
|||||||
resp, err := c.Strategies().GetCompetitorPrice(ctx, test.params)
|
resp, err := c.Strategies().GetCompetitorPrice(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetCompetitorPriceResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -581,8 +608,11 @@ func TestRemoveProductsFromStrategy(t *testing.T) {
|
|||||||
resp, err := c.Strategies().RemoveProducts(ctx, test.params)
|
resp, err := c.Strategies().RemoveProducts(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &RemoveProductsFromStrategyResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -627,8 +657,11 @@ func TestChangeStrategyStatus(t *testing.T) {
|
|||||||
resp, err := c.Strategies().ChangeStatus(ctx, test.params)
|
resp, err := c.Strategies().ChangeStatus(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &ChangeStatusToResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -672,8 +705,11 @@ func TestRemoveStrategy(t *testing.T) {
|
|||||||
resp, err := c.Strategies().Remove(ctx, test.params)
|
resp, err := c.Strategies().Remove(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &RemoveStrategyResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
83
ozon/utils.go
Normal file
83
ozon/utils.go
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
package ozon
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func compareJsonResponse(t *testing.T, expectedJSON string, response interface{}) {
|
||||||
|
err := json.Unmarshal([]byte(expectedJSON), response)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("got error: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
after, err := json.Marshal(response)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("got error: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var j1, j2 map[string]interface{}
|
||||||
|
if err := json.NewDecoder(strings.NewReader(expectedJSON)).Decode(&j1); err != nil {
|
||||||
|
t.Errorf("got error: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := json.NewDecoder(bytes.NewReader(after)).Decode(&j2); err != nil {
|
||||||
|
t.Errorf("got error: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := compareJson(j1, j2, ""); err != nil {
|
||||||
|
t.Errorf("jsons are not equal: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func compareJson(expected interface{}, actual interface{}, prefix string) error {
|
||||||
|
if expected == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
expectedType := reflect.TypeOf(expected).Kind()
|
||||||
|
actualType := reflect.TypeOf(actual).Kind()
|
||||||
|
if expectedType != actualType {
|
||||||
|
return fmt.Errorf("type for key %s is different: expected: %s, \ngot: %s", prefix, expectedType, actualType)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch expected.(type) {
|
||||||
|
case map[string]interface{}:
|
||||||
|
expectedMap := expected.(map[string]interface{})
|
||||||
|
actualMap := actual.(map[string]interface{})
|
||||||
|
for k, v := range expectedMap {
|
||||||
|
key := fmt.Sprintf("%s.%s", prefix, k)
|
||||||
|
|
||||||
|
actualValue, ok := actualMap[k]
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("key %s is absent", key)
|
||||||
|
}
|
||||||
|
if err := compareJson(v, actualValue, key); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case []interface{}:
|
||||||
|
expectedSlice := expected.([]interface{})
|
||||||
|
actualSlice := actual.([]interface{})
|
||||||
|
for i := range expectedSlice {
|
||||||
|
key := fmt.Sprintf("%s.%d", prefix, i)
|
||||||
|
if err := compareJson(expectedSlice[i], actualSlice[i], key); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
if !reflect.DeepEqual(expected, actual) {
|
||||||
|
return fmt.Errorf("value for key %s is different: expected: %s, \ngot: %s", prefix, expected, actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -63,8 +63,11 @@ func TestGetListOfWarehouses(t *testing.T) {
|
|||||||
resp, err := c.Warehouses().GetListOfWarehouses(ctx)
|
resp, err := c.Warehouses().GetListOfWarehouses(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetListOfWarehousesResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
@@ -139,8 +142,11 @@ func TestGetListOfDeliveryMethods(t *testing.T) {
|
|||||||
resp, err := c.Warehouses().GetListOfDeliveryMethods(ctx, test.params)
|
resp, err := c.Warehouses().GetListOfDeliveryMethods(ctx, test.params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compareJsonResponse(t, test.response, &GetListOfDeliveryMethodsResponse{})
|
||||||
|
|
||||||
if resp.StatusCode != test.statusCode {
|
if resp.StatusCode != test.statusCode {
|
||||||
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
t.Errorf("got wrong status code: got: %d, expected: %d", resp.StatusCode, test.statusCode)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user