diff --git a/lib/src/phoenix_channel.dart b/lib/src/phoenix_channel.dart index 337eec6..145342a 100644 --- a/lib/src/phoenix_channel.dart +++ b/lib/src/phoenix_channel.dart @@ -115,7 +115,7 @@ class PhoenixChannel { /// @nodoc bool isMember( - String topicParam, String event, Map payload, String joinRefParam) { + String topicParam, String event, Map payload, String? joinRefParam) { if (_topic != topicParam) { return false; } diff --git a/test/phoenix_channel_test.dart b/test/phoenix_channel_test.dart index d3c4d8a..06719fd 100644 --- a/test/phoenix_channel_test.dart +++ b/test/phoenix_channel_test.dart @@ -68,31 +68,37 @@ void main() { }); }); - test("parses raw message and triggers channel event", () async { - final message = PhoenixSerializer.encode(new PhoenixMessage( - "1", "ref", "topic", "event", {"payload": "payload"})); - - await socket!.connect(); - final targetChannel = socket!.channel("topic"); - var callbackInvoked = false; - var calledWithPayload; - targetChannel.on("event", (payload, ref, joinRef) { - callbackInvoked = true; - calledWithPayload = payload; + [ + PhoenixMessage("1", "ref", "topic", "event", {"payload": "payload"}), + PhoenixMessage(null, "ref", "topic", "event", {"payload": "payload"}), + ].forEach((msg) { + test( + "parses raw message and triggers channel event: joinRef is ${msg.joinRef}", + () async { + final message = PhoenixSerializer.encode(msg); + + await socket!.connect(); + final targetChannel = socket!.channel("topic"); + var callbackInvoked = false; + var calledWithPayload; + targetChannel.on("event", (payload, ref, joinRef) { + callbackInvoked = true; + calledWithPayload = payload; + }); + + final otherChannel = socket!.channel("off-topic"); + var otherCallbackInvoked = false; + otherChannel.on("event", (event, payload, ref) { + otherCallbackInvoked = true; + }); + + server.sendMessage(message); + + await new Future.delayed(new Duration(milliseconds: 100)); + + expect(callbackInvoked, true); + expect(calledWithPayload, msg.payload); + expect(otherCallbackInvoked, false); }); - - final otherChannel = socket!.channel("off-topic"); - var otherCallbackInvoked = false; - otherChannel.on("event", (event, payload, ref) { - otherCallbackInvoked = true; - }); - - server.sendMessage(message); - - await new Future.delayed(new Duration(milliseconds: 100)); - - expect(callbackInvoked, true); - expect(calledWithPayload, {'payload': 'payload'}); - expect(otherCallbackInvoked, false); }); } diff --git a/test/phoenix_presence_test.dart b/test/phoenix_presence_test.dart index 3aee0cb..4969295 100644 --- a/test/phoenix_presence_test.dart +++ b/test/phoenix_presence_test.dart @@ -319,7 +319,7 @@ class MockChannel implements PhoenixChannel { bool get isLeaving => false; @override - bool isMember(String topicParam, String event, Map payload, String joinRefParam) { + bool isMember(String topicParam, String event, Map payload, String? joinRefParam) { return true; }