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  }