Passed
Push — main ( 09cc28...2b959f )
by Acho
01:09 queued 14s
created

transfers_service_test.go   A

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 28
dl 0
loc 52
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A flutterwave.TestTransfersService_Rate_Failure 0 19 1
A flutterwave.TestTransfersService_Rate 0 20 1
1
package flutterwave
2
3
import (
4
	"context"
5
	"github.com/NdoleStudio/flutterwave-go/internal/helpers"
6
	"github.com/NdoleStudio/flutterwave-go/internal/stubs"
7
	"github.com/stretchr/testify/assert"
8
	"net/http"
9
	"testing"
10
)
11
12
func TestTransfersService_Rate(t *testing.T) {
13
	// Setup
14
	t.Parallel()
15
16
	// Arrange
17
	server := helpers.MakeTestServer(http.StatusOK, string(stubs.TransferRateResponse()))
18
	client := New(WithBaseURL(server.URL))
19
20
	// Act
21
	rate, response, err := client.Transfers.Rate(context.Background(), 1000, "USD", "NGN")
22
23
	// Assert
24
	assert.Nil(t, err)
25
26
	assert.Equal(t, http.StatusOK, response.HTTPResponse.StatusCode)
27
	assert.Equal(t, stubs.TransferRateResponse(), *response.Body)
28
	assert.Equal(t, 624240, rate.Data.Source.Amount)
29
30
	// Teardown
31
	server.Close()
32
}
33
34
func TestTransfersService_Rate_Failure(t *testing.T) {
35
	// Setup
36
	t.Parallel()
37
38
	// Arrange
39
	server := helpers.MakeTestServer(http.StatusInternalServerError, `{"error": "internal server error"}`)
40
	client := New(WithBaseURL(server.URL))
41
42
	// Act
43
	rate, response, err := client.Transfers.Rate(context.Background(), 1000, "USD", "NGN")
44
45
	// Assert
46
	assert.NotNil(t, err) // Expect an error
47
	assert.Nil(t, rate)   // The rate should be nil due to failure
48
	assert.Equal(t, http.StatusInternalServerError, response.HTTPResponse.StatusCode)
49
	assert.Contains(t, err.Error(), "500") // Ensure error message contains 500
50
51
	// Teardown
52
	server.Close()
53
}
54