aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/test_db_utils.py
blob: a319692303c2f01197a69f8a18840091a2433848 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""module contains test for db_utils"""

from unittest import TestCase
from unittest import mock
from types import SimpleNamespace

import pytest

import gn3
from gn3.db_utils import database_connector
from gn3.db_utils import parse_db_url

@pytest.fixture(scope="class")
def setup_app(request, fxtr_app):
    """Setup the fixtures for the class."""
    request.cls.app = fxtr_app

class TestDatabase(TestCase):
    """class contains testd for db connection functions"""

    @pytest.mark.unit_test
    @mock.patch("gn3.db_utils.mdb")
    @mock.patch("gn3.db_utils.parse_db_url")
    def test_database_connector(self, mock_db_parser, mock_sql):
        """test for creating database connection"""
        mock_db_parser.return_value = ("localhost", "guest", "4321", "users", None)
        callable_cursor = lambda: SimpleNamespace(execute=3)
        cursor_object = SimpleNamespace(cursor=callable_cursor)
        mock_sql.connect.return_value = cursor_object
        mock_sql.close.return_value = None
        results = database_connector()

        mock_sql.connect.assert_called_with(
            "localhost", "guest", "4321", "users", port=3306)
        self.assertIsInstance(
            results, SimpleNamespace, "database not created successfully")

    @pytest.mark.unit_test
    @pytest.mark.usefixtures("setup_app")
    def test_parse_db_url(self):
        """test for parsing db_uri env variable"""
        print(self.__dict__)
        with self.app.app_context(), mock.patch.dict(# pylint: disable=[no-member]
                gn3.db_utils.current_app.config,
                {"SQL_URI": "mysql://username:4321@localhost/test"},
                clear=True):
            results = parse_db_url()
            expected_results = ("localhost", "username", "4321", "test", None)
            self.assertEqual(results, expected_results)