Skip to content

Commit 05f93c4

Browse files
authored
fix: --subscribed=false should unsubscribe users (#28)
1 parent f990b7a commit 05f93c4

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

cmd/contacts.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type contactFieldParams struct {
2424
func addContactFieldFlags(cmd *cobra.Command) {
2525
cmd.Flags().String("first-name", "", "First name")
2626
cmd.Flags().String("last-name", "", "Last name")
27-
cmd.Flags().BoolP("subscribed", "s", false, "Subscribed status")
27+
cmd.Flags().StringP("subscribed", "s", "", `Subscribed status ("true" or "false")`)
2828
cmd.Flags().String("user-group", "", "User group")
2929
cmd.Flags().StringArray("list", nil, "Mailing list subscription as id=true|false (repeatable)")
3030
cmd.Flags().String("contact-props", "", "Path to a JSON file of contact properties")
@@ -43,8 +43,17 @@ func contactFieldParamsFromCmd(cmd *cobra.Command) (contactFieldParams, error) {
4343
}
4444

4545
if cmd.Flags().Changed("subscribed") {
46-
sub, _ := cmd.Flags().GetBool("subscribed")
47-
params.Subscribed = &sub
46+
subStr, _ := cmd.Flags().GetString("subscribed")
47+
switch subStr {
48+
case "true":
49+
b := true
50+
params.Subscribed = &b
51+
case "false":
52+
b := false
53+
params.Subscribed = &b
54+
default:
55+
return params, fmt.Errorf("--subscribed must be \"true\" or \"false\"")
56+
}
4857
}
4958

5059
listPairs, _ := cmd.Flags().GetStringArray("list")

cmd/contacts_create_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,15 @@ func TestContactFieldParamsFromCmd(t *testing.T) {
7878
}
7979
})
8080

81+
t.Run("invalid --subscribed returns error", func(t *testing.T) {
82+
cmd := newFieldCmd(t)
83+
cmd.Flags().Set("subscribed", "yes")
84+
_, err := contactFieldParamsFromCmd(cmd)
85+
if err == nil {
86+
t.Fatal("expected error, got nil")
87+
}
88+
})
89+
8190
t.Run("invalid --list returns error", func(t *testing.T) {
8291
cmd := newFieldCmd(t)
8392
cmd.Flags().Set("list", "badvalue")

0 commit comments

Comments
 (0)