Skip to content

Commit fc1e263

Browse files
committed
move create validation to valid receiver
1 parent e4e84f5 commit fc1e263

File tree

3 files changed

+19
-21
lines changed

3 files changed

+19
-21
lines changed

errors.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,6 @@ var (
145145

146146
ErrInvalidNotificationConfigID = errors.New("invalid value for notification configuration ID")
147147

148-
ErrInvalidNotificationConfigSubscribableChoice = errors.New("invalid value for notification configuration subscribable choice")
149-
150148
ErrInvalidMembership = errors.New("invalid value for membership")
151149

152150
ErrInvalidMembershipIDs = errors.New("invalid value for organization membership ids")

notification_configuration.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -248,28 +248,18 @@ func (s *notificationConfigurations) List(ctx context.Context, subscribableID st
248248

249249
// Create a notification configuration with the given options.
250250
func (s *notificationConfigurations) Create(ctx context.Context, subscribableID string, options NotificationConfigurationCreateOptions) (*NotificationConfiguration, error) {
251-
if err := options.valid(); err != nil {
252-
return nil, err
253-
}
254-
255251
var u string
256252
var subscribableChoice *NotificationConfigurationSubscribableChoice
257-
if options.SubscribableChoice == nil || options.SubscribableChoice.Workspace != nil {
258-
if !validStringID(&subscribableID) {
259-
return nil, ErrInvalidWorkspaceID
260-
}
261-
253+
if options.SubscribableChoice == nil || options.SubscribableChoice.Team == nil {
262254
u = fmt.Sprintf("workspaces/%s/notification-configurations", url.PathEscape(subscribableID))
263-
subscribableChoice = &NotificationConfigurationSubscribableChoice{Workspace: &Workspace{ID: subscribableID}}
264-
} else if options.SubscribableChoice != nil && options.SubscribableChoice.Team != nil {
265-
if !validStringID(&subscribableID) {
266-
return nil, ErrInvalidTeamID
267-
}
268-
269-
u = fmt.Sprintf("teams/%s/notification-configurations", url.PathEscape(subscribableID))
270-
subscribableChoice = &NotificationConfigurationSubscribableChoice{Team: &Team{ID: subscribableID}}
255+
options.SubscribableChoice = &NotificationConfigurationSubscribableChoice{Workspace: &Workspace{ID: subscribableID}}
271256
} else {
272-
return nil, ErrInvalidNotificationConfigSubscribableChoice
257+
u = fmt.Sprintf("teams/%s/notification-configurations", url.PathEscape(subscribableID))
258+
options.SubscribableChoice = &NotificationConfigurationSubscribableChoice{Team: &Team{ID: subscribableID}}
259+
}
260+
261+
if err := options.valid(); err != nil {
262+
return nil, err
273263
}
274264

275265
req, err := s.client.NewRequest("POST", u, &options)
@@ -378,6 +368,16 @@ func (s *notificationConfigurations) Verify(ctx context.Context, notificationCon
378368
}
379369

380370
func (o NotificationConfigurationCreateOptions) valid() error {
371+
if o.SubscribableChoice == nil || o.SubscribableChoice.Workspace != nil {
372+
if !validStringID(&o.SubscribableChoice.Workspace.ID) {
373+
return ErrInvalidWorkspaceID
374+
}
375+
} else {
376+
if !validStringID(&o.SubscribableChoice.Team.ID) {
377+
return ErrInvalidTeamID
378+
}
379+
}
380+
381381
if o.DestinationType == nil {
382382
return ErrRequiredDestinationType
383383
}

notification_configuration_integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func TestNotificationConfigurationList(t *testing.T) {
7070
nil,
7171
)
7272
assert.Nil(t, ncl)
73-
assert.EqualError(t, err, ErrRequiredDestinationType.Error())
73+
assert.EqualError(t, err, ErrInvalidWorkspaceID.Error())
7474
})
7575
}
7676

0 commit comments

Comments
 (0)