diff --git a/chat/room_test.go b/chat/room_test.go index d7d768b..c316e15 100644 --- a/chat/room_test.go +++ b/chat/room_test.go @@ -5,7 +5,6 @@ import ( "fmt" "reflect" "testing" - "time" "github.com/shazow/ssh-chat/chat/message" "github.com/shazow/ssh-chat/set" @@ -105,15 +104,18 @@ func TestIgnore(t *testing.T) { t.Fatalf("should have %d ignored users, has %d", 1, len(ignoredList)) } - // when an emote is sent by an ignored user, it should not be displayed - ch.Send(message.NewEmoteMsg("crying", ignored.user)) - + // when an emote is sent by an ignored user, it should not be displayed for ignorer + ch.HandleMsg(message.NewEmoteMsg("is crying", ignored.user)) if ignorer.user.HasMessages() { t.Fatal("should not have emote messages") } + other.user.HandleMsg(other.user.ConsumeOne()) + other.screen.Read(&buffer) + expectOutput(t, buffer, "** "+ignored.user.Name()+" is crying"+message.Newline) + // when a message is sent from the ignored user, it is delivered to non-ignoring users - ch.Send(message.NewPublicMsg("hello", ignored.user)) + ch.HandleMsg(message.NewPublicMsg("hello", ignored.user)) other.user.HandleMsg(other.user.ConsumeOne()) other.screen.Read(&buffer) expectOutput(t, buffer, ignored.user.Name()+": hello"+message.Newline) @@ -145,15 +147,10 @@ func TestIgnore(t *testing.T) { } // after unignoring a user, its messages can be received again - ch.Send(message.NewPublicMsg("hello again!", ignored.user)) - - // give some time for the channel to get the message - time.Sleep(100) + ch.HandleMsg(message.NewPublicMsg("hello again!", ignored.user)) // ensure ignorer has received the message if !ignorer.user.HasMessages() { - // FIXME: This is flaky :/ - t.Skip("test is broken") t.Fatal("should have messages") } ignorer.user.HandleMsg(ignorer.user.ConsumeOne()) @@ -162,6 +159,8 @@ func TestIgnore(t *testing.T) { } func expectOutput(t *testing.T, buffer []byte, expected string) { + t.Helper() + bytes := []byte(expected) if !reflect.DeepEqual(buffer, bytes) { t.Errorf("Got: %q; Expected: %q", buffer, expected)