mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-23 22:46:45 +00:00
213 lines
4.7 KiB
Go
213 lines
4.7 KiB
Go
|
|
package database
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestWriteUnqualified(t *testing.T) {
|
||
|
|
for _, tests := range []struct {
|
||
|
|
name string
|
||
|
|
column Column
|
||
|
|
expected string
|
||
|
|
}{
|
||
|
|
{
|
||
|
|
name: "column",
|
||
|
|
column: NewColumn("table", "column"),
|
||
|
|
expected: "column",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns",
|
||
|
|
column: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
expected: "column1, column2",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function column",
|
||
|
|
column: SHA256Column(NewColumn("table", "column")),
|
||
|
|
expected: "SHA256(column)",
|
||
|
|
},
|
||
|
|
} {
|
||
|
|
t.Run(tests.name, func(t *testing.T) {
|
||
|
|
var builder StatementBuilder
|
||
|
|
tests.column.WriteUnqualified(&builder)
|
||
|
|
assert.Equal(t, tests.expected, builder.String())
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestWriteQualified(t *testing.T) {
|
||
|
|
for _, tests := range []struct {
|
||
|
|
name string
|
||
|
|
column Column
|
||
|
|
expected string
|
||
|
|
}{
|
||
|
|
{
|
||
|
|
name: "column",
|
||
|
|
column: NewColumn("table", "column"),
|
||
|
|
expected: "table.column",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns",
|
||
|
|
column: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
expected: "table.column1, table.column2",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function column",
|
||
|
|
column: SHA256Column(NewColumn("table", "column")),
|
||
|
|
expected: "SHA256(table.column)",
|
||
|
|
},
|
||
|
|
} {
|
||
|
|
t.Run(tests.name, func(t *testing.T) {
|
||
|
|
var builder StatementBuilder
|
||
|
|
tests.column.WriteQualified(&builder)
|
||
|
|
assert.Equal(t, tests.expected, builder.String())
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestEquals(t *testing.T) {
|
||
|
|
for _, tests := range []struct {
|
||
|
|
name string
|
||
|
|
column Column
|
||
|
|
toCheck Column
|
||
|
|
expected bool
|
||
|
|
}{
|
||
|
|
{
|
||
|
|
name: "column equal",
|
||
|
|
column: NewColumn("table", "column"),
|
||
|
|
toCheck: NewColumn("table", "column"),
|
||
|
|
expected: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "column nil check",
|
||
|
|
column: NewColumn("table", "column"),
|
||
|
|
toCheck: nil,
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "column both nil",
|
||
|
|
column: (*column)(nil),
|
||
|
|
toCheck: nil,
|
||
|
|
expected: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "column not equal (different name)",
|
||
|
|
column: NewColumn("table", "column"),
|
||
|
|
toCheck: NewColumn("table", "column2"),
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "column not equal (different type)",
|
||
|
|
column: NewColumn("table", "column"),
|
||
|
|
toCheck: SHA256Column(NewColumn("table", "column")),
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns equal",
|
||
|
|
column: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
toCheck: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
expected: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns nil check",
|
||
|
|
column: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
toCheck: nil,
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns both nil",
|
||
|
|
column: Columns(nil),
|
||
|
|
toCheck: nil,
|
||
|
|
expected: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns not equal (different type)",
|
||
|
|
column: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
toCheck: NewColumn("table", "column1"),
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns not equal (different length)",
|
||
|
|
column: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
toCheck: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
},
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "columns not equal (different order)",
|
||
|
|
column: Columns{
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
},
|
||
|
|
toCheck: Columns{
|
||
|
|
NewColumn("table", "column2"),
|
||
|
|
NewColumn("table", "column1"),
|
||
|
|
},
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function column equal",
|
||
|
|
column: SHA256Column(NewColumn("table", "column")),
|
||
|
|
toCheck: SHA256Column(NewColumn("table", "column")),
|
||
|
|
expected: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function nil check",
|
||
|
|
column: SHA256Column(NewColumn("table", "column")),
|
||
|
|
toCheck: nil,
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function both nil",
|
||
|
|
column: (*functionColumn)(nil),
|
||
|
|
toCheck: nil,
|
||
|
|
expected: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function column not equal (different function)",
|
||
|
|
column: SHA256Column(NewColumn("table", "column")),
|
||
|
|
toCheck: LowerColumn(NewColumn("table", "column")),
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function column not equal (different inner column)",
|
||
|
|
column: SHA256Column(NewColumn("table", "column")),
|
||
|
|
toCheck: SHA256Column(NewColumn("table", "column2")),
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "function column not equal (different type)",
|
||
|
|
column: SHA256Column(NewColumn("table", "column")),
|
||
|
|
toCheck: NewColumn("table", "column2"),
|
||
|
|
expected: false,
|
||
|
|
},
|
||
|
|
} {
|
||
|
|
t.Run(tests.name, func(t *testing.T) {
|
||
|
|
assert.Equal(t, tests.expected, tests.column.Equals(tests.toCheck))
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|