github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/sqlx/transforms_test.go (about)

     1  package sqlx
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/johnnyeven/libtools/sqlx/builder"
     9  )
    10  
    11  func TestValueMap_FromStructBy(t *testing.T) {
    12  	tt := assert.New(t)
    13  
    14  	type User struct {
    15  		ID       uint64 `db:"F_id" sql:"bigint(64) unsigned NOT NULL AUTO_INCREMENT"`
    16  		Name     string `db:"F_name" sql:"varchar(255) NOT NULL"`
    17  		Username string `db:"F_username" sql:"varchar(255) NOT NULL"`
    18  	}
    19  
    20  	user := User{
    21  		ID: 123123213,
    22  	}
    23  
    24  	{
    25  		fieldValues := FieldValuesFromStructBy(user, []string{})
    26  		tt.Len(fieldValues, 0)
    27  	}
    28  	{
    29  		fieldValues := FieldValuesFromStructBy(user, []string{"ID"})
    30  		tt.Equal(fieldValues, builder.FieldValues{
    31  			"ID": user.ID,
    32  		})
    33  	}
    34  }
    35  
    36  func TestValueMap_FromStructWithEmptyFields(t *testing.T) {
    37  	tt := assert.New(t)
    38  
    39  	type User struct {
    40  		ID       uint64 `db:"F_id" sql:"bigint(64) unsigned NOT NULL AUTO_INCREMENT"`
    41  		Name     string `db:"F_name" sql:"varchar(255) NOT NULL"`
    42  		Username string `db:"F_username" sql:"varchar(255) NOT NULL"`
    43  	}
    44  
    45  	user := User{
    46  		ID: 123123213,
    47  	}
    48  
    49  	{
    50  		fieldValues := FieldValuesFromStructByNonZero(user)
    51  		tt.Equal(fieldValues, builder.FieldValues{
    52  			"ID": user.ID,
    53  		})
    54  	}
    55  	{
    56  		fieldValues := FieldValuesFromStructByNonZero(user, "Username")
    57  		tt.Equal(fieldValues, builder.FieldValues{
    58  			"ID":       user.ID,
    59  			"Username": user.Username,
    60  		})
    61  	}
    62  }