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

Renato Araújo: Desafio QA - Concrete Recife #68

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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.pyc
/__pycache__
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,17 @@ O processo de Pull Request funciona da seguinte maneira:

### **ATENÇÃO** ###
Não se deve tentar fazer o PUSH diretamente para ESTE repositório!!!

### **Executar Codigo** ###

### Installation:
- [Python](https://www.python.org/downloads/)

### Running:
No terminal vá até a pasta do projeto e execute o seguinte comando:
>python runTest.py

## Develop by:
Renato José
<[email protected]>
[Site](http://www.renato.pw/)
50 changes: 50 additions & 0 deletions checkout/checkout.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import unittest
from rules import prices
from copy import deepcopy

class Checkout():

def __init__(self):
self.copy_prices = deepcopy(prices)
self.total = 0

def scan(self,sku):
self.count(sku)
if self.has_discount(sku):
self.apply_discount(sku)
else:
self.total += self.copy_prices[sku]['price']

def has_discount(self,sku):
if(self.copy_prices[sku]['specialQtd'] != 0 and self.copy_prices[sku]['repeat'] % self.copy_prices[sku]['specialQtd'] == 0):
return True
else:
return False

def apply_discount(self, sku):
self.total += self.copy_prices[sku]['price']
self.total -= (self.copy_prices[sku]['repeat'] * self.copy_prices[sku]['price'])
self.total += self.copy_prices[sku]['specialPrice']
self.copy_prices[sku]['repeat'] = 0

def count(self, sku):
if self.copy_prices[sku]['repeat'] == 0:
self.copy_prices[sku]['repeat'] = 1
elif(self.copy_prices[sku]['repeat'] == 0 and self.copy_prices[sku]['specialPrice'] == 0):
self.copy_prices[sku]['repeat'] = 0
else:
self.copy_prices[sku]['repeat'] += 1

def scanSKU(self,skus):
self.total = 0
self.copy_prices = deepcopy(prices)
for sku in skus:
self.scan(sku.upper())
print(self.total)
return self.total

def scanUnit(self,skus):
for sku in skus:
self.scan(sku.upper())
return self.total

7 changes: 7 additions & 0 deletions rules.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
prices = {
'A' : {'price': 50, 'specialQtd': 3, 'specialPrice': 130, 'repeat' : 0 } ,
'B' : {'price': 30, 'specialQtd': 2, 'specialPrice': 45, 'repeat' : 0 },
'C' : {'price': 20, 'specialQtd': 0, 'specialPrice': 0, 'repeat' : 0 },
'D' : {'price': 15, 'specialQtd': 0, 'specialPrice': 0, 'repeat' : 0 },
'' : {'price': 0, 'specialQtd': 0, 'specialPrice': 0, 'repeat' : 0 }
}
5 changes: 5 additions & 0 deletions runTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import unittest
from tests.test import *

if __name__ == '__main__':
unittest.main()
30 changes: 30 additions & 0 deletions tests/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import unittest
from checkout.checkout import Checkout
from rules import prices

class CheckCartMethods(unittest.TestCase):
def setUp(self):
self.c = Checkout()

def test_incremental(self):
self.assertEqual(self.c.scanUnit(''), 0 )
self.assertEqual(self.c.scanUnit('A'), 50)
self.assertEqual(self.c.scanUnit('B'), 80)
self.assertEqual(self.c.scanUnit('A'), 130)
self.assertEqual(self.c.scanUnit('A'), 160)
self.assertEqual(self.c.scanUnit('B'), 175)

def test_totals(self):
self.assertEqual(self.c.scanSKU(''), 0 )
self.assertEqual(self.c.scanSKU('A'), 50)
self.assertEqual(self.c.scanSKU('AB'), 80)
self.assertEqual(self.c.scanSKU('CDBA'), 115)
self.assertEqual(self.c.scanSKU('AA'), 100)
self.assertEqual(self.c.scanSKU('AAA'), 130)
self.assertEqual(self.c.scanSKU('AAAA'), 180)
self.assertEqual(self.c.scanSKU('AAAAA'), 230)
self.assertEqual(self.c.scanSKU('AAAAAA'), 260)
self.assertEqual(self.c.scanSKU('AAAB'), 160)
self.assertEqual(self.c.scanSKU('AAABB'), 175)
self.assertEqual(self.c.scanSKU('AAABBD'), 190)
self.assertEqual(self.c.scanSKU('DABABA'), 190)
34 changes: 34 additions & 0 deletions whatsapp/findText.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
@runFindTextFeature
Feature: Find previously messages
@critical
Scenario Outline: User search text successfully
Given I open Whatsapp Application
Then I'm on the chat screen
When I type on geral search textfield: <message>
Then chat will be filtered
When I click on the first result
Then I am on <friendName> private chat
And I assert all contains: <message> are on highlight

Examples:
| friendName | message |
| Renato Araújo | Job Apply |
| Juliana Freitas | Morning Juliaan! |
| Jhon Due Interviewer | celerisque |
| Grupo pao de alho | Grupo pao de alho|

@critical
Scenario Outline: User search for no content text
Given I open Whatsapp Application
Then I'm on the chat screen
When I type on geral search textfield: <message>
Then chat will be filtered
And no results message are displayed

Examples:
| message |
| cuytruytdryutdrtrytdsrsxzedrartg@#@!! |
| :) follow my message with emoji to make your day even better |
| 01000011 01101111 01101110 01100011 01110010 01100101 01110100 01110010 01100101 |


81 changes: 81 additions & 0 deletions whatsapp/sendMessage.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
@runSendWhatsFeature
Feature: User status messages
@critical
Scenario Outline: User send a message successfully
Given I open Whatsapp Application
Then I'm on the chat screen
When I click on Write Message icon
Then New chat modal was open successful
When I type on search textfield: <friendName>
Then Users will be filtered and User
When I click on the first result
Then I am on <friendName> private chat
When I type on message textfield: <message>
Then send message button was displayed
When I click on send message button
Then The message was displayed on the internal screen
Then The first checkmark was displayed

Examples:
| friendName | message |
| Renato Araújo | Hi There!\n I'm sending you this message to testing the send message feature |
| Juliana Freitas | :) follow my message with emoji to make your day even better |
| Jhon Due Interviewer | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis massa leo, pretium non condimentum a, consequat et dui. Cras quis elit dignissim, fermentum ex non, convallis metus. Fusce facilisis pellentesque hendrerit. Fusce vitae scelerisque lacus, nec ultricies dolor. Sed tincidunt sagittis tempor. Donec posuere lacus vel semper iaculis. Praesent vel bibendum turpis. Aenean ultrices pulvinar interdum. Praesent scelerisque ipsum lacus, id iaculis enim efficitur vestibulum. Maecenas ac leo a tellus tincidunt tincidunt. Donec sodales ornare urna, sit amet porta nulla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed eget libero tincidunt, imperdiet velit id, elementum nunc. Aliquam non tempus libero, vel porttitor mauris. Donec posuere nisi vitae lectus posuere, nec elementum ligula faucibus. Mauris dolor purus, blandit sit amet dapibus commodo, dictum nec mauris. Curabitur nec ante pretium, aliquam urna ut, pharetra sem. Maecenas ipsum tellus, sodales a neque id, euismod posuere tortor. Aenean porta risus quis turpis porta faucibus eget ultricies lectus. Cras porttitor eros non maximus euismod. Pellentesque non dui leo. Proin et tempor risus. Vestibulum sit amet porta odio. Curabitur sed lacus enim. Phasellus vehicula vestibulum justo quis auctor. Cras vitae finibus arcu. Aenean tempus malesuada tortor, a rhoncus risus sodales nec. Sed dapibus eleifend massa. Praesent volutpat pellentesque arcu in facilisis. \nEtiam nibh sapien, dignissim a erat id, efficitur pulvinar nunc. Suspendisse euismod ut tortor bibendum congue. Nulla erat orci, sodales ac dolor id, imperdiet viverra nisi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam eleifend sapien neque. Curabitur vitae pharetra nibh, tempor viverra diam. Pellentesque venenatis magna nisl, id placerat ligula vehicula nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam eget malesuada leo. Nunc placerat orci neque, at dignissim diam venenatis vitae. Donec lobortis eu mi at mattis. Vestibulum molestie tellus a enim dapibus varius. Maecenas vitae augue augue.\n Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis ante enim, gravida consequat dolor ut, sodales volutpat sapien. Maecenas felis erat, laoreet euismod tempor a, tempor et libero. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Suspendisse eget felis erat. Integer pharetra pharetra elit tempus posuere. Phasellus consectetur at erat accumsan blandit. Etiam sed lacus libero. Sed hendrerit finibus hendrerit. Phasellus consectetur tempor quam eget semper. Cras congue molestie dui, id facilisis tortor sollicitudin a. |

