def test_multiple(self): formats = [ 'Hello @{0} @{1}', '@{0}@{1}', '@{0}@{0}@{1}', ] for frmt in formats: message = Message(user=self.users[0], text=frmt.format(self.users[0].get_username(), self.users[1].get_username())) self.assertListEqual(message.parse_anchors(), [self.users[0], self.users[1]], msg='format: %s' % frmt)
def test_invalid(self): anchored = self.users[:2] formats = [ '@{0}abcdefghijklmnopqrstuvwxyz', # ... and expect this is not a valid username '@ {0}', ] for frmt in formats: message = Message(user=self.users[0], text=frmt.format(anchored[0].get_username(), anchored[1].get_username())) self.assertListEqual(message.parse_anchors(), [], msg='format: %s' % frmt)
def test_single(self): anchored = self.users[1] formats = [ 'Hello @{}!', 'Hello@{}!', '@{}', '@@{}', '@{}@', ] for frmt in formats: message = Message(user=self.users[0], text=frmt.format(anchored.get_username())) self.assertListEqual(message.parse_anchors(), [anchored], msg='format: %s' % frmt)
def new_message(message_body): message = Message(author=current_user._get_current_object(), body=message_body) db.session.add(message) db.session.commit() emit('new message', { 'message_html': render_template('chat/_message.html', message=message) }, broadcast=True)
def test_message_selection(self): # Create new message from another author other_message = Message(user=self.users[1], text='Another message') other_message.save() message = Message(user=self.author, text='s/nothing/todo') modified = message.substitute() self.assertEqual(modified.user, self.author) self.assertEqual(modified.text, 'Hello World!') # Remove the other message other_message.delete()
def forge(message): """Generate fake data.""" import random from sqlalchemy.exc import IntegrityError from faker import Faker fake = Faker() click.echo('Initializing the database...') db.drop_all() db.create_all() click.echo('Forging the data...') admin = User(nickname='Tartaurs', email='*****@*****.**') admin.set_password('tartarus') db.session.add(admin) db.session.commit() click.echo('Generating users...') for i in range(50): user = User(nickname=fake.name(), bio=fake.sentence(), github=fake.url(), email=fake.email()) db.session.add(user) try: db.session.commit() except IntegrityError: db.session.rollback() click.echo('Generating messages...') for i in range(message): message = Message( author=User.query.get(random.randint(1, User.query.count())), body=fake.sentence(), timestamp=fake.date_time_between('-30d', '-2d'), ) db.session.add(message) db.session.commit() click.echo('Done.')
def test_valid_substitution(self): message = Message(user=self.author, text='s/World!/Universe!?') self.assertEqual(message.substitute().text, 'Hello Universe!?')
def test_no_message(self): message = Message(user=self.users[1], text='s/nothing/todo') self.assertIsNone(message.substitute())
def test_no_match(self): message = Message(user=self.author, text='s/bye/nothing') self.assertEqual(message.substitute().text, 'Hello World!')
def test_empty_match(self): message = Message(user=self.author, text='s//o') self.assertIsNone(message.substitute())
def test_empty_pattern(self): message = Message(user=self.author, text='s/o/') self.assertEqual(message.substitute().text, 'Hell World!')
def test_valid_multiple_substitutions(self): message = Message(user=self.author, text='s/o/p') self.assertEqual(message.substitute().text, 'Hellp World!')