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

     1  {{- if .Table.IsJoinTable -}}
     2  {{- else -}}
     3  	{{- range $rel := .Table.ToOneRelationships -}}
     4  		{{- $ltable := $.Aliases.Table $rel.Table -}}
     5  		{{- $ftable := $.Aliases.Table $rel.ForeignTable -}}
     6  		{{- $relAlias := $ftable.Relationship $rel.Name -}}
     7  		{{- $usesPrimitives := usesPrimitives $.Tables $rel.Table $rel.Column $rel.ForeignTable $rel.ForeignColumn -}}
     8  		{{- $colField := $ltable.Column $rel.Column -}}
     9  		{{- $fcolField := $ftable.Column $rel.ForeignColumn }}
    10  func test{{$ltable.UpSingular}}OneToOne{{$ftable.UpSingular}}Using{{$relAlias.Local}}(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 foreign {{$ftable.UpSingular}}
    16  	var local {{$ltable.UpSingular}}
    17  
    18  	seed := randomize.NewSeed()
    19  	if err := randomize.Struct(seed, &foreign, {{$ftable.DownSingular}}DBTypes, true, {{$ftable.DownSingular}}ColumnsWithDefault...); err != nil {
    20  		t.Errorf("Unable to randomize {{$ftable.UpSingular}} struct: %s", err)
    21  	}
    22  	if err := randomize.Struct(seed, &local, {{$ltable.DownSingular}}DBTypes, true, {{$ltable.DownSingular}}ColumnsWithDefault...); err != nil {
    23  		t.Errorf("Unable to randomize {{$ltable.UpSingular}} struct: %s", err)
    24  	}
    25  
    26  	if err := local.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    27  		t.Fatal(err)
    28  	}
    29  
    30  	{{if $usesPrimitives -}}
    31  	foreign.{{$fcolField}} = local.{{$colField}}
    32  	{{else -}}
    33  	queries.Assign(&foreign.{{$fcolField}}, local.{{$colField}})
    34  	{{end -}}
    35  	if err := foreign.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    36  		t.Fatal(err)
    37  	}
    38  
    39  	check, err := local.{{$relAlias.Local}}().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{{$relAlias.Local}}({{if not $.NoContext}}ctx, {{end -}} tx, false, (*[]*{{$ltable.UpSingular}})(&slice), nil); err != nil {
    62  		t.Fatal(err)
    63  	}
    64  	if local.R.{{$relAlias.Local}} == nil {
    65  		t.Error("struct should have been eager loaded")
    66  	}
    67  
    68  	local.R.{{$relAlias.Local}} = nil
    69  	if err = local.L.Load{{$relAlias.Local}}({{if not $.NoContext}}ctx, {{end -}} tx, true, &local, nil); err != nil {
    70  		t.Fatal(err)
    71  	}
    72  	if local.R.{{$relAlias.Local}} == 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 */}}