@critical
Scenario Outline: User delete for all a message
Given I open Whatsapp Application
Then I'm on the chat screen
When I click on Write Message icon
Then New chat modal was open successful
When I type on search textfield: <friendName>
Then Users will be filtered and User
When I click on the first result
Then I am on <friendName> private chat
When I type on message textfield: <message>
Then send message button was displayed
When I click on send message button
Then The message was displayed on the internal screen
Then The first checkmark was displayed
When I perform a long press on message: <message>
Then The message dropdown is displayed
When I click on Erase button
Then The message: <message> are selected
And The erase button is displayed
When I click on erase button
Then I choose to erase for all
Then The first checkmark is not displayed
And The send message now is replace

Examples:
| friendName | message |
| Renato Araújo | Hi There!\n I'm sending you this message to testing the send message feature |
| Juliana Freitas | :) follow my message with emoji to make your day even better |
| Jhon Due Interviewer | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis massa leo, pretium non condimentum a, consequat et dui. Cras quis elit dignissim, fermentum ex non, convallis metus. Fusce facilisis pellentesque hendrerit. Fusce vitae scelerisque lacus, nec ultricies dolor. Sed tincidunt sagittis tempor. Donec posuere lacus vel semper iaculis. Praesent vel bibendum turpis. Aenean ultrices pulvinar interdum. Praesent scelerisque ipsum lacus, id iaculis enim efficitur vestibulum. Maecenas ac leo a tellus tincidunt tincidunt. Donec sodales ornare urna, sit amet porta nulla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed eget libero tincidunt, imperdiet velit id, elementum nunc. Aliquam non tempus libero, vel porttitor mauris. Donec posuere nisi vitae lectus posuere, nec elementum ligula faucibus. Mauris dolor purus, blandit sit amet dapibus commodo, dictum nec mauris. Curabitur nec ante pretium, aliquam urna ut, pharetra sem. Maecenas ipsum tellus, sodales a neque id, euismod posuere tortor. Aenean porta risus quis turpis porta faucibus eget ultricies lectus. Cras porttitor eros non maximus euismod. Pellentesque non dui leo. Proin et tempor risus. Vestibulum sit amet porta odio. Curabitur sed lacus enim. Phasellus vehicula vestibulum justo quis auctor. Cras vitae finibus arcu. Aenean tempus malesuada tortor, a rhoncus risus sodales nec. Sed dapibus eleifend massa. Praesent volutpat pellentesque arcu in facilisis. \nEtiam nibh sapien, dignissim a erat id, efficitur pulvinar nunc. Suspendisse euismod ut tortor bibendum congue. Nulla erat orci, sodales ac dolor id, imperdiet viverra nisi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam eleifend sapien neque. Curabitur vitae pharetra nibh, tempor viverra diam. Pellentesque venenatis magna nisl, id placerat ligula vehicula nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam eget malesuada leo. Nunc placerat orci neque, at dignissim diam venenatis vitae. Donec lobortis eu mi at mattis. Vestibulum molestie tellus a enim dapibus varius. Maecenas vitae augue augue.\n Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis ante enim, gravida consequat dolor ut, sodales volutpat sapien. Maecenas felis erat, laoreet euismod tempor a, tempor et libero. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Suspendisse eget felis erat. Integer pharetra pharetra elit tempus posuere. Phasellus consectetur at erat accumsan blandit. Etiam sed lacus libero. Sed hendrerit finibus hendrerit. Phasellus consectetur tempor quam eget semper. Cras congue molestie dui, id facilisis tortor sollicitudin a. | |
| Myself | This test will fail |

