diff --git a/src/bitmessagekivy/tests/test_sent_message.py b/src/bitmessagekivy/tests/test_sent_message.py new file mode 100644 index 00000000..a6c99d75 --- /dev/null +++ b/src/bitmessagekivy/tests/test_sent_message.py @@ -0,0 +1,120 @@ +from .telenium_process import TeleniumTestProcess +from .common import skip_screen_checks +from .common import ordered + +test_address = {'receiver': 'BM-2cWmjntZ47WKEUtocrdvs19y5CivpKoi1h'} + + +class SendMessage(TeleniumTestProcess): + """Sent Screen Functionality Testing""" + test_subject = 'Test Subject' + test_body = 'Hello, \n Hope your are doing good.\n\t This is test message body' + + @skip_screen_checks + @ordered + def test_validate_empty_form(self): + """ + Sending Message From Inbox Screen + opens a pop-up(screen) which send message from sender to reciever + """ + # Checking current Screen(Login screen) + self.assert_wait_no_except('//ScreenManager[@current]', timeout=10, value='login') + # Click on Composer Icon(Plus icon) + self.cli.wait_click('//ComposerButton[0]/MDFloatingActionButton[@icon=\"plus\"]', timeout=2) + # Checking Message Composer Screen(Create) + self.assertExists("//ScreenManager[@current=\"create\"]", timeout=4) + # Checking State of Sender's Address Input Field (should be Empty) + self.assertExists('//DropDownWidget/ScrollView[0]//MDTextField[@text=\"\"]', timeout=3) + # Checking State of Receiver's Address Input Field (should be Empty) + self.assertExists('//DropDownWidget/ScrollView[0]//MyTextInput[@text=\"\"]', timeout=2) + # Checking State of Subject Input Field (shoudl be Empty) + self.assertExists('//DropDownWidget/ScrollView[0]//MyMDTextField[@text=\"\"]', timeout=2) + # Click on Send Icon to check validation working + self.cli.wait_click('//MDActionTopAppBarButton[@icon=\"send\"]', timeout=2) + # Checking validation Pop up is Opened + self.assertExists('//MDDialog[@text=\"Please fill the form completely\"]', timeout=2) + # Click to dismiss the Popup + self.cli.wait_click('//MDActionTopAppBarButton[@icon=\"send\"]', timeout=2) + # Checking current screen after dialog dismiss + self.assertExists("//ScreenManager[@current=\"create\"]", timeout=10) + + @skip_screen_checks + @ordered + def test_validate_half_filled_form(self): + """ + Validate the half filled form and press back button to save message in draft box. + """ + # Checking current screen + self.assertExists("//ScreenManager[@current=\"create\"]", timeout=2) + # ADD SENDER'S ADDRESS + # Checking State of Sender's Address Input Field (Empty) + self.assertExists('//DropDownWidget/ScrollView[0]//MDTextField[@text=\"\"]', timeout=2) + # Assert to check Sender's address dropdown closed + is_open = self.cli.getattr('//Create//CustomSpinner[@is_open]', 'is_open') + self.assertEqual(is_open, False) + # Open Sender's Address DropDown + self.cli.wait_click('//Create//CustomSpinner[0]/ArrowImg[0]', timeout=5) + # Checking the Address Dropdown is in open State + is_open = self.cli.getattr('//Create//CustomSpinner[@is_open]', 'is_open') + # Select Sender's Address from Dropdown + self.cli.wait_click('//ComposerSpinnerOption[0]', timeout=3) + # Assert to check Sender's address dropdown closed + is_open = self.cli.getattr('//Create//CustomSpinner[@is_open]', 'is_open') + self.assertEqual(is_open, False) + # Assert check for empty Subject Field + self.assertNotEqual('//DropDownWidget/ScrollView[0]//MDTextField[0]', '') + # ADD SUBJECT + self.cli.setattr('//DropDownWidget/ScrollView[0]//MyMDTextField[0]', 'text', self.test_subject) + # Checking Subject Field is Entered + self.assertNotEqual('//DropDownWidget/ScrollView[0]//MyMDTextField[text]', '') + # Checking BODY Field(EMPTY) + self.assertExists('//DropDownWidget/ScrollView[0]//ScrollView[0]/MDTextField[@text=\"\"]', timeout=2) + # ADD BODY + self.cli.setattr( + '//DropDownWidget/ScrollView[0]/BoxLayout[0]/ScrollView[0]/MDTextField[0]', 'text', self.test_body) + # Checking BODY is Entered + self.assertNotEqual('//DropDownWidget/ScrollView[0]/BoxLayout[0]/ScrollView[0]/MDTextField[text]', '') + # click on send icon + self.cli.wait_click('//MDActionTopAppBarButton[@icon=\"send\"]', timeout=2) + # Checking validation Pop up is Opened + self.assertExists('//MDDialog[@text=\"Please fill the form completely\"]', timeout=2) + # clicked on 'ok' button to close popup + self.cli.wait_click('//MDFlatButton[0]', timeout=2) + # self.cli.wait_click('//MDActionTopAppBarButton[@icon=\"send\"]', timeout=2) + self.assertExists("//ScreenManager[@current=\"create\"]", timeout=5) + + @skip_screen_checks + @ordered + def test_sending_msg_fully_filled_form(self): + """ + Sending message when all fields are filled + """ + # ADD RECEIVER ADDRESS + # Checking Receiver Address Field + self.assertExists('//DropDownWidget/ScrollView[0]//MyTextInput[@text=\"\"]', timeout=2) + # Entering Receiver Address + self.cli.setattr('//DropDownWidget/ScrollView[0]//MyTextInput[0]', "text", test_address['receiver']) + # Checking Receiver Address filled or not + self.assertNotEqual('//DropDownWidget/ScrollView[0]//MyTextInput[text]', '') + # Clicking on send icon + self.cli.wait_click('//MDActionTopAppBarButton[@icon=\"send\"]', timeout=5) + # Checking the current screen + self.assertExists("//ScreenManager[@current=\"inbox\"]", timeout=10) + + @skip_screen_checks + @ordered + def test_sent_box(self): + """ + Checking Message in Sent Screen after sending a Message. + """ + # this is for opening Nav drawer + self.cli.wait_click('//MDActionTopAppBarButton[@icon=\"menu\"]', timeout=5) + # checking state of Nav drawer + self.assertExists("//MDNavigationDrawer[@state~=\"open\"]", timeout=5) + # Clicking on Sent Tab + self.cli.wait_click('//NavigationItem[@text=\"Sent\"]', timeout=5) + # Checking current screen; Sent + self.assertExists("//ScreenManager[@current=\"sent\"]", timeout=5) + # Checking number of Sent messages + total_sent_msgs = len(self.cli.select("//SwipeToDeleteItem")) + self.assertEqual(total_sent_msgs, 3)