async def add_code(ctx, group_name, code): """Add a code to a promo group.""" logging.info("Tentando adicionar o código %s ao grupo %s", code, group_name) if not validate_code(code): await ctx.send( "Código inválido: o código deve ser apenas letras, números e traços (-)" ) # noqa E501 return try: group = PromoCodeGroup.get((PromoCodeGroup.guild_id == ctx.guild.id) & (PromoCodeGroup.name == group_name)) PromoCode.create(group=group, code=code) await ctx.send( "Código {0} cadastrado no grupo {1} com sucesso!".format( code, group_name)) except PromoCodeGroup.DoesNotExist: # pylint: disable=no-member await ctx.send( "Grupo de códigos promocionais não encontrado: {}".format( group_name)) except IntegrityError: await ctx.send("Código {0} já cadastrado no grupo {1}".format( code, group_name))
def test_add_group(self): ctx = FakeContext() asyncio.run(add_group(ctx, group_name='foo')) self.assertTrue(ctx.send_called) self.assertEqual(ctx.send_parameters, "Grupo foo criado") group = PromoCodeGroup.get((PromoCodeGroup.guild_id == ctx.guild.id) & (PromoCodeGroup.name == 'foo')) self.assertEqual(group.guild_id, ctx.guild.id) self.assertEqual(group.name, 'foo') ctx = FakeContext() asyncio.run(add_group(ctx, group_name='foo')) self.assertTrue(ctx.send_called) self.assertEqual(ctx.send_parameters, "Grupo já existente") ctx = FakeContext(guild=FakeGuild2()) asyncio.run(add_group(ctx, group_name='foo')) self.assertTrue(ctx.send_called) self.assertEqual(ctx.send_parameters, "Grupo foo criado")