nn = find_channel_nick_hostmask(new_state, on->global_nick->hostmask);
if (nn == NULL)
client_send_args_ex(client, on->global_nick->hostmask,
- "PART", on->global_nick->nick, NULL);
+ "PART", new_state->name, NULL);
else
client_send_args_ex(client, on->global_nick->hostmask,
"NICK", nn->global_nick->nick, NULL);
on = find_channel_nick(old_state, nn->global_nick->nick);
if (on == NULL)
client_send_args_ex(client, nn->global_nick->hostmask, "JOIN",
- on->channel->name, NULL);
+ nn->channel->name, NULL);
}
/* Send TOPIC if the topic is different */
self.channel1.topic = "bla la"
self.client.send_state_diff(self.state1, self.state2)
self.assertLines(['TOPIC #foo'])
+
+ def test_diff_nicks_leave(self):
+ self.channel1.nicks.add(irc.Nick("me!foo@bar"))
+ self.channel1.nicks.add(irc.Nick("you!foo@bar"))
+ self.client.send_state_diff(self.state1, self.state2)
+ self.assertLines([':me!foo@bar PART #foo', ':you!foo@bar PART #foo'])
+
+ def test_diff_nicks_join(self):
+ self.channel2.nicks.add(irc.Nick("me!foo@bar"))
+ self.channel2.nicks.add(irc.Nick("you!foo@bar"))
+ self.client.send_state_diff(self.state1, self.state2)
+ self.assertLines([':me!foo@bar JOIN #foo', ':you!foo@bar JOIN #foo'])
+
+ def test_diff_nick_change(self):
+ self.channel1.nicks.add(irc.Nick("me!foo@bar"))
+ self.channel2.nicks.add(irc.Nick("you!foo@bar"))
+ self.client.send_state_diff(self.state1, self.state2)
+ # FIXME: self.assertLines([':me!foo@bar NICK you'])