More tests!
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Hamcha 2019-06-28 16:29:19 +02:00
parent 6c6a8a843d
commit fcb265c490

View file

@ -118,7 +118,7 @@ func TestDraftSessionButEverythingGoesWrong(t *testing.T) {
// Try creating a new session as NOT the owner // Try creating a new session as NOT the owner
mock.message("test-guest", "create", draft.SessionOptions{ mock.message("test-guest", "create", draft.SessionOptions{
Players: 8, // Two players, six bots Players: 8,
Options: draft.DraftOptions{ Options: draft.DraftOptions{
Type: draft.DraftSet, Type: draft.DraftSet,
Positioning: draft.PosEven, Positioning: draft.PosEven,
@ -128,12 +128,66 @@ func TestDraftSessionButEverythingGoesWrong(t *testing.T) {
}) })
mock.expect(t, "must-be-owner", 5) mock.expect(t, "must-be-owner", 5)
//TODO: // Try creating a session with an invalid type
// Try to start session when session doesn't exist mock.message("test-owner", "create", draft.SessionOptions{
// Try to create session twice Players: 8,
// Try to start session with no players Options: draft.DraftOptions{
// Try to start session as not the owner Type: "lolwhat",
// Try to make too many players join a session },
})
mock.expect(t, "session-create-error", 5)
// Try creating a session with invalid data
mock.message("test-owner", "create", 42)
mock.expect(t, "invalid-data", 5)
// Try starting a session that doesn't exist
mock.message("test-owner", "start", nil)
mock.expect(t, "command-unavailable", 5)
// Try creating the session twice
mock.message("test-owner", "create", draft.SessionOptions{
Players: 2,
Options: draft.DraftOptions{
Type: draft.DraftSet,
Positioning: draft.PosEven,
Set: mlp.SetAbsoluteDiscord,
PackCount: 4,
},
})
mock.expect(t, "session-open", 5)
mock.message("test-owner", "create", draft.SessionOptions{
Players: 2,
Options: draft.DraftOptions{
Type: draft.DraftSet,
Positioning: draft.PosEven,
Set: mlp.SetAbsoluteDiscord,
PackCount: 4,
},
})
mock.expect(t, "command-unavailable", 5)
// Try to start session when no-one has joined
mock.message("test-owner", "start", nil)
mock.expect(t, "session-start-error", 5)
// Try to make too many players join
mock.message("a", "join", nil)
mock.expect(t, "player-joined-session", 5)
mock.message("b", "join", nil)
mock.expect(t, "player-joined-session", 5)
mock.message("c", "join", nil)
mock.expect(t, "session-full", 5)
// Try to make someone join a session that already started
mock.message("test-owner", "start", nil)
mock.multiexpect(t, 5, "session-start", "draft-order")
mock.message("c", "join", nil)
mock.expect(t, "session-already-started", 5)
//TODO More picking, etc shenanigans
} }
func (m *MockServer) expect(t *testing.T, typ string, timeout int) { func (m *MockServer) expect(t *testing.T, typ string, timeout int) {
@ -183,7 +237,6 @@ func (m *MockServer) multiexpect(t *testing.T, timeout int, types ...string) {
// Oh noes // Oh noes
t.Fatalf("Expected one of %s but got \"%s\"", types, msg.Message.Type) t.Fatalf("Expected one of %s but got \"%s\"", types, msg.Message.Type)
} }
return
case <-time.After(time.Duration(timeout) * time.Second): case <-time.After(time.Duration(timeout) * time.Second):
t.Fatalf("Expected one of %s but found nothing (timeout after %d seconds)!", types, timeout) t.Fatalf("Expected one of %s but found nothing (timeout after %d seconds)!", types, timeout)
} }