def test_hearTellsClient(self): """ When 'hear' is called on a ChatterElement, it should inform its client of what was said and by whom. """ from chatthing.chatterbox import ChatRoom cb = ChatRoom().makeChatter() heard = [] cb.callRemote = lambda method, who, what: heard.append((method, who, what)) cb.hear(u'Hello', u'Chat') self.assertEquals(heard, [('displayUserMessage', u'Hello', u'Chat')])
def test_wallTellsClient(self): """ When 'wall' is called on a ChatterElement, it should inform its client of the message. """ from chatthing.chatterbox import ChatRoom cb = ChatRoom().makeChatter() heard = [] cb.callRemote = lambda method, msg: heard.append((method, msg)) cb.wall(u'Message for everyone...') self.assertEquals(heard, [('displayMessage', u'Message for everyone...')])
def test_username(self): """ When a user sets their username in the chat room, it should set an attribute on their ChatterElement instance. """ from chatthing.chatterbox import ChatterElement, ChatRoom cb = ChatterElement(ChatRoom()) setUsername = expose.get(cb, 'setUsername') setUsername('jethro') self.assertIdentical('jethro', cb.username)
def test_loginThenWall(self): """ When a user logs in the 'wall' method on their ChatterElement gets called, notifiying everyone in the room that they have entered. """ from chatthing.chatterbox import ChatRoom jethroHeard = [] cletusHeard = [] cr = ChatRoom() user1 = cr.makeChatter() user1.wall = lambda msg: jethroHeard.append(msg) user1.setUsername(u'jethro') user2 = cr.makeChatter() user2.wall = lambda msg: cletusHeard.append(msg) user2.setUsername(u'cletus') self.assertEquals(jethroHeard, [u' * user jethro has joined the room', u' * user cletus has joined the room']) self.assertEquals(cletusHeard, [u' * user cletus has joined the room'])
def test_sayThenHear(self): """ When a user calls the 'say' method on their ChatterElement, everyone (including them) should 'hear' it. """ from chatthing.chatterbox import ChatRoom cr = ChatRoom() user1 = cr.makeChatter() user1.wall = lambda msg: msg user1.setUsername('jethro') user2 = cr.makeChatter() user2.wall = lambda msg: msg user2.setUsername('cletus') jethroHeard = [] cletusHeard = [] user1.hear = lambda who, what: jethroHeard.append((who, what)) user2.hear = lambda who, what: cletusHeard.append((who, what)) say = expose.get(user1, 'say') say('Hey, Cletus!') self.assertEqual(jethroHeard, cletusHeard) self.assertEqual(cletusHeard, [('jethro', 'Hey, Cletus!')])
def test_sayThenHear(self): """ When a user calls the 'say' method on their ChatterElement, everyone (including them) should 'hear' it. """ from chatthing.chatterbox import ChatRoom cr = ChatRoom() user1 = cr.makeChatter() user1.wall = lambda msg: msg user1.setUsername(u'jethro') user2 = cr.makeChatter() user2.wall = lambda msg: msg user2.setUsername(u'cletus') jethroHeard = [] cletusHeard = [] user1.hear = lambda who, what: jethroHeard.append((who,what)) user2.hear = lambda who, what: cletusHeard.append((who,what)) say = expose.get(user1, 'say') say(u'Hey, Cletus!') self.assertEquals(jethroHeard, cletusHeard) self.assertEquals(cletusHeard, [(u'jethro', u'Hey, Cletus!')])
def test_basicRendering(self): """ Rendering the example element should produce a chat area. """ from chatthing.chatterbox import ChatterElement, ChatRoom PROMPT = 'Choose your username: '******'s look for it to # make sure it rendered live: self.assertIn('id="athena:'+str(cb._athenaID)+'"', result) self.assertIn('athena:class="ChatThing.ChatterWidget"', result) self.assertIn(PROMPT, result) return renderLivePage(erlp).addCallback(checkContent)