Skip to content
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
87 changes: 87 additions & 0 deletions Address-Book/test_AddressbookCreateTask.py.invalid
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
import unittest
from unittest.mock import patch, MagicMock
from tkinter import Toplevel, Label, Button
from Address-Book.addressbook import create_task

class Test_AddressbookCreateTask(unittest.TestCase):

@patch('Address-Book.addressbook.conn')
@patch('Address-Book.addressbook.Name')
@patch('Address-Book.addressbook.Number')
@patch('Address-Book.addressbook.list_of_names', new_callable=list)
@patch('Address-Book.addressbook.onClickAdded')
def test_add_new_task_with_valid_data(self, mock_onClickAdded, mock_list_of_names, mock_Number, mock_Name, mock_conn):
mock_Name.get.return_value = "John Doe"
mock_Number.get.return_value = "1234567890"
mock_list_of_names.clear()

mock_cursor = MagicMock()
mock_conn.cursor.return_value = mock_cursor
mock_cursor.lastrowid = 1

result = create_task()

mock_onClickAdded.assert_called_once()
mock_cursor.execute.assert_called_once_with(''' INSERT INTO tasks(name,status_id) VALUES(?,?) ''', ("John Doe", "1234567890"))
self.assertEqual(result, 1)

@patch('Address-Book.addressbook.Name')
@patch('Address-Book.addressbook.Number')
@patch('Address-Book.addressbook.Toplevel')
def test_add_task_with_empty_name(self, mock_Toplevel, mock_Number, mock_Name):
mock_Name.get.return_value = ""
mock_Number.get.return_value = "1234567890"

create_task()

mock_Toplevel.assert_called_once()
top_instance = mock_Toplevel.return_value
top_instance.geometry.assert_called_once_with('180x100')
top_instance.destroy.assert_not_called()

@patch('Address-Book.addressbook.Name')
@patch('Address-Book.addressbook.Number')
@patch('Address-Book.addressbook.Toplevel')
def test_add_task_with_invalid_phone_number(self, mock_Toplevel, mock_Number, mock_Name):
mock_Name.get.return_value = "John Doe"
mock_Number.get.return_value = "12345"

create_task()

mock_Toplevel.assert_called_once()
top_instance = mock_Toplevel.return_value
top_instance.geometry.assert_called_once_with('180x100')
top_instance.destroy.assert_not_called()

@patch('Address-Book.addressbook.Name')
@patch('Address-Book.addressbook.Number')
@patch('Address-Book.addressbook.list_of_names', new_callable=list)
@patch('Address-Book.addressbook.Toplevel')
def test_add_task_with_existing_name(self, mock_Toplevel, mock_list_of_names, mock_Number, mock_Name):
mock_Name.get.return_value = "John Doe"
mock_Number.get.return_value = "1234567890"
mock_list_of_names.append("John Doe")

create_task()

mock_Toplevel.assert_called_once()
top_instance = mock_Toplevel.return_value
top_instance.geometry.assert_called_once_with('180x100')
top_instance.destroy.assert_not_called()

@patch('Address-Book.addressbook.Name')
@patch('Address-Book.addressbook.Number')
@patch('Address-Book.addressbook.Toplevel')
def test_add_task_with_empty_name_and_invalid_phone(self, mock_Toplevel, mock_Number, mock_Name):
mock_Name.get.return_value = ""
mock_Number.get.return_value = "12345"

create_task()

mock_Toplevel.assert_called_once()
top_instance = mock_Toplevel.return_value
top_instance.geometry.assert_called_once_with('180x100')
top_instance.destroy.assert_not_called()

if __name__ == '__main__':
unittest.main()
71 changes: 71 additions & 0 deletions Address-Book/test_AddressbookOnClickAdded.py.invalid
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import unittest
from unittest.mock import patch
from tkinter import StringVar
import tkinter.messagebox
from Address-Book.addressbook import onClickAdded

class Test_AddressbookOnClickAdded(unittest.TestCase):

@patch('tkinter.messagebox.showinfo')
def test_message_box_display_with_correct_name(self, mock_showinfo):
# Arrange
Name = StringVar()
Name.set("John Doe")

# Act
onClickAdded()

# Assert
mock_showinfo.assert_called_once_with(" ", "John Doe got added")

@patch('tkinter.messagebox.showinfo')
def test_handle_empty_name_variable(self, mock_showinfo):
# Arrange
Name = StringVar()
Name.set("")

# Act
onClickAdded()

# Assert
mock_showinfo.assert_called_once_with(" ", " got added")

@patch('tkinter.messagebox.showinfo')
def test_handle_special_characters_in_name(self, mock_showinfo):
# Arrange
Name = StringVar()
Name.set("!@#$%^&*")

# Act
onClickAdded()

# Assert
mock_showinfo.assert_called_once_with(" ", "!@#$%^&* got added")

@patch('tkinter.messagebox.showinfo')
def test_handle_long_names(self, mock_showinfo):
# Arrange
Name = StringVar()
long_name = "A" * 1000 # TODO: Adjust the length if necessary
Name.set(long_name)

# Act
onClickAdded()

# Assert
mock_showinfo.assert_called_once_with(" ", f"{long_name} got added")

@patch('tkinter.messagebox.showinfo')
def test_non_string_name_handling(self, mock_showinfo):
# Arrange
Name = StringVar()
Name.set(12345) # TODO: Change to a non-string type if needed

# Act
onClickAdded()

# Assert
mock_showinfo.assert_called_once_with(" ", "12345 got added")

if __name__ == '__main__':
unittest.main()
68 changes: 68 additions & 0 deletions Address-Book/test_AddressbookOnClickDeleted.py.invalid
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import unittest
from unittest.mock import patch
from tkinter import StringVar
import tkinter.messagebox
from Address-Book.addressbook import onClickDeleted

class Test_AddressbookOnClickDeleted(unittest.TestCase):

@patch('tkinter.messagebox.showinfo')
def test_message_box_display_with_correct_name(self, mock_showinfo):
# Arrange
Name.set("John Doe")

# Act
onClickDeleted()

# Assert
mock_showinfo.assert_called_with(" ", "John Doe got deleted")

@patch('tkinter.messagebox.showinfo')
def test_handle_empty_name_gracefully(self, mock_showinfo):
# Arrange
Name.set("")

# Act
onClickDeleted()

# Assert
mock_showinfo.assert_called_with(" ", " got deleted")

@patch('tkinter.messagebox.showinfo')
def test_special_characters_in_name(self, mock_showinfo):
# Arrange
Name.set("J@hn D#e!")

# Act
onClickDeleted()

# Assert
mock_showinfo.assert_called_with(" ", "J@hn D#e! got deleted")

@patch('tkinter.messagebox.showinfo')
def test_long_names(self, mock_showinfo):
# Arrange
long_name = "A" * 1000 # TODO: Adjust the length if needed
Name.set(long_name)

# Act
onClickDeleted()

# Assert
mock_showinfo.assert_called_with(" ", f"{long_name} got deleted")

def test_function_does_not_alter_name_object(self):
# Arrange
original_name = "John Doe"
Name.set(original_name)

# Act
onClickDeleted()

# Assert
self.assertEqual(Name.get(), original_name)

if __name__ == '__main__':
# Initialize the Name variable for testing
Name = StringVar()
unittest.main()
1 change: 1 addition & 0 deletions requirements-roost.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pytest