github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/templates/test/relationship_to_one.go.tpl (about)

     1  {{- if .Table.IsJoinTable -}}
     2  {{- else -}}
     3  	{{- range $fkey := .Table.FKeys -}}
     4  		{{- $ltable := $.Aliases.Table $fkey.Table -}}
     5  		{{- $ftable := $.Aliases.Table $fkey.ForeignTable -}}
     6  		{{- $rel := $ltable.Relationship $fkey.Name -}}
     7  		{{- $colField := $ltable.Column $fkey.Column -}}
     8  		{{- $fcolField := $ftable.Column $fkey.ForeignColumn -}}
     9  		{{- $usesPrimitives := usesPrimitives $.Tables $fkey.Table $fkey.Column $fkey.ForeignTable $fkey.ForeignColumn }}
    10  func test{{$ltable.UpSingular}}ToOne{{$ftable.UpSingular}}Using{{$rel.Foreign}}(t *testing.T) {
    11  	{{if not $.NoContext}}ctx := context.Background(){{end}}
    12  	tx := MustTx({{if $.NoContext}}boil.Begin(){{else}}boil.BeginTx(ctx, nil){{end}})
    13  	defer func() { _ = tx.Rollback() }()
    14  
    15  	var local {{$ltable.UpSingular}}
    16  	var foreign {{$ftable.UpSingular}}
    17  
    18  	seed := randomize.NewSeed()
    19  	if err := randomize.Struct(seed, &local, {{$ltable.DownSingular}}DBTypes, {{if $fkey.Nullable}}true{{else}}false{{end}}, {{$ltable.DownSingular}}ColumnsWithDefault...); err != nil {
    20  		t.Errorf("Unable to randomize {{$ltable.UpSingular}} struct: %s", err)
    21  	}
    22  	if err := randomize.Struct(seed, &foreign, {{$ftable.DownSingular}}DBTypes, {{if $fkey.ForeignColumnNullable}}true{{else}}false{{end}}, {{$ftable.DownSingular}}ColumnsWithDefault...); err != nil {
    23  		t.Errorf("Unable to randomize {{$ftable.UpSingular}} struct: %s", err)
    24  	}
    25  
    26  	if err := foreign.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    27  		t.Fatal(err)
    28  	}
    29  
    30  	{{if $usesPrimitives -}}
    31  	local.{{$colField}} = foreign.{{$fcolField}}
    32  	{{else -}}
    33  	queries.Assign(&local.{{$colField}}, foreign.{{$fcolField}})
    34  	{{end -}}
    35  	if err := local.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    36  		t.Fatal(err)
    37  	}
    38  
    39  	check, err := local.{{$rel.Foreign}}().One({{if not $.NoContext}}ctx, {{end -}} tx)
    40  	if err != nil {
    41  		t.Fatal(err)
    42  	}
    43  
    44  	{{if $usesPrimitives -}}
    45  	if check.{{$fcolField}} != foreign.{{$fcolField}} {
    46  	{{else -}}
    47  	if !queries.Equal(check.{{$fcolField}}, foreign.{{$fcolField}}) {
    48  	{{end -}}
    49  		t.Errorf("want: %v, got %v", foreign.{{$fcolField}}, check.{{$fcolField}})
    50  	}
    51  
    52  	{{if not $.NoHooks -}}
    53  	ranAfterSelectHook := false
    54  	Add{{$ftable.UpSingular}}Hook(boil.AfterSelectHook, func({{if not $.NoContext}}ctx context.Context, {{end}}e boil.ContextExecutor, o *{{$ftable.UpSingular}}) error {
    55  		ranAfterSelectHook = true
    56  		return nil
    57  	})
    58  	{{- end}}
    59  
    60  	slice := {{$ltable.UpSingular}}Slice{&local}
    61  	if err = local.L.Load{{$rel.Foreign}}({{if not $.NoContext}}ctx, {{end -}} tx, false, (*[]*{{$ltable.UpSingular}})(&slice), nil); err != nil {
    62  		t.Fatal(err)
    63  	}
    64  	if local.R.{{$rel.Foreign}} == nil {
    65  		t.Error("struct should have been eager loaded")
    66  	}
    67  
    68  	local.R.{{$rel.Foreign}} = nil
    69  	if err = local.L.Load{{$rel.Foreign}}({{if not $.NoContext}}ctx, {{end -}} tx, true, &local, nil); err != nil {
    70  		t.Fatal(err)
    71  	}
    72  	if local.R.{{$rel.Foreign}} == nil {
    73  		t.Error("struct should have been eager loaded")
    74  	}
    75  
    76  	{{if not $.NoHooks -}}
    77  	if !ranAfterSelectHook {
    78  		t.Error("failed to run AfterSelect hook for relationship")
    79  	}
    80  	{{- end}}
    81  }
    82  
    83  {{end -}}{{/* range */}}
    84  {{- end -}}{{/* join table */}}