Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desafio QA - Nicolas Yoshioka #67

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@

### **PARA RODAR OS TESTES:** ###
Acessar o repositório do projeto via terminal e digitar o seguinte comando:

- $ python3 -m unittest checkout.py

Pré condição: Necessário ter o python3 instalado na máquina.

# Objetivo do Desafio

Verificar suas habilidades em conceber cenários de testes e em programação, necessárias para automatização dos testes.
Expand Down
105 changes: 105 additions & 0 deletions checkout.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import unittest

regras = {}
regras['A'] = {'preco': 50, 'desconto': {3: 130}}
regras['B'] = {'preco': 30, 'desconto': {2: 45}}
regras['C'] = {'preco': 20}
regras['D'] = {'preco': 15}

class Checkout():

def __init__(self, regras_de_precos):
self.regras_de_precos = regras_de_precos
self.total = 0
self.itens_sem_desconto={}
self.itens_com_desconto={}

@staticmethod
def carrinho(regras_de_precos):
return Checkout(regras_de_precos)

def adicionar_ao_carrinho(self,item):
self.adiciona_item_sem_desconto(item)

if item in self.regras_de_precos:
regra_item = self.regras_de_precos[item]

if self.validar_desconto(item):
self.aplicar_desconto(item)
else:
self.total += regra_item['preco']

def validar_desconto(self, item):
regra_item = self.regras_de_precos[item]
if 'desconto' in regra_item:
if self.itens_sem_desconto[item] in regra_item['desconto']:
return True

return False

def aplicar_desconto(self, item):
regra_item = self.regras_de_precos[item]
desconto = regra_item['desconto']
numero_de_itens = self.itens_sem_desconto[item]

self.itens_sem_desconto[item] -= numero_de_itens
self.itens_com_desconto[item] += numero_de_itens
self.total -= regra_item['preco'] * (numero_de_itens - 1)
self.total += desconto[numero_de_itens]

def adiciona_item_sem_desconto(self, item):
if item in self.itens_sem_desconto:
self.itens_sem_desconto[item] += 1
else:
self.itens_sem_desconto[item] = 1

if item not in self.itens_com_desconto:
self.itens_com_desconto[item] = 0

class TestCheckout(unittest.TestCase):

def validar_preco_total(self, itens, total):
c = Checkout.carrinho(regras)
for item in itens:
c.adicionar_ao_carrinho(item)
self.assertEqual(total, c.total)

def teste_total_itens(self):
self.validar_preco_total('', 0)
self.validar_preco_total('A', 50)
self.validar_preco_total('AB', 80)
self.validar_preco_total('CDBA', 115)

self.validar_preco_total('AA', 100)
self.validar_preco_total('AAA', 130)
self.validar_preco_total('AAAA', 180)
self.validar_preco_total('AAAAA', 230)
self.validar_preco_total('AAAAAA', 260)
self.validar_preco_total('AAAAAAA', 310)
self.validar_preco_total('AAAAAAAA', 360)
self.validar_preco_total('AAAAAAAAA', 390)
self.validar_preco_total('AAAAAAAAAA', 440)
self.validar_preco_total('AAAAAAAAAAA', 490)
self.validar_preco_total('AAAAAAAAAAAA', 520)

self.validar_preco_total('AAAB', 160)
self.validar_preco_total('AAABB', 175)
self.validar_preco_total('AAABBD', 190)
self.validar_preco_total('DABABA', 190)

def teste_um_a_um(self):
c = Checkout.carrinho(regras)
self.assertEqual(0, c.total)
c.adicionar_ao_carrinho('A')
self.assertEqual(50, c.total)
c.adicionar_ao_carrinho('B')
self.assertEqual(80, c.total)
c.adicionar_ao_carrinho('A')
self.assertEqual(130, c.total)
c.adicionar_ao_carrinho('A')
self.assertEqual(160, c.total)
c.adicionar_ao_carrinho('B')
self.assertEqual(175, c.total)

if __name__ == '__main__':
unittest.main()
34 changes: 34 additions & 0 deletions features/gherkins/wpp_web/configuracoes.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# language:pt

Funcionalidade: Whatsapp Web - Validar alterações de configuração no menu
Eu como um usuário final do whatsapp web
Quero poder chegar no menu de configurações
Para que seja possível realizar alterações de tema e notificações

Contexto:
Dado que estou logado no whatsapp web
E seleciono "Configurações" em "Mais opções"

@alterar_tema
Esquema do Cenário: Validar alteração de tema no menu de configuração
E clico em "Tema"
Quando seleciono o tema <tema>
Então valido que a configuração de tema foi alterada para o tema <tema>

Exemplos:
| tema |
| escuro |
| claro |

@desativar_notificoes_e_sons
Esquema do Cenário: Validar alteração de desativar notificações e sons por determinado período de tempo
E clico em "Notificações"
Quando seleciono desativar notificações e sons por <periodo>
Então valido que a configuração de notificações e sons foi alterada para o periodo de <periodo>

Exemplos:
| periodo |
| 1 hora |
| 1 dia |
| 1 semana |
| nunca |
21 changes: 21 additions & 0 deletions features/gherkins/wpp_web/perfil.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# language:pt

Funcionalidade: Whatsapp Web - Validar alterações no perfil
Eu como um usuário final do whatsapp web
Quero poder acessar o meu perfil
Para que seja possível realizar alterações no meu nome e na foto

Contexto:
Dado que estou logado no whatsapp web
E seleciono "Perfil" em "Mais opções"

@alterar_foto_perfil
Esquema do Cenário: Validar alteração da foto de perfil
E clico em "Carregar foto" em "MUDAR FOTO DE PERFIL"
Quando seleciono a minha foto de perfil
Então valido que a minha foto de perfil foi alterada

@alterar_nome_perfil
Esquema do Cenário: Validar alteração do nome no perfil
Quando altero meu nome após clicar em "Editar"
Então valido que o meu nome de perfil foi alterado