2016-08-04 16:20:17 +02:00
|
|
|
{{- $tableNameSingular := .Table.Name | singular | titleCase -}}
|
|
|
|
{{- $dbName := singular .Table.Name -}}
|
|
|
|
{{- $tableNamePlural := .Table.Name | plural | titleCase -}}
|
|
|
|
{{- $varNamePlural := .Table.Name | plural | camelCase -}}
|
|
|
|
{{- $varNameSingular := .Table.Name | singular | camelCase -}}
|
|
|
|
{{- $parent := . -}}
|
|
|
|
func Test{{$tableNamePlural}}Upsert(t *testing.T) {
|
|
|
|
//var err error
|
|
|
|
|
|
|
|
o := {{$tableNameSingular}}{}
|
|
|
|
|
|
|
|
columns := o.generateUpsertColumns([]string{"one", "two"}, []string{"three", "four"}, []string{"five", "six"})
|
|
|
|
if columns.conflict[0] != "one" || columns.conflict[1] != "two" {
|
|
|
|
t.Errorf("Expected conflict to be %v, got %v", []string{"one", "two"}, columns.conflict)
|
|
|
|
}
|
|
|
|
|
|
|
|
if columns.update[0] != "three" || columns.update[1] != "four" {
|
|
|
|
t.Errorf("Expected update to be %v, got %v", []string{"three", "four"}, columns.update)
|
|
|
|
}
|
|
|
|
|
|
|
|
if columns.whitelist[0] != "five" || columns.whitelist[1] != "six" {
|
|
|
|
t.Errorf("Expected whitelist to be %v, got %v", []string{"five", "six"}, columns.whitelist)
|
|
|
|
}
|
|
|
|
|
|
|
|
columns = o.generateUpsertColumns(nil, nil, nil)
|
|
|
|
if len(columns.whitelist) == 0 {
|
|
|
|
t.Errorf("Expected whitelist to contain columns, but got len 0")
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(columns.conflict) == 0 {
|
|
|
|
t.Errorf("Expected conflict to contain columns, but got len 0")
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(columns.update) == 0 {
|
|
|
|
t.Errorf("expected update to contain columns, but got len 0")
|
|
|
|
}
|
|
|
|
|
|
|
|
upsertCols := upsertData{
|
|
|
|
conflict: []string{},
|
|
|
|
update: []string{},
|
|
|
|
whitelist: []string{"thing"},
|
|
|
|
returning: []string{},
|
|
|
|
}
|
|
|
|
|
|
|
|
query := o.generateUpsertQuery(false, upsertCols)
|
|
|
|
expectedQuery := `INSERT INTO {{.Table.Name}} ("thing") VALUES ($1) ON CONFLICT DO NOTHING`
|
|
|
|
|
|
|
|
if query != expectedQuery {
|
|
|
|
t.Errorf("Expected query mismatch:\n\n%s\n%s\n", query, expectedQuery)
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
query = o.generateUpsertQuery(true, upsertCols)
|
|
|
|
primKeys := strings.Join(strmangle.IdentQuote())
|
|
|
|
expectedQuery = `INSERT INTO {{.Table.Name}} ("thing") VALUES ($1) ON CONFLICT DO UPDATE()`
|
|
|
|
|
|
|
|
if query != expectedQuery {
|
|
|
|
t.Errorf("Expected query mismatch:\n\n%s\n%s\n", query, expectedQuery)
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
create empty row
|
|
|
|
assign random values to it
|
|
|
|
|
|
|
|
attempt to insert it using upsert
|
|
|
|
make sure values come back appropriately
|
|
|
|
|
|
|
|
attempt to upsert row again, make sure comes back as prim key error
|
|
|
|
attempt upsert again, set update to false, ensure it ignores error
|
|
|
|
|
|
|
|
attempt to randomize everything except primary keys on duplicate row
|
|
|
|
attempt upsert again, set update to true, nil, nil
|
|
|
|
perform a find on the the row
|
|
|
|
check if the found row matches the upsert object to ensure returning cols worked appropriately and update worked appropriately
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
{{$varNamePlural}}DeleteAllRows(t)
|
|
|
|
}
|