This repository has been archived on 2024-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
core-old/internal/service/player_snapshot_test.go
Dawid Wysokiński 2a84f71f90
All checks were successful
continuous-integration/drone/push Build is passing
feat: player snapshots (#117)
Reviewed-on: twhelp/core#117
2022-11-04 04:49:14 +00:00

101 lines
2.4 KiB
Go

package service_test
import (
"context"
"testing"
"time"
"gitea.dwysokinski.me/twhelp/core/internal/domain"
"gitea.dwysokinski.me/twhelp/core/internal/service"
"gitea.dwysokinski.me/twhelp/core/internal/service/internal/mock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPlayerSnapshot_Create(t *testing.T) {
t.Parallel()
playerSvc := &mock.FakePlayerLister{}
players := []domain.PlayerWithRelations{
{
Player: domain.Player{
OpponentsDefeated: domain.OpponentsDefeated{
RankAtt: 8,
ScoreAtt: 7,
RankDef: 6,
ScoreDef: 5,
RankSup: 4,
ScoreSup: 3,
RankTotal: 2,
ScoreTotal: 1,
},
ID: 997,
Name: "name 997",
NumVillages: 5,
Points: 4,
Rank: 2,
TribeID: 1234,
ProfileURL: "profile-997",
ServerKey: "pl151",
CreatedAt: time.Now(),
},
Tribe: domain.NullTribeMeta{
Valid: true,
Tribe: domain.TribeMeta{
ID: 1234,
Name: "name 997",
Tag: "tag 997",
ProfileURL: "profile-997",
},
},
},
{
Player: domain.Player{
OpponentsDefeated: domain.OpponentsDefeated{
RankAtt: 1,
ScoreAtt: 2,
RankDef: 3,
ScoreDef: 4,
RankSup: 5,
ScoreSup: 6,
RankTotal: 7,
ScoreTotal: 8,
},
ID: 998,
Name: "name 998",
NumVillages: 2,
Points: 3,
Rank: 4,
TribeID: 0,
ProfileURL: "profile-998",
ServerKey: "pl151",
CreatedAt: time.Now(),
},
Tribe: domain.NullTribeMeta{
Valid: false,
},
},
}
playerSvc.ListReturns(players, 0, nil)
repo := &mock.FakePlayerSnapshotRepository{}
repo.CreateReturns(nil)
date := time.Now()
assert.NoError(t, service.NewPlayerSnapshot(repo, playerSvc).Create(context.Background(), "pl151", date))
require.Equal(t, 1, repo.CreateCallCount())
_, params := repo.CreateArgsForCall(0)
assert.Len(t, params, len(players))
for i, p := range players {
assert.Equal(t, p.OpponentsDefeated, params[i].OpponentsDefeated)
assert.Equal(t, p.ID, params[i].PlayerID)
assert.Equal(t, p.NumVillages, params[i].NumVillages)
assert.Equal(t, p.Points, params[i].Points)
assert.Equal(t, p.Rank, params[i].Rank)
assert.Equal(t, p.TribeID, params[i].TribeID)
assert.Equal(t, p.ServerKey, params[i].ServerKey)
assert.Equal(t, date, params[i].Date)
}
}