jardin/test_jardin.py

89 lines
3.3 KiB
Python
Raw Normal View History

2023-10-19 11:11:51 +00:00
#!/usr/bin/python3
2023-10-19 10:42:14 +00:00
import unittest
2023-10-20 11:25:19 +00:00
from unittest.mock import patch, call
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
2023-10-19 10:42:14 +00:00
import jardin
class TestJardin(unittest.TestCase):
2023-10-20 11:25:19 +00:00
@patch("jardin.webdriver.Firefox")
2023-10-19 20:00:07 +00:00
def test_initialize_webdriver_calls_Firefox(self, mockFirefox):
2023-10-19 10:42:14 +00:00
jardin.initialize_webdriver()
mockFirefox.assert_called_once()
2023-10-20 11:25:19 +00:00
@patch("jardin.webdriver.Firefox")
2023-10-19 20:34:17 +00:00
def test_navigate_to_filegarden(self, mockFirefox):
jardin.navigate_to_filegarden(mockFirefox)
2023-10-19 20:53:19 +00:00
mockFirefox.get.assert_called_once_with("https://filegarden.com/login")
2023-10-19 20:34:17 +00:00
2023-10-20 11:25:19 +00:00
@patch("jardin.webdriver.Firefox")
2023-10-20 11:43:00 +00:00
def test_input_email_enters_email(self, mockFirefox):
2023-10-20 11:25:19 +00:00
mockEmail = "email@mail.com"
2023-10-20 11:32:48 +00:00
jardin.input_email(mockFirefox, mockEmail)
2023-10-20 11:25:19 +00:00
mockFirefox.find_element.assert_called_with(By.ID, "email")
mockFirefox.find_element.return_value.send_keys.assert_has_calls([
call(mockEmail),
call(Keys.RETURN)
2023-10-20 11:32:48 +00:00
])
2023-10-20 11:43:00 +00:00
@patch("jardin.webdriver.Firefox")
def test_click_password_button_clicks_button(self, mockFirefox):
jardin.click_password_button(mockFirefox)
mockFirefox.find_element.assert_called_with(By.XPATH, "/html/body/div[2]/div[3]/div[1]/form/div[1]/span/button[3]")
mockFirefox.find_element.return_value.click.assert_called_once()
@patch("jardin.webdriver.Firefox")
def test_input_password_enters_password(self, mockFirefox):
mockPassword = "p4$$w0rd"
jardin.input_password(mockFirefox, mockPassword)
mockFirefox.find_element.assert_called_with(By.ID, "password")
mockFirefox.find_element.return_value.send_keys.assert_has_calls([
call(mockPassword),
call(Keys.RETURN)
])
2023-10-20 11:32:48 +00:00
@patch("jardin.webdriver.Firefox")
@patch("jardin.input_email")
2023-10-20 11:43:00 +00:00
@patch("jardin.click_password_button")
@patch("jardin.input_password")
def test_login_with_password_performs_login_steps(self, mockInputPassword, mockClickPasswordButton, mockInputEmail, mockFirefox):
2023-10-20 11:32:48 +00:00
mockEmail = "email@mail.com"
mockPassword = "p4$$w0rd"
jardin.login_with_password(mockFirefox, mockEmail, mockPassword)
mockInputEmail.assert_called_once_with(mockFirefox, mockEmail)
2023-10-20 11:43:00 +00:00
mockClickPasswordButton.assert_called_once_with(mockFirefox)
mockInputPassword.assert_called_once_with(mockFirefox, mockPassword)
2023-10-20 11:25:19 +00:00
2023-10-19 20:00:07 +00:00
@patch("jardin.initialize_webdriver")
2023-10-19 20:34:17 +00:00
@patch("jardin.navigate_to_filegarden")
2023-10-20 11:52:58 +00:00
@patch("jardin.login_with_password")
2023-10-19 20:34:17 +00:00
def test_main_calls_methods_in_correct_order(self,
2023-10-20 11:52:58 +00:00
mockLoginWithPassword,
mockNavigateToFilegarden,
mockInitializeWebdriver):
mockEmail = "email@mail.com"
mockPassword = "p4$$w0rd"
jardin.main(mockEmail, mockPassword)
2023-10-19 20:00:07 +00:00
mockInitializeWebdriver.assert_called_once()
2023-10-20 11:52:58 +00:00
mockNavigateToFilegarden.assert_called_once_with(mockInitializeWebdriver.return_value)
mockLoginWithPassword.assert_called_once_with(mockInitializeWebdriver.return_value, mockEmail, mockPassword)
mockInitializeWebdriver.return_value.close.assert_called_once()
2023-10-19 20:00:07 +00:00
2023-10-19 11:11:51 +00:00
if __name__ == "__main__":
unittest.main()