@@ -871,3 +871,72 @@ func TestClient_Update(t *testing.T) {
871871 assert .True (t , errors .Is (err , ErrUpdateWallet ))
872872 })
873873}
874+
875+ func TestClient_Delete (t * testing.T ) {
876+ t .Run ("Success" , func (t * testing.T ) {
877+ walletID := uuid .New ()
878+
879+ handler := func (w http.ResponseWriter , r * http.Request ) {
880+ assert .Equal (t , "/wallets/" + walletID .String (), r .URL .Path )
881+ assert .Equal (t , "DELETE" , r .Method )
882+ assert .Equal (t , "test-api-key" , r .Header .Get ("Api-Key" ))
883+
884+ w .WriteHeader (http .StatusOK )
885+ }
886+
887+ client , server := setupTestClient (t , handler )
888+ defer server .Close ()
889+
890+ err := client .Delete (context .Background (), walletID )
891+
892+ require .NoError (t , err )
893+ })
894+
895+ t .Run ("NilWalletID" , func (t * testing.T ) {
896+ client , server := setupTestClient (t , nil )
897+ defer server .Close ()
898+
899+ err := client .Delete (context .Background (), uuid .Nil )
900+
901+ require .Error (t , err )
902+ assert .True (t , errors .Is (err , ErrWalletIDRequired ))
903+ })
904+
905+ t .Run ("NotFound" , func (t * testing.T ) {
906+ walletID := uuid .New ()
907+
908+ handler := func (w http.ResponseWriter , r * http.Request ) {
909+ w .Header ().Set ("Content-Type" , "application/json" )
910+ w .WriteHeader (http .StatusNotFound )
911+ json .NewEncoder (w ).Encode (map [string ]string {
912+ "message" : "Wallet not found" ,
913+ "type" : "Not found" ,
914+ })
915+ }
916+
917+ client , server := setupTestClient (t , handler )
918+ defer server .Close ()
919+
920+ err := client .Delete (context .Background (), walletID )
921+
922+ require .Error (t , err )
923+ assert .True (t , errors .Is (err , ErrWalletNotFound ))
924+ })
925+
926+ t .Run ("UnexpectedStatusCode" , func (t * testing.T ) {
927+ walletID := uuid .New ()
928+
929+ handler := func (w http.ResponseWriter , r * http.Request ) {
930+ w .WriteHeader (http .StatusInternalServerError )
931+ }
932+
933+ client , server := setupTestClient (t , handler )
934+ defer server .Close ()
935+
936+ err := client .Delete (context .Background (), walletID )
937+
938+ require .Error (t , err )
939+ assert .True (t , errors .Is (err , ErrDeleteWallet ))
940+ assert .True (t , errors .Is (err , ErrUnexpectedStatusCode ))
941+ })
942+ }
0 commit comments