#!/usr/bin/python3 import unittest from unittest.mock import patch, call from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import jardin class TestJardin(unittest.TestCase): @patch("jardin.webdriver.Firefox") def test_initialize_webdriver_calls_Firefox(self, mockFirefox): jardin.initialize_webdriver() mockFirefox.assert_called_once() @patch("jardin.webdriver.Firefox") def test_navigate_to_filegarden(self, mockFirefox): jardin.navigate_to_filegarden(mockFirefox) mockFirefox.get.assert_called_once_with("https://filegarden.com/login") @patch("jardin.webdriver.Firefox") def test_login_with_password_performs_login_steps(self, mockFirefox): mockEmail = "email@mail.com" mockPassword = "p4$$w0rd" jardin.login_with_password(mockFirefox, mockEmail, mockPassword) mockFirefox.find_element.assert_called_with(By.ID, "email") mockFirefox.find_element.return_value.send_keys.assert_has_calls([ call(mockEmail), call(Keys.RETURN) ]) @patch("jardin.initialize_webdriver") @patch("jardin.navigate_to_filegarden") def test_main_calls_methods_in_correct_order(self, mockInitializeWebdriver, mockNavigateToFilegarden): jardin.main() mockInitializeWebdriver.assert_called_once() mockNavigateToFilegarden.assert_called_once() if __name__ == "__main__": unittest.main()