Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions internal/commands/members/members.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,8 +419,7 @@ func deleteMember(ctx context.Context, cmd *cli.Command) error {
return fmt.Errorf("delete member: %w", err)
}

message.Success(appCtx.StatusOutput, "Member deleted")
return nil
return renderDeleteMemberResult(appCtx)
}

func parseMembershipStatus(value string) (sumup.MembershipStatus, error) {
Expand Down Expand Up @@ -494,6 +493,15 @@ func renderMember(w io.Writer, member *sumup.Member) error {
return display.DataList(w, details)
}

func renderDeleteMemberResult(appCtx *app.Context) error {
if appCtx.JSONOutput {
return display.PrintJSON(appCtx.Output, map[string]string{"status": "deleted"})
}

message.Success(appCtx.StatusOutput, "Member deleted")
return nil
}

func memberNickname(member *sumup.Member) string {
if member != nil && member.User != nil && member.User.Nickname != nil && *member.User.Nickname != "" {
return *member.User.Nickname
Expand Down
42 changes: 42 additions & 0 deletions internal/commands/members/members_output_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package members

import (
"bytes"
"strings"
"testing"

"github.com/sumup/sumup-cli/internal/app"
)

func TestRenderDeleteMemberResultPrintsJSONWhenRequested(t *testing.T) {
var out bytes.Buffer

appCtx := &app.Context{
JSONOutput: true,
Output: &out,
}

if err := renderDeleteMemberResult(appCtx); err != nil {
t.Fatalf("renderDeleteMemberResult() error = %v", err)
}

if !strings.Contains(out.String(), `"status": "deleted"`) {
t.Fatalf("renderDeleteMemberResult() output = %q, want deleted acknowledgement", out.String())
}
}

func TestRenderDeleteMemberResultWritesStatusMessageInHumanMode(t *testing.T) {
var statusOut bytes.Buffer

appCtx := &app.Context{
StatusOutput: &statusOut,
}

if err := renderDeleteMemberResult(appCtx); err != nil {
t.Fatalf("renderDeleteMemberResult() error = %v", err)
}

if !strings.Contains(statusOut.String(), "Member deleted") {
t.Fatalf("renderDeleteMemberResult() status output = %q, want delete message", statusOut.String())
}
}
16 changes: 11 additions & 5 deletions internal/commands/transactions/transactions.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/sumup/sumup-cli/internal/currency"
"github.com/sumup/sumup-cli/internal/display"
"github.com/sumup/sumup-cli/internal/display/attribute"
"github.com/sumup/sumup-cli/internal/display/message"
)

func NewCommand() *cli.Command {
Expand Down Expand Up @@ -216,11 +217,7 @@ func refundTransaction(ctx context.Context, cmd *cli.Command) error {
return fmt.Errorf("refund transaction: %w", err)
}

if appCtx.JSONOutput {
return display.PrintJSON(appCtx.Output, map[string]string{"status": "refunded"})
}

return nil
return renderRefundResult(appCtx)
}

func renderTransactionDetails(appCtx *app.Context, transaction *sumup.TransactionFull) error {
Expand All @@ -246,6 +243,15 @@ func renderTransactionDetails(appCtx *app.Context, transaction *sumup.Transactio
})
}

func renderRefundResult(appCtx *app.Context) error {
if appCtx.JSONOutput {
return display.PrintJSON(appCtx.Output, map[string]string{"status": "refunded"})
}

message.Success(appCtx.StatusOutput, "Transaction refunded")
return nil
}

func transactionCardLabel(card *sumup.CardResponse) string {
if card == nil {
return "-"
Expand Down
42 changes: 42 additions & 0 deletions internal/commands/transactions/transactions_output_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package transactions

import (
"bytes"
"strings"
"testing"

"github.com/sumup/sumup-cli/internal/app"
)

func TestRenderRefundResultWritesStatusMessageInHumanMode(t *testing.T) {
var statusOut bytes.Buffer

appCtx := &app.Context{
StatusOutput: &statusOut,
}

if err := renderRefundResult(appCtx); err != nil {
t.Fatalf("renderRefundResult() error = %v", err)
}

if !strings.Contains(statusOut.String(), "Transaction refunded") {
t.Fatalf("renderRefundResult() status output = %q, want refund message", statusOut.String())
}
}

func TestRenderRefundResultPrintsJSONWhenRequested(t *testing.T) {
var out bytes.Buffer

appCtx := &app.Context{
JSONOutput: true,
Output: &out,
}

if err := renderRefundResult(appCtx); err != nil {
t.Fatalf("renderRefundResult() error = %v", err)
}

if !strings.Contains(out.String(), `"status": "refunded"`) {
t.Fatalf("renderRefundResult() output = %q, want refunded JSON acknowledgement", out.String())
}
}