File size: 3,252 Bytes
204f12a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

import unittest
from unittest.mock import patch


class TestStreamlitApp(unittest.TestCase):
    """Test suite for the Streamlit app components"""

    @patch("streamlit.title")
    @patch("streamlit.markdown")
    @patch("streamlit.subheader")
    @patch("streamlit.columns")
    @patch("streamlit.metric")
    @patch("utils.set_page_config")
    @patch("utils.display_sidebar")
    def test_app_initialization(
        self,
        mock_display_sidebar,
        mock_set_page_config,
        mock_metric,
        mock_columns,
        mock_subheader,
        mock_markdown,
        mock_title,
    ):
        """Test app initialization and component display"""

        mock_set_page_config.assert_called_once()
        mock_title.assert_called_once_with("CodeGen Hub")
        mock_markdown.assert_called()
        mock_display_sidebar.assert_called_once()

    @patch("streamlit.session_state", new_callable=dict)
    def test_session_state_initialization(self, mock_session_state):
        """Test session state variable initialization"""

        self.assertIn("datasets", mock_session_state)
        self.assertIn("trained_models", mock_session_state)
        self.assertIn("training_logs", mock_session_state)
        self.assertIn("training_progress", mock_session_state)

        self.assertEqual(mock_session_state["datasets"], {})
        self.assertEqual(mock_session_state["trained_models"], {})
        self.assertEqual(mock_session_state["training_logs"], [])
        self.assertEqual(mock_session_state["training_progress"], {})

    @patch("streamlit.metric")
    @patch("streamlit.session_state", new_callable=dict)
    def test_platform_statistics_display(self, mock_session_state,
                                         mock_metric):
        """Test platform statistics metrics display"""
        mock_session_state["datasets"] = {
            "dataset1": "data1",
            "dataset2": "data2"
        }
        mock_session_state["trained_models"] = {"model1": "trained_model1"}
        mock_session_state["training_progress"] = {
            "job1": {
                "status": "running"
            },
            "job2": {
                "status": "completed"
            },
            "job3": {
                "status": "running"
            },
        }

        mock_metric.assert_any_call("Datasets Available", 2)
        mock_metric.assert_any_call("Trained Models", 1)
        mock_metric.assert_any_call("Active Training Jobs", 2)

    @patch("streamlit.info")
    def test_getting_started_section_display(self, mock_info):
        """Test 'Getting Started' section instructions display"""

        expected_messages = [
            "1. πŸ“Š Start by uploading or selecting a Python code dataset in the **Dataset Management** section.",
            "2. πŸ› οΈ Configure and train your model in the **Model Training** section.",
            "3. πŸ’‘ Generate code predictions using your trained models in the **Code Generation** section.",
            "4. πŸ”„ Access your models on Hugging Face Hub for broader use.",
        ]

        for msg in expected_messages:
            mock_info.assert_any_call(msg)
        self.assertEqual(mock_info.call_count, 4)


if __name__ == "__main__":
    unittest.main()