@critical
Scenario Outline: User send a message with internet thoubles
Given I open Whatsapp Application
Then I'm on the chat screen
When I click on Write Message icon
Then New chat modal was open successful
When I type on search textfield: <friendName>
Then Users will be filtered and User
When I click on first result
Then I am on <friendName> private chat
When I type on message textfield: <message>
Then send message button was displayed
When I click on send message button
And Intenet troubles are detected
Then The message was displayed on the internal screen
And The clockmark is was displayed
When Connections are stabilized
Then The first checkmark was displayed

Examples:
| friendName | message |
| Renato Araújo | Hi There!\n I'm sending you this message to testing the send message feature |
| Juliana Freitas | :) follow my message with emoji to make your day even better |
| Jhon Due Interviewer | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis massa leo, pretium non condimentum a, consequat et dui. Cras quis elit dignissim, fermentum ex non, convallis metus. Fusce facilisis pellentesque hendrerit. Fusce vitae scelerisque lacus, nec ultricies dolor. Sed tincidunt sagittis tempor. Donec posuere lacus vel semper iaculis. Praesent vel bibendum turpis. Aenean ultrices pulvinar interdum. Praesent scelerisque ipsum lacus, id iaculis enim efficitur vestibulum. Maecenas ac leo a tellus tincidunt tincidunt. Donec sodales ornare urna, sit amet porta nulla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed eget libero tincidunt, imperdiet velit id, elementum nunc. Aliquam non tempus libero, vel porttitor mauris. Donec posuere nisi vitae lectus posuere, nec elementum ligula faucibus. Mauris dolor purus, blandit sit amet dapibus commodo, dictum nec mauris. Curabitur nec ante pretium, aliquam urna ut, pharetra sem. Maecenas ipsum tellus, sodales a neque id, euismod posuere tortor. Aenean porta risus quis turpis porta faucibus eget ultricies lectus. Cras porttitor eros non maximus euismod. Pellentesque non dui leo. Proin et tempor risus. Vestibulum sit amet porta odio. Curabitur sed lacus enim. Phasellus vehicula vestibulum justo quis auctor. Cras vitae finibus arcu. Aenean tempus malesuada tortor, a rhoncus risus sodales nec. Sed dapibus eleifend massa. Praesent volutpat pellentesque arcu in facilisis. \nEtiam nibh sapien, dignissim a erat id, efficitur pulvinar nunc. Suspendisse euismod ut tortor bibendum congue. Nulla erat orci, sodales ac dolor id, imperdiet viverra nisi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam eleifend sapien neque. Curabitur vitae pharetra nibh, tempor viverra diam. Pellentesque venenatis magna nisl, id placerat ligula vehicula nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam eget malesuada leo. Nunc placerat orci neque, at dignissim diam venenatis vitae. Donec lobortis eu mi at mattis. Vestibulum molestie tellus a enim dapibus varius. Maecenas vitae augue augue.\n Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis ante enim, gravida consequat dolor ut, sodales volutpat sapien. Maecenas felis erat, laoreet euismod tempor a, tempor et libero. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Suspendisse eget felis erat. Integer pharetra pharetra elit tempus posuere. Phasellus consectetur at erat accumsan blandit. Etiam sed lacus libero. Sed hendrerit finibus hendrerit. Phasellus consectetur tempor quam eget semper. Cras congue molestie dui, id facilisis tortor sollicitudin a. |
| Mysealf | This test will fail