mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package db_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
db "github.com/gitpod-io/gitpod/components/gitpod-db/go"
|
|
"github.com/gitpod-io/gitpod/components/gitpod-db/go/dbtest"
|
|
"github.com/stretchr/testify/require"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestVarcharTime_SerializeAndDeserialize(t *testing.T) {
|
|
// Custom table to be able to exercise serialization easily, independent of other models
|
|
type VarcharModel struct {
|
|
ID int `gorm:"primaryKey"`
|
|
Time db.VarcharTime `gorm:"column:time;type:varchar(255);"`
|
|
}
|
|
|
|
conn := dbtest.ConnectForTests(t)
|
|
require.NoError(t, conn.AutoMigrate(&VarcharModel{}))
|
|
|
|
conn.Session(&gorm.Session{AllowGlobalUpdate: true}).Delete(&VarcharModel{})
|
|
|
|
for _, scenario := range []struct {
|
|
Description string
|
|
Input VarcharModel
|
|
Expected VarcharModel
|
|
}{
|
|
{
|
|
Description: "empty value for VarcharTime",
|
|
Input: VarcharModel{
|
|
ID: 1,
|
|
Time: db.VarcharTime{},
|
|
},
|
|
Expected: VarcharModel{
|
|
ID: 1,
|
|
Time: db.VarcharTime{},
|
|
},
|
|
},
|
|
} {
|
|
tx := conn.Create(scenario.Input)
|
|
require.NoError(t, tx.Error)
|
|
|
|
var read VarcharModel
|
|
tx = conn.First(&read, scenario.Input.ID)
|
|
require.NoError(t, tx.Error)
|
|
|
|
require.Equal(t, scenario.Expected, read)
|
|
}
|
|
}
|