diff --git a/test/channels_test.exs b/test/channels_test.exs
index 1939ea6..1c0b424 100644
--- a/test/channels_test.exs
+++ b/test/channels_test.exs
@@ -1,130 +1,139 @@
 defmodule ExIrc.ChannelsTest do
   use ExUnit.Case, async: true
 
   alias ExIrc.Channels, as: Channels
 
   test "Joining a channel adds it to the tree of currently joined channels" do
     channels = Channels.init() |> Channels.join("#testchannel") |> Channels.channels
     assert Enum.member?(channels, "#testchannel")
   end
 
   test "The channel name is downcased when joining" do
     channels = Channels.init() |> Channels.join("#TestChannel") |> Channels.channels
     assert Enum.member?(channels, "#testchannel")
   end
 
   test "Joining the same channel twice is a noop" do
     channels = Channels.init() |> Channels.join("#TestChannel") |> Channels.join("#testchannel") |> Channels.channels
     assert 1 == Enum.count(channels)
   end
 
   test "Parting a channel removes it from the tree of currently joined channels" do
     tree = Channels.init() |> Channels.join("#testchannel")
     assert Enum.member?(Channels.channels(tree), "#testchannel")
     tree = Channels.part(tree, "#testchannel")
     refute Enum.member?(Channels.channels(tree), "#testchannel")
   end
 
   test "Parting a channel not in the tree is a noop" do
     tree = Channels.init()
     {count, _} = Channels.part(tree, "#testchannel")
     assert 0 == count
   end
 
   test "Can set the topic for a channel" do
     channels = Channels.init() |> Channels.join("#testchannel") |> Channels.set_topic("#testchannel", "Welcome to Test Channel!")
     assert "Welcome to Test Channel!" == Channels.channel_topic(channels, "#testchannel")
   end
 
   test "Setting the topic for a channel we haven't joined returns :error" do
     channels = Channels.init() |> Channels.set_topic("#testchannel", "Welcome to Test Channel!")
     assert {:error, :no_such_channel} == Channels.channel_topic(channels, "#testchannel")
   end
 
   test "Can set the channel type" do
     channels = Channels.init() |> Channels.join("#testchannel") |> Channels.set_type("#testchannel", "@")
     assert :secret == Channels.channel_type(channels, "#testchannel")
     channels = Channels.set_type(channels, "#testchannel", "*")
     assert :private == Channels.channel_type(channels, "#testchannel")
     channels = Channels.set_type(channels, "#testchannel", "=")
     assert :public == Channels.channel_type(channels, "#testchannel")
   end
 
   test "Setting the channel type for a channel we haven't joined returns :error" do
     channels = Channels.init() |> Channels.set_type("#testchannel", "@")
     assert {:error, :no_such_channel} == Channels.channel_type(channels, "#testchannel")
   end
 
   test "Setting an invalid channel type raises CaseClauseError" do
     assert_raise CaseClauseError, "no case clause matching: '!'", fn ->
         Channels.init() |> Channels.join("#testchannel") |> Channels.set_type("#testchannel", "!")
     end
   end
 
   test "Can join a user to a channel" do
     channels = Channels.init() |> Channels.join("#testchannel") |> Channels.user_join("#testchannel", "testnick")
     assert Channels.channel_has_user?(channels, "#testchannel", "testnick")
   end
 
   test "Can join multiple users to a channel" do
     channels = Channels.init() |> Channels.join("#testchannel") |> Channels.users_join("#testchannel", ["testnick", "anothernick"])
     assert Channels.channel_has_user?(channels, "#testchannel", "testnick")
     assert Channels.channel_has_user?(channels, "#testchannel", "anothernick")
   end
 
+  test "Strips rank designations from nicks" do
+    channels = Channels.init() |> Channels.join("#testchannel") |> Channels.users_join("#testchannel", ["+testnick", "@anothernick", "&athirdnick", "%somanynicks", "~onemorenick"])
+    assert Channels.channel_has_user?(channels, "#testchannel", "testnick")
+    assert Channels.channel_has_user?(channels, "#testchannel", "anothernick")
+    assert Channels.channel_has_user?(channels, "#testchannel", "athirdnick")
+    assert Channels.channel_has_user?(channels, "#testchannel", "somanynicks")
+    assert Channels.channel_has_user?(channels, "#testchannel", "onemorenick")
+  end
+
   test "Joining a users to a channel we aren't in is a noop" do
     channels = Channels.init() |> Channels.user_join("#testchannel", "testnick")
     assert {:error, :no_such_channel} == Channels.channel_has_user?(channels, "#testchannel", "testnick")
     channels = Channels.init() |> Channels.users_join("#testchannel", ["testnick", "anothernick"])
     assert {:error, :no_such_channel} == Channels.channel_has_user?(channels, "#testchannel", "testnick")
   end
 
   test "Can part a user from a channel" do
     channels = Channels.init() |> Channels.join("#testchannel") |> Channels.user_join("#testchannel", "testnick")
     assert Channels.channel_has_user?(channels, "#testchannel", "testnick")
     channels = channels |> Channels.user_part("#testchannel", "testnick")
     refute Channels.channel_has_user?(channels, "#testchannel", "testnick")
   end
 
   test "Parting a user from a channel we aren't in is a noop" do
     channels = Channels.init() |> Channels.user_part("#testchannel", "testnick")
     assert {:error, :no_such_channel} == Channels.channel_has_user?(channels, "#testchannel", "testnick")
   end
 
   test "Can rename a user" do
     channels = Channels.init() 
                 |> Channels.join("#testchannel") 
                 |> Channels.join("#anotherchan") 
                 |> Channels.user_join("#testchannel", "testnick")
                 |> Channels.user_join("#anotherchan", "testnick")
     assert Channels.channel_has_user?(channels, "#testchannel", "testnick")
     assert Channels.channel_has_user?(channels, "#anotherchan", "testnick")
     channels = Channels.user_rename(channels, "testnick", "newnick")
     refute Channels.channel_has_user?(channels, "#testchannel", "testnick")
     refute Channels.channel_has_user?(channels, "#anotherchan", "testnick")
     assert Channels.channel_has_user?(channels, "#testchannel", "newnick")
     assert Channels.channel_has_user?(channels, "#anotherchan", "newnick")
   end
 
   test "Renaming a user that doesn't exist is a noop" do
     channels = Channels.init() |> Channels.join("#testchannel") |> Channels.user_rename("testnick", "newnick")
     refute Channels.channel_has_user?(channels, "#testchannel", "testnick")
     refute Channels.channel_has_user?(channels, "#testchannel", "newnick")
   end
 
   test "Can get the current set of channel data as a tuple of the channel name and it's data as a proplist" do
     channels = Channels.init() 
             |> Channels.join("#testchannel") 
             |> Channels.set_type("#testchannel", "@")
             |> Channels.set_topic("#testchannel", "Welcome to Test!")
             |> Channels.join("#anotherchan") 
             |> Channels.set_type("#anotherchan", "=")
             |> Channels.set_topic("#anotherchan", "Welcome to Another Channel!")
             |> Channels.user_join("#testchannel", "testnick")
             |> Channels.user_join("#anotherchan", "testnick")
             |> Channels.to_proplist
     testchannel = {"#testchannel", [users: ["testnick"], topic: "Welcome to Test!", type: :secret]}
     anotherchan = {"#anotherchan", [users: ["testnick"], topic: "Welcome to Another Channel!", type: :public]}
     assert [testchannel, anotherchan] == channels
   end
-end
\ No newline at end of file
+end