153 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package ozon
 | 
						||
 | 
						||
import (
 | 
						||
	"net/http"
 | 
						||
	"testing"
 | 
						||
 | 
						||
	core "github.com/diphantxm/ozon-api-client"
 | 
						||
)
 | 
						||
 | 
						||
func TestGetFBOReturns(t *testing.T) {
 | 
						||
	tests := []struct {
 | 
						||
		statusCode int
 | 
						||
		headers    map[string]string
 | 
						||
		params     *GetFBOReturnsParams
 | 
						||
		response   string
 | 
						||
	}{
 | 
						||
		// Test Ok
 | 
						||
		{
 | 
						||
			http.StatusOK,
 | 
						||
			map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
 | 
						||
			&GetFBOReturnsParams{
 | 
						||
				Filter: GetFBOReturnsFilter{
 | 
						||
					PostingNumber: "some number",
 | 
						||
				},
 | 
						||
				LastId: 123,
 | 
						||
				Limit:  100,
 | 
						||
			},
 | 
						||
			`{
 | 
						||
				"last_id": 0,
 | 
						||
				"returns": [
 | 
						||
				  {
 | 
						||
					"accepted_from_customer_moment": "2019-08-24T14:15:22Z",
 | 
						||
					"company_id": 0,
 | 
						||
					"current_place_name": "my-place",
 | 
						||
					"dst_place_name": "that-place",
 | 
						||
					"id": 0,
 | 
						||
					"is_opened": true,
 | 
						||
					"posting_number": "some number",
 | 
						||
					"return_reason_name": "ripped",
 | 
						||
					"returned_to_ozon_moment": "2019-08-24T14:15:22Z",
 | 
						||
					"sku": 0,
 | 
						||
					"status_name": "delivering"
 | 
						||
				  }
 | 
						||
				]
 | 
						||
			}`,
 | 
						||
		},
 | 
						||
		// Test No Client-Id or Api-Key
 | 
						||
		{
 | 
						||
			http.StatusUnauthorized,
 | 
						||
			map[string]string{},
 | 
						||
			&GetFBOReturnsParams{},
 | 
						||
			`{
 | 
						||
				"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))
 | 
						||
 | 
						||
		resp, err := c.Returns().GetFBOReturns(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 TestGetFBSReturns(t *testing.T) {
 | 
						||
	tests := []struct {
 | 
						||
		statusCode int
 | 
						||
		headers    map[string]string
 | 
						||
		params     *GetFBSReturnsParams
 | 
						||
		response   string
 | 
						||
	}{
 | 
						||
		// Test Ok
 | 
						||
		{
 | 
						||
			http.StatusOK,
 | 
						||
			map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
 | 
						||
			&GetFBSReturnsParams{
 | 
						||
				Filter: GetFBSReturnsFilter{
 | 
						||
					PostingNumber: []string{"07402477-0022-2"},
 | 
						||
					Status:        "returned_to_seller",
 | 
						||
				},
 | 
						||
				Limit:  1000,
 | 
						||
				Offset: 0,
 | 
						||
			},
 | 
						||
			`{
 | 
						||
				"result": {
 | 
						||
				  "returns": [
 | 
						||
					{
 | 
						||
					  "id": 19166541735000,
 | 
						||
					  "clearing_id": 19166541725000,
 | 
						||
					  "posting_number": "07402477-0022-2",
 | 
						||
					  "product_id": 172423678,
 | 
						||
					  "sku": 172423678,
 | 
						||
					  "status": "returned_to_seller",
 | 
						||
					  "returns_keeping_cost": 0,
 | 
						||
					  "return_reason_name": "5.12 Заказ более не актуален: долгие сроки доставки",
 | 
						||
					  "return_date": "2020-08-12T17:27:50+00:00",
 | 
						||
					  "quantity": 1,
 | 
						||
					  "product_name": "Кофе ароматизированный \"Лесной орех\" 250 гр",
 | 
						||
					  "price": 294,
 | 
						||
					  "waiting_for_seller_date_time": "2020-08-16T02:50:35+00:00",
 | 
						||
					  "returned_to_seller_date_time": "2020-08-21T10:07:13+00:00",
 | 
						||
					  "last_free_waiting_day": "2020-08-19T23:59:59+00:00",
 | 
						||
					  "is_opened": false,
 | 
						||
					  "place_id": 0,
 | 
						||
					  "commission_percent": 0,
 | 
						||
					  "commission": 0,
 | 
						||
					  "price_without_commission": 0,
 | 
						||
					  "is_moving": false,
 | 
						||
					  "moving_to_place_name": "МОСКВА_ХАБ",
 | 
						||
					  "waiting_for_seller_days": 2,
 | 
						||
					  "picking_amount": null,
 | 
						||
					  "accepted_from_customer_moment": null,
 | 
						||
					  "picking_tag": null
 | 
						||
					}
 | 
						||
				  ],
 | 
						||
				  "count": 1
 | 
						||
				}
 | 
						||
			}`,
 | 
						||
		},
 | 
						||
		// Test No Client-Id or Api-Key
 | 
						||
		{
 | 
						||
			http.StatusUnauthorized,
 | 
						||
			map[string]string{},
 | 
						||
			&GetFBSReturnsParams{},
 | 
						||
			`{
 | 
						||
				"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))
 | 
						||
 | 
						||
		resp, err := c.Returns().GetFBSReturns(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)
 | 
						||
		}
 | 
						||
	}
 | 
						||
}
 |