code.gitea.io/gitea@v1.21.7/models/migrations/v1_15/v181_test.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package v1_15 //nolint 5 6 import ( 7 "strings" 8 "testing" 9 10 "code.gitea.io/gitea/models/migrations/base" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func Test_AddPrimaryEmail2EmailAddress(t *testing.T) { 16 type User struct { 17 ID int64 18 Email string 19 IsActive bool 20 } 21 22 // Prepare and load the testing database 23 x, deferable := base.PrepareTestEnv(t, 0, new(User)) 24 if x == nil || t.Failed() { 25 defer deferable() 26 return 27 } 28 defer deferable() 29 30 err := AddPrimaryEmail2EmailAddress(x) 31 assert.NoError(t, err) 32 33 type EmailAddress struct { 34 ID int64 `xorm:"pk autoincr"` 35 UID int64 `xorm:"INDEX NOT NULL"` 36 Email string `xorm:"UNIQUE NOT NULL"` 37 LowerEmail string `xorm:"UNIQUE NOT NULL"` 38 IsActivated bool 39 IsPrimary bool `xorm:"DEFAULT(false) NOT NULL"` 40 } 41 42 users := make([]User, 0, 20) 43 err = x.Find(&users) 44 assert.NoError(t, err) 45 46 for _, user := range users { 47 var emailAddress EmailAddress 48 has, err := x.Where("lower_email=?", strings.ToLower(user.Email)).Get(&emailAddress) 49 assert.NoError(t, err) 50 assert.True(t, has) 51 assert.True(t, emailAddress.IsPrimary) 52 assert.EqualValues(t, user.IsActive, emailAddress.IsActivated) 53 assert.EqualValues(t, user.ID, emailAddress.UID) 54 } 55 }