Ejemplo n.º 1
0
class Phone:
    """
    Phone class
    """
    def __init__(self, manufacturer, model, os):
        """
        init method
        """
        self.manufacturer = manufacturer
        self.model = model
        self.os = os
        self.owner = "No owner yet"
        self._phonebook = PhoneBook()

    def call(self):
        """
        Decide who to call
        """
        print(self._phonebook.contacts)
        contact_name = input("Enter contactname: ")
        self._make_call(contact_name)

    def _make_call(self, name):
        """
        Pretend to make an actual phonecall
        """
        contact = self._phonebook.get_contact(name)
        print("Calling number", contact, "...")
Ejemplo n.º 2
0
class TestPhoneBook(unittest.TestCase):
    """Submodule for unittests, derives from unittest.TestCase"""
    def setUp(self):
        """ Create object for all tests """
        # Arrange
        self.phonebook = PhoneBook()

    def tearDown(self):
        """ Remove dependencies after test """
        self.phonebook = None

    def test_empty_phonebook(self):
        """Test that has_contacts return False when phonebook is empty"""
        self.assertFalse(self.phonebook.has_contacts())  # Assert

    def test_has_contact_true(self):
        """Test that has_contacts return True when phonebook is has a contact"""
        self.phonebook._contacts.append("070-354 78 00")  # Arrange
        self.assertTrue(self.phonebook.has_contacts())  # Assert

    def test_validate_valid_number(self):
        """Test validating valid number"""
        self.assertTrue(self.phonebook.validate_number("070-354 78 00"))

    def test_validate_number_with_letter(self):
        """Test validating number with a letter init"""
        self.assertFalse(self.phonebook.validate_number("070-35b 78 00"))

    def test_valid_number_with_missing_space(self):
        """Test validating number with a space missing"""
        self.assertFalse(self.phonebook.validate_number("070-354 7800"))

    def test_get_contact_empty(self):
        """
        Test that error is raised when list is empty
        """
        with self.assertRaises(ValueError) as _:
            self.phonebook.get_contact("Missing")

    def test_get_contact_fail(self):
        """
        Test that correct value is returned
        when getting contact that does not exist or is empty
        """
        self.phonebook.add_contact("Andreas", "079-244 07 80")
        with self.assertRaises(ValueError) as _:
            self.phonebook.get_contact("Zeldah")

    def test_add_contact_success(self):
        """
        Test we can add contat. Mock validation method.
        """
        # Arrange
        contact = ("Andreas", "079-244 07 80")
        with mock.patch.object(self.phonebook,
                               'validate_number') as validate_mock:
            validate_mock.return_value = True

            # Act
            result = self.phonebook.add_contact(*contact)

            # Assert
            validate_mock.assert_called_once_with(contact[1])
            self.assertTrue(result)
            self.assertEqual(len(self.phonebook._contacts), 1)
            self.assertEqual(self.phonebook._contacts[0], contact)