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