feat(jogos): telão com contagem regressiva, jogadas lado a lado e resultado
- comando "telao" (validado: texto curto, tom, símbolos permitidos, até 2 lados) e letreiro por cima do rosto: título enorme que estoura e pisca, as duas jogadas (VOCÊ ✊ × ✋ CARINHA), cor por resultado; - pedra, papel e tesoura: 3, 2, 1 piscando, "JÁ!", o que ele leu da sua mão, "VENCI!!!" / "VOCÊ GANHOU!" / "EMPATE!" com placar e o campeão; quantos dedos e achou! também usam o telão; - o cartão do painel mostra o mesmo destaque. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -93,6 +93,18 @@ class ServidorTest(unittest.TestCase):
|
||||
self.assertEqual(codigo, 200)
|
||||
self.assertIn('dizer Já!', kiosk.FILA.ordens())
|
||||
|
||||
def test_telao_dos_jogos(self):
|
||||
ordem = kiosk.ordem_de_comando('telao', {'titulo': 'VENCI!!!', 'tom': 'eu', 'sub': 'Você 0 × 1 Carinha', 'segundos': 3,
|
||||
'lados': [{'rotulo': 'Você', 'simbolo': '✊', 'nome': 'pedra'},
|
||||
{'rotulo': 'Carinha', 'simbolo': '✋', 'nome': 'papel'}]})
|
||||
self.assertTrue(ordem.startswith('telao {'))
|
||||
t = json.loads(ordem[6:])
|
||||
self.assertEqual((t['titulo'], t['tom'], len(t['lados'])), ('VENCI!!!', 'eu', 2))
|
||||
self.assertEqual(json.loads(kiosk.ordem_de_comando('telao', {'titulo': 'x' * 99, 'tom': 'roxo'})[6:])['tom'], 'neutro')
|
||||
for ruim in ({}, {'titulo': 'a', 'lados': [{'simbolo': '<img>'}]}, {'titulo': 'a', 'lados': [{}, {}, {}]}, 'texto'):
|
||||
with self.assertRaises(ValueError):
|
||||
kiosk.ordem_de_comando('telao', ruim)
|
||||
|
||||
def test_pagina_do_rosto_sempre_conferida_e_api_sem_cache(self):
|
||||
# o WebView do celular não pode seguir com uma carinha.html velha depois de um deploy
|
||||
for rota, esperado in (('/carinha.html', 'no-cache'), ('/gestos', 'no-store')):
|
||||
|
||||
Reference in New Issue
Block a user