diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6af8a75 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +/__pycache__ \ No newline at end of file diff --git a/README.md b/README.md index 2cf0614..84a6f6a 100644 --- a/README.md +++ b/README.md @@ -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é + +[Site](http://www.renato.pw/) \ No newline at end of file diff --git a/checkout/checkout.py b/checkout/checkout.py new file mode 100644 index 0000000..57899b1 --- /dev/null +++ b/checkout/checkout.py @@ -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 + \ No newline at end of file diff --git a/rules.py b/rules.py new file mode 100644 index 0000000..d4fd30b --- /dev/null +++ b/rules.py @@ -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 } +} \ No newline at end of file diff --git a/runTest.py b/runTest.py new file mode 100644 index 0000000..365e198 --- /dev/null +++ b/runTest.py @@ -0,0 +1,5 @@ +import unittest +from tests.test import * + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/test.py b/tests/test.py new file mode 100644 index 0000000..69e00a7 --- /dev/null +++ b/tests/test.py @@ -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) diff --git a/whatsapp/findText.feature b/whatsapp/findText.feature new file mode 100644 index 0000000..88a8194 --- /dev/null +++ b/whatsapp/findText.feature @@ -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: + Then chat will be filtered + When I click on the first result + Then I am on private chat + And I assert all contains: 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: + 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 | + + diff --git a/whatsapp/sendMessage.feature b/whatsapp/sendMessage.feature new file mode 100644 index 0000000..637d0aa --- /dev/null +++ b/whatsapp/sendMessage.feature @@ -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: + Then Users will be filtered and User + When I click on the first result + Then I am on private chat + When I type on message textfield: + 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: + Then Users will be filtered and User + When I click on the first result + Then I am on private chat + When I type on message textfield: + 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: + Then The message dropdown is displayed + When I click on Erase button + Then The 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: + Then Users will be filtered and User + When I click on first result + Then I am on private chat + When I type on message textfield: + 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 \ No newline at end of file