package suiteclient

import (
	"testing"

	v1 "github.com/AlchemyTelcoSolutions/callisto-so-bff/api/v1"
	"github.com/AlchemyTelcoSolutions/callisto-so-bff/internal/domain/model"
)

type ClientInt interface {
	PostCreateSaleOrder(string) (*v1.PostSaleOrdersRestResponse, error)
	PatchCreateSaleOrderFromAuction(string) (*v1.PostSaleOrdersRestResponse, error)
	GetSOSummary(apiCase string) (*v1.Response, error)
	PostSaleOrderLegacy(string) (*v1.PostUpdateSaleOrdersRestResponse, error)
	ForwardRequest(string) *model.ProxyResponse
	ExportASNToFile(orderReference v1.OrderReference, params v1.ExportASNToFileParams) (*model.ProxyResponse, error)
}

type ClientGenerator struct {
	client ClientInt
}

func NewClientGenerator(client ClientInt) *ClientGenerator {
	return &ClientGenerator{client: client}
}

func (g *ClientGenerator) NewClient(t *testing.T) *Client {
	return &Client{
		t:      t,
		client: g.client,
	}
}

type Client struct {
	t      *testing.T
	client ClientInt
}
