Skip to content

Commit 40240ff

Browse files
committed
✅ GetGameCreatorsByUserIDsのテスト
1 parent 925e644 commit 40240ff

1 file changed

Lines changed: 98 additions & 0 deletions

File tree

src/repository/gorm2/game_creator_test.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,3 +664,101 @@ func TestCreateGameCreators(t *testing.T) {
664664
})
665665
}
666666
}
667+
668+
func TestGetGameCreatorsByUserIDs(t *testing.T) {
669+
creatorSchema1 := &schema.GameCreatorTable{
670+
ID: uuid.New(),
671+
UserID: uuid.New(),
672+
UserName: "user",
673+
CreatedAt: time.Now(),
674+
Game: schema.GameTable2{
675+
ID: uuid.New(),
676+
Name: "game",
677+
VisibilityTypeID: 1,
678+
},
679+
}
680+
creator1 := domain.NewGameCreator(
681+
values.GameCreatorID(creatorSchema1.ID),
682+
values.NewTrapMemberID(creatorSchema1.UserID),
683+
values.GameID(creatorSchema1.Game.ID),
684+
values.NewTrapMemberName(creatorSchema1.UserName),
685+
creatorSchema1.CreatedAt,
686+
)
687+
creatorSchema2 := &schema.GameCreatorTable{
688+
ID: uuid.New(),
689+
UserID: uuid.New(),
690+
UserName: "user",
691+
CreatedAt: time.Now().Add(-time.Hour),
692+
Game: schema.GameTable2{
693+
ID: creatorSchema1.Game.ID,
694+
Name: "game",
695+
VisibilityTypeID: 1,
696+
},
697+
}
698+
creator2 := domain.NewGameCreator(
699+
values.GameCreatorID(creatorSchema2.ID),
700+
values.NewTrapMemberID(creatorSchema2.UserID),
701+
values.GameID(creatorSchema2.Game.ID),
702+
values.NewTrapMemberName(creatorSchema2.UserName),
703+
creatorSchema2.CreatedAt,
704+
)
705+
706+
testCases := map[string]struct {
707+
creators []*schema.GameCreatorTable
708+
gameID values.GameID
709+
userIDs []values.TraPMemberID
710+
result []*domain.GameCreator
711+
}{
712+
"ユーザー1人に対して1件のcreatorを取得できる": {
713+
creators: []*schema.GameCreatorTable{creatorSchema1},
714+
gameID: values.NewGameIDFromUUID(creatorSchema1.Game.ID),
715+
userIDs: []values.TraPMemberID{creator1.GetUserID()},
716+
result: []*domain.GameCreator{creator1},
717+
},
718+
"複数ユーザーに対してcreatorを取得できる": {
719+
creators: []*schema.GameCreatorTable{creatorSchema1, creatorSchema2},
720+
gameID: values.NewGameIDFromUUID(creatorSchema1.Game.ID),
721+
userIDs: []values.TraPMemberID{creator1.GetUserID(), creator2.GetUserID()},
722+
result: []*domain.GameCreator{creator1, creator2},
723+
},
724+
"該当するcreatorがいないので空配列": {
725+
creators: []*schema.GameCreatorTable{creatorSchema1, creatorSchema2},
726+
gameID: values.NewGameID(),
727+
userIDs: []values.TraPMemberID{values.NewTrapMemberID(uuid.New())},
728+
result: []*domain.GameCreator{},
729+
},
730+
}
731+
732+
for name, testCase := range testCases {
733+
t.Run(name, func(t *testing.T) {
734+
ctx := t.Context()
735+
db, err := testDB.getDB(ctx)
736+
require.NoError(t, err)
737+
738+
if len(testCase.creators) > 0 {
739+
err = db.Create(testCase.creators).Error
740+
require.NoError(t, err)
741+
t.Cleanup(func() {
742+
db, err := testDB.getDB(context.Background())
743+
require.NoError(t, err)
744+
err = db.Session(&gorm.Session{AllowGlobalUpdate: true}).Delete(testCase.creators).Error
745+
require.NoError(t, err)
746+
})
747+
}
748+
749+
repo := NewGameCreator(testDB)
750+
751+
result, err := repo.GetGameCreatorsByUserIDs(t.Context(), testCase.gameID, testCase.userIDs)
752+
753+
assert.NoError(t, err)
754+
assert.Len(t, result, len(testCase.result))
755+
for i, expected := range testCase.result {
756+
assert.Equal(t, expected.GetID(), result[i].GetID())
757+
assert.Equal(t, expected.GetGameID(), result[i].GetGameID())
758+
assert.Equal(t, expected.GetUserID(), result[i].GetUserID())
759+
assert.Equal(t, expected.GetUserName(), result[i].GetUserName())
760+
assert.WithinDuration(t, expected.GetCreatedAt(), result[i].GetCreatedAt(), time.Second)
761+
}
762+
})
763+
}
764+
}

0 commit comments

Comments
 (0)