Skip to content

Commit f2e1827

Browse files
committed
progress: chat tests pass
1 parent f02d405 commit f2e1827

File tree

2 files changed

+29
-36
lines changed

2 files changed

+29
-36
lines changed

chat/room.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,8 @@ func (r *Room) HandleMsg(m message.Message) {
9191
r.Members.Each(func(k string, item set.Item) (err error) {
9292
roomMember := item.Value().(*roomMember)
9393
user := roomMember.Member
94-
from := fromMsg.From().(Member)
9594

96-
if fromMsg != nil && roomMember.Ignored.In(from.ID()) {
95+
if fromMsg != nil && fromMsg.From() != nil && roomMember.Ignored.In(fromMsg.From().(Member).ID()) {
9796
// Skip because ignored
9897
return
9998
}

chat/room_test.go

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,17 @@ import (
77
"github.com/shazow/ssh-chat/chat/message"
88
)
99

10-
// Used for testing
11-
type MockScreen struct {
12-
buffer []byte
10+
type ChannelWriter struct {
11+
Chan chan []byte
1312
}
1413

15-
func (s *MockScreen) Write(data []byte) (n int, err error) {
16-
s.buffer = append(s.buffer, data...)
14+
func (w *ChannelWriter) Write(data []byte) (n int, err error) {
15+
w.Chan <- data
1716
return len(data), nil
1817
}
1918

20-
func (s *MockScreen) Read(p *[]byte) (n int, err error) {
21-
*p = s.buffer
22-
s.buffer = []byte{}
23-
return len(*p), nil
24-
}
25-
26-
func (s *MockScreen) Close() error {
19+
func (w *ChannelWriter) Close() error {
20+
close(w.Chan)
2721
return nil
2822
}
2923

@@ -40,11 +34,6 @@ func TestRoomServe(t *testing.T) {
4034
}
4135
}
4236

43-
type ScreenedUser struct {
44-
*message.User
45-
screen *MockScreen
46-
}
47-
4837
/*
4938
func TestIgnore(t *testing.T) {
5039
var buffer []byte
@@ -161,7 +150,9 @@ func expectOutput(t *testing.T, buffer []byte, expected string) {
161150
func TestRoomJoin(t *testing.T) {
162151
var expected, actual []byte
163152

164-
s := &MockScreen{}
153+
s := &ChannelWriter{
154+
Chan: make(chan []byte),
155+
}
165156
u := message.PipedScreen("foo", s)
166157

167158
ch := NewRoom()
@@ -174,21 +165,21 @@ func TestRoomJoin(t *testing.T) {
174165
}
175166

176167
expected = []byte(" * foo joined. (Connected: 1)" + message.Newline)
177-
s.Read(&actual)
168+
actual = <-s.Chan
178169
if !reflect.DeepEqual(actual, expected) {
179170
t.Errorf("Got: %q; Expected: %q", actual, expected)
180171
}
181172

182173
ch.Send(message.NewSystemMsg("hello", u))
183174
expected = []byte("-> hello" + message.Newline)
184-
s.Read(&actual)
175+
actual = <-s.Chan
185176
if !reflect.DeepEqual(actual, expected) {
186177
t.Errorf("Got: %q; Expected: %q", actual, expected)
187178
}
188179

189180
ch.Send(message.ParseInput("/me says hello.", u))
190181
expected = []byte("** foo says hello." + message.Newline)
191-
s.Read(&actual)
182+
actual = <-s.Chan
192183
if !reflect.DeepEqual(actual, expected) {
193184
t.Errorf("Got: %q; Expected: %q", actual, expected)
194185
}
@@ -250,15 +241,12 @@ func TestRoomQuietToggleBroadcasts(t *testing.T) {
250241
t.Fatal(err)
251242
}
252243

253-
// Drain the initial Join message
254-
<-ch.broadcast
255-
256244
u.SetConfig(message.UserConfig{
257245
Quiet: false,
258246
})
259247

260248
expectedMsg := message.NewAnnounceMsg("Ignored")
261-
ch.HandleMsg(expectedMsg)
249+
go ch.HandleMsg(expectedMsg)
262250
msg := <-msgs
263251
if _, ok := msg.(*message.AnnounceMsg); !ok {
264252
t.Errorf("Got: `%T`; Expected: `%T`", msg, expectedMsg)
@@ -268,8 +256,10 @@ func TestRoomQuietToggleBroadcasts(t *testing.T) {
268256
Quiet: true,
269257
})
270258

271-
ch.HandleMsg(message.NewAnnounceMsg("Ignored"))
272-
ch.HandleMsg(message.NewSystemMsg("hello", u))
259+
go func() {
260+
ch.HandleMsg(message.NewAnnounceMsg("Ignored"))
261+
ch.HandleMsg(message.NewSystemMsg("hello", u))
262+
}()
273263
msg = <-msgs
274264
if _, ok := msg.(*message.AnnounceMsg); ok {
275265
t.Errorf("Got unexpected `%T`", msg)
@@ -279,7 +269,9 @@ func TestRoomQuietToggleBroadcasts(t *testing.T) {
279269
func TestQuietToggleDisplayState(t *testing.T) {
280270
var expected, actual []byte
281271

282-
s := &MockScreen{}
272+
s := &ChannelWriter{
273+
Chan: make(chan []byte),
274+
}
283275
u := message.PipedScreen("foo", s)
284276

285277
ch := NewRoom()
@@ -292,23 +284,23 @@ func TestQuietToggleDisplayState(t *testing.T) {
292284
}
293285

294286
expected = []byte(" * foo joined. (Connected: 1)" + message.Newline)
295-
s.Read(&actual)
287+
actual = <-s.Chan
296288
if !reflect.DeepEqual(actual, expected) {
297289
t.Errorf("Got: %q; Expected: %q", actual, expected)
298290
}
299291

300292
ch.Send(message.ParseInput("/quiet", u))
301293

302294
expected = []byte("-> Quiet mode is toggled ON" + message.Newline)
303-
s.Read(&actual)
295+
actual = <-s.Chan
304296
if !reflect.DeepEqual(actual, expected) {
305297
t.Errorf("Got: %q; Expected: %q", actual, expected)
306298
}
307299

308300
ch.Send(message.ParseInput("/quiet", u))
309301

310302
expected = []byte("-> Quiet mode is toggled OFF" + message.Newline)
311-
s.Read(&actual)
303+
actual = <-s.Chan
312304
if !reflect.DeepEqual(actual, expected) {
313305
t.Errorf("Got: %q; Expected: %q", actual, expected)
314306
}
@@ -317,7 +309,9 @@ func TestQuietToggleDisplayState(t *testing.T) {
317309
func TestRoomNames(t *testing.T) {
318310
var expected, actual []byte
319311

320-
s := &MockScreen{}
312+
s := &ChannelWriter{
313+
Chan: make(chan []byte),
314+
}
321315
u := message.PipedScreen("foo", s)
322316

323317
ch := NewRoom()
@@ -330,15 +324,15 @@ func TestRoomNames(t *testing.T) {
330324
}
331325

332326
expected = []byte(" * foo joined. (Connected: 1)" + message.Newline)
333-
s.Read(&actual)
327+
actual = <-s.Chan
334328
if !reflect.DeepEqual(actual, expected) {
335329
t.Errorf("Got: %q; Expected: %q", actual, expected)
336330
}
337331

338332
ch.Send(message.ParseInput("/names", u))
339333

340334
expected = []byte("-> 1 connected: foo" + message.Newline)
341-
s.Read(&actual)
335+
actual = <-s.Chan
342336
if !reflect.DeepEqual(actual, expected) {
343337
t.Errorf("Got: %q; Expected: %q", actual, expected)
344338
}

0 commit comments

Comments
 (0)