diff options
Diffstat (limited to 'src/models/votes_test.go')
| -rw-r--r-- | src/models/votes_test.go | 1072 |
1 files changed, 1072 insertions, 0 deletions
diff --git a/src/models/votes_test.go b/src/models/votes_test.go new file mode 100644 index 0000000..c7f4f51 --- /dev/null +++ b/src/models/votes_test.go @@ -0,0 +1,1072 @@ +// Code generated by SQLBoiler 4.16.1 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. +// This file is meant to be re-generated in place and/or deleted at any time. + +package models + +import ( + "bytes" + "context" + "reflect" + "testing" + + "github.com/volatiletech/randomize" + "github.com/volatiletech/sqlboiler/v4/boil" + "github.com/volatiletech/sqlboiler/v4/queries" + "github.com/volatiletech/strmangle" +) + +var ( + // Relationships sometimes use the reflection helper queries.Equal/queries.Assign + // so force a package dependency in case they don't. + _ = queries.Equal +) + +func testVotes(t *testing.T) { + t.Parallel() + + query := Votes() + + if query.Query == nil { + t.Error("expected a query, got nothing") + } +} + +func testVotesDelete(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + if rowsAff, err := o.Delete(ctx, tx); err != nil { + t.Error(err) + } else if rowsAff != 1 { + t.Error("should only have deleted one row, but affected:", rowsAff) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 0 { + t.Error("want zero records, got:", count) + } +} + +func testVotesQueryDeleteAll(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + if rowsAff, err := Votes().DeleteAll(ctx, tx); err != nil { + t.Error(err) + } else if rowsAff != 1 { + t.Error("should only have deleted one row, but affected:", rowsAff) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 0 { + t.Error("want zero records, got:", count) + } +} + +func testVotesSliceDeleteAll(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + slice := VoteSlice{o} + + if rowsAff, err := slice.DeleteAll(ctx, tx); err != nil { + t.Error(err) + } else if rowsAff != 1 { + t.Error("should only have deleted one row, but affected:", rowsAff) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 0 { + t.Error("want zero records, got:", count) + } +} + +func testVotesExists(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + e, err := VoteExists(ctx, tx, o.ID) + if err != nil { + t.Errorf("Unable to check if Vote exists: %s", err) + } + if !e { + t.Errorf("Expected VoteExists to return true, but got false.") + } +} + +func testVotesFind(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + voteFound, err := FindVote(ctx, tx, o.ID) + if err != nil { + t.Error(err) + } + + if voteFound == nil { + t.Error("want a record, got nil") + } +} + +func testVotesBind(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + if err = Votes().Bind(ctx, tx, o); err != nil { + t.Error(err) + } +} + +func testVotesOne(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + if x, err := Votes().One(ctx, tx); err != nil { + t.Error(err) + } else if x == nil { + t.Error("expected to get a non nil record") + } +} + +func testVotesAll(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + voteOne := &Vote{} + voteTwo := &Vote{} + if err = randomize.Struct(seed, voteOne, voteDBTypes, false, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + if err = randomize.Struct(seed, voteTwo, voteDBTypes, false, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = voteOne.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + if err = voteTwo.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + slice, err := Votes().All(ctx, tx) + if err != nil { + t.Error(err) + } + + if len(slice) != 2 { + t.Error("want 2 records, got:", len(slice)) + } +} + +func testVotesCount(t *testing.T) { + t.Parallel() + + var err error + seed := randomize.NewSeed() + voteOne := &Vote{} + voteTwo := &Vote{} + if err = randomize.Struct(seed, voteOne, voteDBTypes, false, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + if err = randomize.Struct(seed, voteTwo, voteDBTypes, false, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = voteOne.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + if err = voteTwo.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 2 { + t.Error("want 2 records, got:", count) + } +} + +func voteBeforeInsertHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteAfterInsertHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteAfterSelectHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteBeforeUpdateHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteAfterUpdateHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteBeforeDeleteHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteAfterDeleteHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteBeforeUpsertHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func voteAfterUpsertHook(ctx context.Context, e boil.ContextExecutor, o *Vote) error { + *o = Vote{} + return nil +} + +func testVotesHooks(t *testing.T) { + t.Parallel() + + var err error + + ctx := context.Background() + empty := &Vote{} + o := &Vote{} + + seed := randomize.NewSeed() + if err = randomize.Struct(seed, o, voteDBTypes, false); err != nil { + t.Errorf("Unable to randomize Vote object: %s", err) + } + + AddVoteHook(boil.BeforeInsertHook, voteBeforeInsertHook) + if err = o.doBeforeInsertHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doBeforeInsertHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected BeforeInsertHook function to empty object, but got: %#v", o) + } + voteBeforeInsertHooks = []VoteHook{} + + AddVoteHook(boil.AfterInsertHook, voteAfterInsertHook) + if err = o.doAfterInsertHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doAfterInsertHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected AfterInsertHook function to empty object, but got: %#v", o) + } + voteAfterInsertHooks = []VoteHook{} + + AddVoteHook(boil.AfterSelectHook, voteAfterSelectHook) + if err = o.doAfterSelectHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doAfterSelectHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected AfterSelectHook function to empty object, but got: %#v", o) + } + voteAfterSelectHooks = []VoteHook{} + + AddVoteHook(boil.BeforeUpdateHook, voteBeforeUpdateHook) + if err = o.doBeforeUpdateHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doBeforeUpdateHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected BeforeUpdateHook function to empty object, but got: %#v", o) + } + voteBeforeUpdateHooks = []VoteHook{} + + AddVoteHook(boil.AfterUpdateHook, voteAfterUpdateHook) + if err = o.doAfterUpdateHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doAfterUpdateHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected AfterUpdateHook function to empty object, but got: %#v", o) + } + voteAfterUpdateHooks = []VoteHook{} + + AddVoteHook(boil.BeforeDeleteHook, voteBeforeDeleteHook) + if err = o.doBeforeDeleteHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doBeforeDeleteHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected BeforeDeleteHook function to empty object, but got: %#v", o) + } + voteBeforeDeleteHooks = []VoteHook{} + + AddVoteHook(boil.AfterDeleteHook, voteAfterDeleteHook) + if err = o.doAfterDeleteHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doAfterDeleteHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected AfterDeleteHook function to empty object, but got: %#v", o) + } + voteAfterDeleteHooks = []VoteHook{} + + AddVoteHook(boil.BeforeUpsertHook, voteBeforeUpsertHook) + if err = o.doBeforeUpsertHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doBeforeUpsertHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected BeforeUpsertHook function to empty object, but got: %#v", o) + } + voteBeforeUpsertHooks = []VoteHook{} + + AddVoteHook(boil.AfterUpsertHook, voteAfterUpsertHook) + if err = o.doAfterUpsertHooks(ctx, nil); err != nil { + t.Errorf("Unable to execute doAfterUpsertHooks: %s", err) + } + if !reflect.DeepEqual(o, empty) { + t.Errorf("Expected AfterUpsertHook function to empty object, but got: %#v", o) + } + voteAfterUpsertHooks = []VoteHook{} +} + +func testVotesInsert(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 1 { + t.Error("want one record, got:", count) + } +} + +func testVotesInsertWhitelist(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Whitelist(voteColumnsWithoutDefault...)); err != nil { + t.Error(err) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 1 { + t.Error("want one record, got:", count) + } +} + +func testVoteToOneCommentUsingComment(t *testing.T) { + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + + var local Vote + var foreign Comment + + seed := randomize.NewSeed() + if err := randomize.Struct(seed, &local, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + if err := randomize.Struct(seed, &foreign, commentDBTypes, false, commentColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Comment struct: %s", err) + } + + if err := foreign.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + queries.Assign(&local.CommentID, foreign.ID) + if err := local.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + check, err := local.Comment().One(ctx, tx) + if err != nil { + t.Fatal(err) + } + + if !queries.Equal(check.ID, foreign.ID) { + t.Errorf("want: %v, got %v", foreign.ID, check.ID) + } + + ranAfterSelectHook := false + AddCommentHook(boil.AfterSelectHook, func(ctx context.Context, e boil.ContextExecutor, o *Comment) error { + ranAfterSelectHook = true + return nil + }) + + slice := VoteSlice{&local} + if err = local.L.LoadComment(ctx, tx, false, (*[]*Vote)(&slice), nil); err != nil { + t.Fatal(err) + } + if local.R.Comment == nil { + t.Error("struct should have been eager loaded") + } + + local.R.Comment = nil + if err = local.L.LoadComment(ctx, tx, true, &local, nil); err != nil { + t.Fatal(err) + } + if local.R.Comment == nil { + t.Error("struct should have been eager loaded") + } + + if !ranAfterSelectHook { + t.Error("failed to run AfterSelect hook for relationship") + } +} + +func testVoteToOnePostUsingPost(t *testing.T) { + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + + var local Vote + var foreign Post + + seed := randomize.NewSeed() + if err := randomize.Struct(seed, &local, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + if err := randomize.Struct(seed, &foreign, postDBTypes, false, postColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Post struct: %s", err) + } + + if err := foreign.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + queries.Assign(&local.PostID, foreign.ID) + if err := local.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + check, err := local.Post().One(ctx, tx) + if err != nil { + t.Fatal(err) + } + + if !queries.Equal(check.ID, foreign.ID) { + t.Errorf("want: %v, got %v", foreign.ID, check.ID) + } + + ranAfterSelectHook := false + AddPostHook(boil.AfterSelectHook, func(ctx context.Context, e boil.ContextExecutor, o *Post) error { + ranAfterSelectHook = true + return nil + }) + + slice := VoteSlice{&local} + if err = local.L.LoadPost(ctx, tx, false, (*[]*Vote)(&slice), nil); err != nil { + t.Fatal(err) + } + if local.R.Post == nil { + t.Error("struct should have been eager loaded") + } + + local.R.Post = nil + if err = local.L.LoadPost(ctx, tx, true, &local, nil); err != nil { + t.Fatal(err) + } + if local.R.Post == nil { + t.Error("struct should have been eager loaded") + } + + if !ranAfterSelectHook { + t.Error("failed to run AfterSelect hook for relationship") + } +} + +func testVoteToOneSetOpCommentUsingComment(t *testing.T) { + var err error + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + + var a Vote + var b, c Comment + + seed := randomize.NewSeed() + if err = randomize.Struct(seed, &a, voteDBTypes, false, strmangle.SetComplement(votePrimaryKeyColumns, voteColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + if err = randomize.Struct(seed, &b, commentDBTypes, false, strmangle.SetComplement(commentPrimaryKeyColumns, commentColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + if err = randomize.Struct(seed, &c, commentDBTypes, false, strmangle.SetComplement(commentPrimaryKeyColumns, commentColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + + if err := a.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + if err = b.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + for i, x := range []*Comment{&b, &c} { + err = a.SetComment(ctx, tx, i != 0, x) + if err != nil { + t.Fatal(err) + } + + if a.R.Comment != x { + t.Error("relationship struct not set to correct value") + } + + if x.R.Votes[0] != &a { + t.Error("failed to append to foreign relationship struct") + } + if !queries.Equal(a.CommentID, x.ID) { + t.Error("foreign key was wrong value", a.CommentID) + } + + zero := reflect.Zero(reflect.TypeOf(a.CommentID)) + reflect.Indirect(reflect.ValueOf(&a.CommentID)).Set(zero) + + if err = a.Reload(ctx, tx); err != nil { + t.Fatal("failed to reload", err) + } + + if !queries.Equal(a.CommentID, x.ID) { + t.Error("foreign key was wrong value", a.CommentID, x.ID) + } + } +} + +func testVoteToOneRemoveOpCommentUsingComment(t *testing.T) { + var err error + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + + var a Vote + var b Comment + + seed := randomize.NewSeed() + if err = randomize.Struct(seed, &a, voteDBTypes, false, strmangle.SetComplement(votePrimaryKeyColumns, voteColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + if err = randomize.Struct(seed, &b, commentDBTypes, false, strmangle.SetComplement(commentPrimaryKeyColumns, commentColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + + if err = a.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + if err = a.SetComment(ctx, tx, true, &b); err != nil { + t.Fatal(err) + } + + if err = a.RemoveComment(ctx, tx, &b); err != nil { + t.Error("failed to remove relationship") + } + + count, err := a.Comment().Count(ctx, tx) + if err != nil { + t.Error(err) + } + if count != 0 { + t.Error("want no relationships remaining") + } + + if a.R.Comment != nil { + t.Error("R struct entry should be nil") + } + + if !queries.IsValuerNil(a.CommentID) { + t.Error("foreign key value should be nil") + } + + if len(b.R.Votes) != 0 { + t.Error("failed to remove a from b's relationships") + } +} + +func testVoteToOneSetOpPostUsingPost(t *testing.T) { + var err error + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + + var a Vote + var b, c Post + + seed := randomize.NewSeed() + if err = randomize.Struct(seed, &a, voteDBTypes, false, strmangle.SetComplement(votePrimaryKeyColumns, voteColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + if err = randomize.Struct(seed, &b, postDBTypes, false, strmangle.SetComplement(postPrimaryKeyColumns, postColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + if err = randomize.Struct(seed, &c, postDBTypes, false, strmangle.SetComplement(postPrimaryKeyColumns, postColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + + if err := a.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + if err = b.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + for i, x := range []*Post{&b, &c} { + err = a.SetPost(ctx, tx, i != 0, x) + if err != nil { + t.Fatal(err) + } + + if a.R.Post != x { + t.Error("relationship struct not set to correct value") + } + + if x.R.Votes[0] != &a { + t.Error("failed to append to foreign relationship struct") + } + if !queries.Equal(a.PostID, x.ID) { + t.Error("foreign key was wrong value", a.PostID) + } + + zero := reflect.Zero(reflect.TypeOf(a.PostID)) + reflect.Indirect(reflect.ValueOf(&a.PostID)).Set(zero) + + if err = a.Reload(ctx, tx); err != nil { + t.Fatal("failed to reload", err) + } + + if !queries.Equal(a.PostID, x.ID) { + t.Error("foreign key was wrong value", a.PostID, x.ID) + } + } +} + +func testVoteToOneRemoveOpPostUsingPost(t *testing.T) { + var err error + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + + var a Vote + var b Post + + seed := randomize.NewSeed() + if err = randomize.Struct(seed, &a, voteDBTypes, false, strmangle.SetComplement(votePrimaryKeyColumns, voteColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + if err = randomize.Struct(seed, &b, postDBTypes, false, strmangle.SetComplement(postPrimaryKeyColumns, postColumnsWithoutDefault)...); err != nil { + t.Fatal(err) + } + + if err = a.Insert(ctx, tx, boil.Infer()); err != nil { + t.Fatal(err) + } + + if err = a.SetPost(ctx, tx, true, &b); err != nil { + t.Fatal(err) + } + + if err = a.RemovePost(ctx, tx, &b); err != nil { + t.Error("failed to remove relationship") + } + + count, err := a.Post().Count(ctx, tx) + if err != nil { + t.Error(err) + } + if count != 0 { + t.Error("want no relationships remaining") + } + + if a.R.Post != nil { + t.Error("R struct entry should be nil") + } + + if !queries.IsValuerNil(a.PostID) { + t.Error("foreign key value should be nil") + } + + if len(b.R.Votes) != 0 { + t.Error("failed to remove a from b's relationships") + } +} + +func testVotesReload(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + if err = o.Reload(ctx, tx); err != nil { + t.Error(err) + } +} + +func testVotesReloadAll(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + slice := VoteSlice{o} + + if err = slice.ReloadAll(ctx, tx); err != nil { + t.Error(err) + } +} + +func testVotesSelect(t *testing.T) { + t.Parallel() + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + slice, err := Votes().All(ctx, tx) + if err != nil { + t.Error(err) + } + + if len(slice) != 1 { + t.Error("want one record, got:", len(slice)) + } +} + +var ( + voteDBTypes = map[string]string{`ID`: `integer`, `PostID`: `integer`, `CommentID`: `integer`, `UserID`: `integer`, `Inc`: `integer`, `CreatedAt`: `timestamp with time zone`, `UpdatedAt`: `timestamp with time zone`} + _ = bytes.MinRead +) + +func testVotesUpdate(t *testing.T) { + t.Parallel() + + if 0 == len(votePrimaryKeyColumns) { + t.Skip("Skipping table with no primary key columns") + } + if len(voteAllColumns) == len(votePrimaryKeyColumns) { + t.Skip("Skipping table with only primary key columns") + } + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 1 { + t.Error("want one record, got:", count) + } + + if err = randomize.Struct(seed, o, voteDBTypes, true, votePrimaryKeyColumns...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + if rowsAff, err := o.Update(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } else if rowsAff != 1 { + t.Error("should only affect one row but affected", rowsAff) + } +} + +func testVotesSliceUpdateAll(t *testing.T) { + t.Parallel() + + if len(voteAllColumns) == len(votePrimaryKeyColumns) { + t.Skip("Skipping table with only primary key columns") + } + + seed := randomize.NewSeed() + var err error + o := &Vote{} + if err = randomize.Struct(seed, o, voteDBTypes, true, voteColumnsWithDefault...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Insert(ctx, tx, boil.Infer()); err != nil { + t.Error(err) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + + if count != 1 { + t.Error("want one record, got:", count) + } + + if err = randomize.Struct(seed, o, voteDBTypes, true, votePrimaryKeyColumns...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + // Remove Primary keys and unique columns from what we plan to update + var fields []string + if strmangle.StringSliceMatch(voteAllColumns, votePrimaryKeyColumns) { + fields = voteAllColumns + } else { + fields = strmangle.SetComplement( + voteAllColumns, + votePrimaryKeyColumns, + ) + } + + value := reflect.Indirect(reflect.ValueOf(o)) + typ := reflect.TypeOf(o).Elem() + n := typ.NumField() + + updateMap := M{} + for _, col := range fields { + for i := 0; i < n; i++ { + f := typ.Field(i) + if f.Tag.Get("boil") == col { + updateMap[col] = value.Field(i).Interface() + } + } + } + + slice := VoteSlice{o} + if rowsAff, err := slice.UpdateAll(ctx, tx, updateMap); err != nil { + t.Error(err) + } else if rowsAff != 1 { + t.Error("wanted one record updated but got", rowsAff) + } +} + +func testVotesUpsert(t *testing.T) { + t.Parallel() + + if len(voteAllColumns) == len(votePrimaryKeyColumns) { + t.Skip("Skipping table with only primary key columns") + } + + seed := randomize.NewSeed() + var err error + // Attempt the INSERT side of an UPSERT + o := Vote{} + if err = randomize.Struct(seed, &o, voteDBTypes, true); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + ctx := context.Background() + tx := MustTx(boil.BeginTx(ctx, nil)) + defer func() { _ = tx.Rollback() }() + if err = o.Upsert(ctx, tx, false, nil, boil.Infer(), boil.Infer()); err != nil { + t.Errorf("Unable to upsert Vote: %s", err) + } + + count, err := Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + if count != 1 { + t.Error("want one record, got:", count) + } + + // Attempt the UPDATE side of an UPSERT + if err = randomize.Struct(seed, &o, voteDBTypes, false, votePrimaryKeyColumns...); err != nil { + t.Errorf("Unable to randomize Vote struct: %s", err) + } + + if err = o.Upsert(ctx, tx, true, nil, boil.Infer(), boil.Infer()); err != nil { + t.Errorf("Unable to upsert Vote: %s", err) + } + + count, err = Votes().Count(ctx, tx) + if err != nil { + t.Error(err) + } + if count != 1 { + t.Error("want one record, got:", count) + } +} |
