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 */}}