github.com/Ali-iotechsys/sqlboiler/v4@v4.0.0-20221208124957-6aec9a5f1f71/templates/test/relationship_one_to_one_setops.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  		{{- $foreignPKeyCols := (getTable $.Tables .ForeignTable).PKey.Columns }}
    11  		{{- $canSoftDelete := (getTable $.Tables .ForeignTable).CanSoftDelete $.AutoColumns.Deleted }}
    12  func test{{$ltable.UpSingular}}OneToOneSetOp{{$ftable.UpSingular}}Using{{$relAlias.Local}}(t *testing.T) {
    13  	var err error
    14  
    15  	{{if not $.NoContext}}ctx := context.Background(){{end}}
    16  	tx := MustTx({{if $.NoContext}}boil.Begin(){{else}}boil.BeginTx(ctx, nil){{end}})
    17  	defer func() { _ = tx.Rollback() }()
    18  
    19  	var a {{$ltable.UpSingular}}
    20  	var b, c {{$ftable.UpSingular}}
    21  
    22  	seed := randomize.NewSeed()
    23  	if err = randomize.Struct(seed, &a, {{$ltable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ltable.DownSingular}}PrimaryKeyColumns, {{$ltable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
    24  		t.Fatal(err)
    25  	}
    26  	if err = randomize.Struct(seed, &b, {{$ftable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ftable.DownSingular}}PrimaryKeyColumns, {{$ftable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
    27  		t.Fatal(err)
    28  	}
    29  	if err = randomize.Struct(seed, &c, {{$ftable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ftable.DownSingular}}PrimaryKeyColumns, {{$ftable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
    30  		t.Fatal(err)
    31  	}
    32  
    33  	if err := a.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    34  		t.Fatal(err)
    35  	}
    36  	if err = b.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
    37  		t.Fatal(err)
    38  	}
    39  
    40  	for i, x := range []*{{$ftable.UpSingular}}{&b, &c} {
    41  		err = a.Set{{$relAlias.Local}}({{if not $.NoContext}}ctx, {{end -}} tx, i != 0, x)
    42  		if err != nil {
    43  			t.Fatal(err)
    44  		}
    45  
    46  		if a.R.{{$relAlias.Local}} != x {
    47  			t.Error("relationship struct not set to correct value")
    48  		}
    49  		if x.R.{{$relAlias.Foreign}} != &a {
    50  			t.Error("failed to append to foreign relationship struct")
    51  		}
    52  
    53  		{{if $usesPrimitives -}}
    54  		if a.{{$colField}} != x.{{$fcolField}} {
    55  		{{else -}}
    56  		if !queries.Equal(a.{{$colField}}, x.{{$fcolField}}) {
    57  		{{end -}}
    58  			t.Error("foreign key was wrong value", a.{{$colField}})
    59  		}
    60  
    61  		{{if setInclude .ForeignColumn $foreignPKeyCols -}}
    62  		if exists, err := {{$ftable.UpSingular}}Exists({{if not $.NoContext}}ctx, {{end -}} tx, x.{{$foreignPKeyCols | stringMap $.StringFuncs.titleCase | join ", x."}}); err != nil {
    63  			t.Fatal(err)
    64  		} else if !exists {
    65  			t.Error("want 'x' to exist")
    66  		}
    67  		{{else -}}
    68  		zero := reflect.Zero(reflect.TypeOf(x.{{$fcolField}}))
    69  		reflect.Indirect(reflect.ValueOf(&x.{{$fcolField}})).Set(zero)
    70  
    71  		if err = x.Reload({{if not $.NoContext}}ctx, {{end -}} tx); err != nil {
    72  			t.Fatal("failed to reload", err)
    73  		}
    74  		{{- end}}
    75  
    76  		{{if $usesPrimitives -}}
    77  		if a.{{$colField}} != x.{{$fcolField}} {
    78  		{{else -}}
    79  		if !queries.Equal(a.{{$colField}}, x.{{$fcolField}}) {
    80  		{{end -}}
    81  			t.Error("foreign key was wrong value", a.{{$colField}}, x.{{$fcolField}})
    82  		}
    83  
    84  		if {{if not $.NoRowsAffected}}_, {{end -}} err = x.Delete({{if not $.NoContext}}ctx, {{end -}} tx {{- if and $.AddSoftDeletes $canSoftDelete}}, true{{end}}); err != nil {
    85  			t.Fatal("failed to delete x", err)
    86  		}
    87  	}
    88  }
    89  {{- if $rel.ForeignColumnNullable}}
    90  
    91  func test{{$ltable.UpSingular}}OneToOneRemoveOp{{$ftable.UpSingular}}Using{{$relAlias.Local}}(t *testing.T) {
    92  	var err error
    93  
    94  	{{if not $.NoContext}}ctx := context.Background(){{end}}
    95  	tx := MustTx({{if $.NoContext}}boil.Begin(){{else}}boil.BeginTx(ctx, nil){{end}})
    96  	defer func() { _ = tx.Rollback() }()
    97  
    98  	var a {{$ltable.UpSingular}}
    99  	var b {{$ftable.UpSingular}}
   100  
   101  	seed := randomize.NewSeed()
   102  	if err = randomize.Struct(seed, &a, {{$ltable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ltable.DownSingular}}PrimaryKeyColumns, {{$ltable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
   103  		t.Fatal(err)
   104  	}
   105  	if err = randomize.Struct(seed, &b, {{$ftable.DownSingular}}DBTypes, false, strmangle.SetComplement({{$ftable.DownSingular}}PrimaryKeyColumns, {{$ftable.DownSingular}}ColumnsWithoutDefault)...); err != nil {
   106  		t.Fatal(err)
   107  	}
   108  
   109  	if err = a.Insert({{if not $.NoContext}}ctx, {{end -}} tx, boil.Infer()); err != nil {
   110  		t.Fatal(err)
   111  	}
   112  
   113  	if err = a.Set{{$relAlias.Local}}({{if not $.NoContext}}ctx, {{end -}} tx, true, &b); err != nil {
   114  		t.Fatal(err)
   115  	}
   116  
   117  	if err = a.Remove{{$relAlias.Local}}({{if not $.NoContext}}ctx, {{end -}} tx, &b); err != nil {
   118  		t.Error("failed to remove relationship")
   119  	}
   120  
   121  	count, err := a.{{$relAlias.Local}}().Count({{if not $.NoContext}}ctx, {{end -}} tx)
   122  	if err != nil {
   123  		t.Error(err)
   124  	}
   125  	if count != 0 {
   126  		t.Error("want no relationships remaining")
   127  	}
   128  
   129  	if a.R.{{$relAlias.Local}} != nil {
   130  		t.Error("R struct entry should be nil")
   131  	}
   132  
   133  	if !queries.IsValuerNil(b.{{$fcolField}}) {
   134  		t.Error("foreign key column should be nil")
   135  	}
   136  
   137  	if b.R.{{$relAlias.Foreign}} != nil {
   138  		t.Error("failed to remove a from b's relationships")
   139  	}
   140  }
   141  {{end -}}{{/* end if foreign key nullable */}}
   142  {{- end -}}{{/* range */}}
   143  {{- end -}}{{/* join table */}}