Chore: ErrOrgNameTaken error at org insert instead of SQL error (#69325)

* Add ErrOrgNameTaken check to org insert

* Add tests for ErrOrgNameTaken
This commit is contained in:
Pierre Baumard 2023-09-13 16:42:19 +02:00 committed by GitHub
parent a482795a96
commit 81551a4cb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 7 deletions

View File

@ -74,26 +74,32 @@ func (ss *sqlStore) Get(ctx context.Context, orgID int64) (*org.Org, error) {
return &orga, nil
}
func (ss *sqlStore) Insert(ctx context.Context, org *org.Org) (int64, error) {
func (ss *sqlStore) Insert(ctx context.Context, orga *org.Org) (int64, error) {
var orgID int64
var err error
err = ss.db.WithDbSession(ctx, func(sess *db.Session) error {
if _, err = sess.Insert(org); err != nil {
if isNameTaken, err := isOrgNameTaken(orga.Name, orga.ID, sess); err != nil {
return err
} else if isNameTaken {
return org.ErrOrgNameTaken
}
if _, err = sess.Insert(orga); err != nil {
return err
}
orgID = org.ID
orgID = orga.ID
if org.ID != 0 {
if orga.ID != 0 {
// it sets the setval in the sequence
if err := ss.dialect.PostInsertId("org", sess.Session); err != nil {
return err
}
}
sess.PublishAfterCommit(&events.OrgCreated{
Timestamp: org.Created,
Id: org.ID,
Name: org.Name,
Timestamp: orga.Created,
Id: orga.ID,
Name: orga.Name,
})
return nil
})

View File

@ -48,6 +48,16 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
require.NoError(t, err)
})
t.Run("insert with org name taken", func(t *testing.T) {
_, err := orgStore.Insert(context.Background(), &org.Org{
Version: 1,
Name: "test1",
Created: time.Now(),
Updated: time.Now(),
})
require.Error(t, err, org.ErrOrgNameTaken)
})
t.Run("org inserted with next available org ID", func(t *testing.T) {
orgID, err := orgStore.Insert(context.Background(), &org.Org{
ID: 55,
@ -61,6 +71,14 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
require.NoError(t, err)
})
t.Run("update with org name taken", func(t *testing.T) {
err := orgStore.Update(context.Background(), &org.UpdateOrgCommand{
OrgId: 55,
Name: "test1",
})
require.Error(t, err, org.ErrOrgNameTaken)
})
t.Run("delete by user", func(t *testing.T) {
err := orgStore.DeleteUserFromAll(context.Background(), 1)
require.NoError(t, err)