Skip to content

Commit

Permalink
adds create wallet endpoint (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlicanAkkus committed Feb 15, 2023
1 parent 2f8e80a commit eccf609
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 109 deletions.
5 changes: 5 additions & 0 deletions adapter/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,11 @@ type RemittanceRequest struct {
RemittanceReasonType string `json:"remittanceReasonType"`
}

type CreateMemberWalletRequest struct {
NegativeAmountLimit float64 `json:"negativeAmountLimit"`
Currency Currency `json:"currency"`
}

type CreateWithdrawRequest struct {
MemberId int64 `json:"memberId"`
Price float64 `json:"price"`
Expand Down
15 changes: 15 additions & 0 deletions adapter/wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,21 @@ type Wallet struct {
Client *Client
}

func (api *Wallet) CreateMemberWallet(ctx context.Context, memberId int64, request CreateMemberWalletRequest) (*MemberWalletResponse, error) {
newRequest, err := api.Client.NewRequest(ctx, http.MethodPost, fmt.Sprintf("/wallet/v1/members/%d/wallets", memberId), request)
if err != nil {
return nil, err
}

response := &Response[MemberWalletResponse]{}
err = api.Client.Do(ctx, newRequest, response)
if err != nil {
return nil, err
}

return response.Data, nil
}

func (api *Wallet) RetrieveMemberWallet(ctx context.Context, memberId int64) (*MemberWalletResponse, error) {
newRequest, err := api.Client.NewRequest(ctx, http.MethodGet, fmt.Sprintf("/wallet/v1/members/%d/wallet", memberId), nil)
if err != nil {
Expand Down
231 changes: 122 additions & 109 deletions tests/wallet_test.go
Original file line number Diff line number Diff line change
@@ -1,167 +1,180 @@
package tests

import (
"context"
"github.com/craftgate/craftgate-go-client/adapter"
craftgate "github.com/craftgate/craftgate-go-client/adapter"
"github.com/davecgh/go-spew/spew"
"testing"
"time"
"context"
"github.com/craftgate/craftgate-go-client/adapter"
craftgate "github.com/craftgate/craftgate-go-client/adapter"
"github.com/davecgh/go-spew/spew"
"testing"
"time"
)

var walletClient, _ = craftgate.New("api-key", "secret-key", "https://sandbox-api.craftgate.io")

func TestWallet_RetrieveMemberWallet(t *testing.T) {
res, err := walletClient.Wallet.RetrieveMemberWallet(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)
res, err := walletClient.Wallet.RetrieveMemberWallet(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err)
}
if err != nil {
t.Errorf("Error %s", err)
}
}

func TestWallet_RetrieveMerchantMemberWallet(t *testing.T) {
res, err := walletClient.Wallet.RetrieveMerchantMemberWallet(context.Background())
_, _ = spew.Printf("%#v\n", res)
res, err := walletClient.Wallet.RetrieveMerchantMemberWallet(context.Background())
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err)
}
if err != nil {
t.Errorf("Error %s", err)
}
}

func TestWallet_ResetMerchantMemberWalletBalance(t *testing.T) {
request := adapter.ResetMerchantMemberWalletBalanceRequest{WalletAmount: -10}
res, err := walletClient.Wallet.ResetMerchantMemberWalletBalance(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)
request := adapter.ResetMerchantMemberWalletBalanceRequest{WalletAmount: -10}
res, err := walletClient.Wallet.ResetMerchantMemberWalletBalance(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_SearchWalletTransactions(t *testing.T) {
request := adapter.SearchWalletTransactionsRequest{}
res, err := walletClient.Wallet.SearchWalletTransactions(context.Background(), 1, request)
_, _ = spew.Printf("%#v\n", res)
request := adapter.SearchWalletTransactionsRequest{}
res, err := walletClient.Wallet.SearchWalletTransactions(context.Background(), 1, request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_RetrieveRefundableAmountOfWalletTransaction(t *testing.T) {
res, err := walletClient.Wallet.RetrieveRefundableAmountOfWalletTransaction(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)
res, err := walletClient.Wallet.RetrieveRefundableAmountOfWalletTransaction(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_RefundWalletTransactionToCard(t *testing.T) {
request := adapter.RefundWalletTransactionToCardRequest{RefundPrice: 10}
res, err := walletClient.Wallet.RefundWalletTransactionToCard(context.Background(), 1, request)
_, _ = spew.Printf("%#v\n", res)
request := adapter.RefundWalletTransactionToCardRequest{RefundPrice: 10}
res, err := walletClient.Wallet.RefundWalletTransactionToCard(context.Background(), 1, request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_RetrieveRefundWalletTransactionsToCard(t *testing.T) {
res, err := walletClient.Wallet.RetrieveRefundWalletTransactionsToCard(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)
res, err := walletClient.Wallet.RetrieveRefundWalletTransactionsToCard(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_SendRemittance(t *testing.T) {
request := adapter.RemittanceRequest{
Price: 100,
MemberId: 1,
Description: "bonus",
RemittanceReasonType: "REDEEM_ONLY_LOYALTY",
}
res, err := walletClient.Wallet.SendRemittance(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
request := adapter.RemittanceRequest{
Price: 100,
MemberId: 1,
Description: "bonus",
RemittanceReasonType: "REDEEM_ONLY_LOYALTY",
}
res, err := walletClient.Wallet.SendRemittance(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_ReceiveRemittance(t *testing.T) {
request := adapter.RemittanceRequest{
Price: 10,
MemberId: 1,
Description: "bonus",
RemittanceReasonType: "REDEEM_ONLY_LOYALTY",
}
res, err := walletClient.Wallet.ReceiveRemittance(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
request := adapter.RemittanceRequest{
Price: 10,
MemberId: 1,
Description: "bonus",
RemittanceReasonType: "REDEEM_ONLY_LOYALTY",
}
res, err := walletClient.Wallet.ReceiveRemittance(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_RetrieveRemittance(t *testing.T) {
res, err := walletClient.Wallet.RetrieveRemittance(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)
res, err := walletClient.Wallet.RetrieveRemittance(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_CreateWithdraw(t *testing.T) {
request := adapter.CreateWithdrawRequest{
Price: 5,
MemberId: 1,
Description: "Para çekme talebi",
Currency: "TRY",
}
res, err := walletClient.Wallet.CreateWithdraw(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
request := adapter.CreateWithdrawRequest{
Price: 5,
MemberId: 1,
Description: "Para çekme talebi",
Currency: "TRY",
}
res, err := walletClient.Wallet.CreateWithdraw(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_CancelWithdraw(t *testing.T) {
res, err := walletClient.Wallet.CancelWithdraw(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)
res, err := walletClient.Wallet.CancelWithdraw(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_RetrieveWithdraw(t *testing.T) {
res, err := walletClient.Wallet.RetrieveWithdraw(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)
res, err := walletClient.Wallet.RetrieveWithdraw(context.Background(), 1)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_SearchWithdraws(t *testing.T) {
request := adapter.SearchWithdrawsRequest{
Currency: "TRY",
MinWithdrawPrice: 0,
MaxWithdrawPrice: 10000,
MinCreatedDate: time.Now().AddDate(0, 0, -180),
MaxCreatedDate: time.Now(),
}
res, err := walletClient.Wallet.SearchWithdraws(context.Background(), request)

_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
request := adapter.SearchWithdrawsRequest{
Currency: "TRY",
MinWithdrawPrice: 0,
MaxWithdrawPrice: 10000,
MinCreatedDate: time.Now().AddDate(0, 0, -180),
MaxCreatedDate: time.Now(),
}
res, err := walletClient.Wallet.SearchWithdraws(context.Background(), request)

_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
}

func TestWallet_CreateMemberWallet(t *testing.T) {
request := adapter.CreateMemberWalletRequest{
NegativeAmountLimit: 0,
Currency: "TRY",
}
res, err := walletClient.Wallet.CreateMemberWallet(context.Background(), 1, request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err.Error())
}
}

0 comments on commit eccf609

Please sign in to comment.