2016-07-13 05:05:33 +02:00
|
|
|
{{- if .Table.IsJoinTable -}}
|
2016-07-14 05:31:44 +02:00
|
|
|
{{- else -}}
|
|
|
|
{{- $dot := . }}
|
|
|
|
{{- $table := .Table }}
|
2016-07-16 22:02:09 +02:00
|
|
|
{{- range .Table.ToManyRelationships -}}
|
2016-08-14 00:28:54 +02:00
|
|
|
{{- if (and .ForeignColumnUnique (not .ToJoinTable)) -}}
|
2016-07-18 02:50:01 +02:00
|
|
|
{{- template "relationship_to_one_test_helper" (textsFromOneToOneRelationship $dot.PkgName $dot.Tables $table .) -}}
|
|
|
|
{{- else -}}
|
2016-07-14 05:31:44 +02:00
|
|
|
{{- $rel := textsFromRelationship $dot.Tables $table . -}}
|
|
|
|
func Test{{$rel.LocalTable.NameGo}}ToMany{{$rel.Function.Name}}(t *testing.T) {
|
2016-08-14 10:58:36 +02:00
|
|
|
t.Parallel()
|
|
|
|
|
2016-07-15 08:15:35 +02:00
|
|
|
var err error
|
|
|
|
tx := MustTx(boil.Begin())
|
2016-07-14 05:31:44 +02:00
|
|
|
defer tx.Rollback()
|
|
|
|
|
|
|
|
var a {{$rel.LocalTable.NameGo}}
|
|
|
|
var b, c {{$rel.ForeignTable.NameGo}}
|
2016-07-13 05:05:33 +02:00
|
|
|
|
2016-08-01 07:10:10 +02:00
|
|
|
if err := a.Insert(tx); err != nil {
|
2016-07-13 05:05:33 +02:00
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
2016-07-15 08:28:33 +02:00
|
|
|
boil.RandomizeStruct(&b, {{$rel.ForeignTable.NameSingular | camelCase}}DBTypes, true, "{{.ForeignColumn}}")
|
|
|
|
boil.RandomizeStruct(&c, {{$rel.ForeignTable.NameSingular | camelCase}}DBTypes, true, "{{.ForeignColumn}}")
|
2016-07-15 08:37:39 +02:00
|
|
|
{{if .Nullable -}}
|
|
|
|
a.{{.Column | titleCase}}.Valid = true
|
|
|
|
{{- end}}
|
|
|
|
{{- if .ForeignColumnNullable -}}
|
|
|
|
b.{{.ForeignColumn | titleCase}}.Valid = true
|
|
|
|
c.{{.ForeignColumn | titleCase}}.Valid = true
|
|
|
|
{{- end}}
|
2016-07-15 08:28:33 +02:00
|
|
|
{{if not .ToJoinTable -}}
|
2016-07-14 05:31:44 +02:00
|
|
|
b.{{$rel.Function.ForeignAssignment}} = a.{{$rel.Function.LocalAssignment}}
|
|
|
|
c.{{$rel.Function.ForeignAssignment}} = a.{{$rel.Function.LocalAssignment}}
|
2016-07-15 08:37:39 +02:00
|
|
|
{{- end}}
|
2016-08-01 07:10:10 +02:00
|
|
|
if err = b.Insert(tx); err != nil {
|
2016-07-13 05:05:33 +02:00
|
|
|
t.Fatal(err)
|
|
|
|
}
|
2016-08-01 07:10:10 +02:00
|
|
|
if err = c.Insert(tx); err != nil {
|
2016-07-13 05:05:33 +02:00
|
|
|
t.Fatal(err)
|
|
|
|
}
|
2016-07-14 05:31:44 +02:00
|
|
|
|
2016-07-15 08:28:33 +02:00
|
|
|
{{if .ToJoinTable -}}
|
|
|
|
_, err = tx.Exec(`insert into {{.JoinTable}} ({{.JoinLocalColumn}}, {{.JoinForeignColumn}}) values ($1, $2)`, a.{{.Column | titleCase}}, b.{{.ForeignColumn | titleCase}})
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
_, err = tx.Exec(`insert into {{.JoinTable}} ({{.JoinLocalColumn}}, {{.JoinForeignColumn}}) values ($1, $2)`, a.{{.Column | titleCase}}, c.{{.ForeignColumn | titleCase}})
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
{{end}}
|
|
|
|
|
2016-08-14 09:43:30 +02:00
|
|
|
{{$varname := .ForeignTable | singular | camelCase -}}
|
2016-08-01 07:10:10 +02:00
|
|
|
{{$varname}}, err := a.{{$rel.Function.Name}}(tx)
|
2016-07-15 08:28:33 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
2016-07-14 05:31:44 +02:00
|
|
|
|
|
|
|
bFound, cFound := false, false
|
|
|
|
for _, v := range {{$varname}} {
|
|
|
|
if v.{{$rel.Function.ForeignAssignment}} == b.{{$rel.Function.ForeignAssignment}} {
|
|
|
|
bFound = true
|
|
|
|
}
|
|
|
|
if v.{{$rel.Function.ForeignAssignment}} == c.{{$rel.Function.ForeignAssignment}} {
|
|
|
|
cFound = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if !bFound {
|
|
|
|
t.Error("expected to find b")
|
|
|
|
}
|
|
|
|
if !cFound {
|
|
|
|
t.Error("expected to find c")
|
|
|
|
}
|
|
|
|
|
|
|
|
if t.Failed() {
|
|
|
|
t.Logf("%#v", {{$varname}})
|
|
|
|
}
|
2016-07-13 05:05:33 +02:00
|
|
|
}
|
|
|
|
|
2016-07-18 02:50:01 +02:00
|
|
|
{{end -}}{{- /* if unique */ -}}
|
|
|
|
{{- end -}}{{- /* range */ -}}
|
2016-07-13 05:05:33 +02:00
|
|
|
{{- end -}}{{- /* outer if join table */ -}}
|