• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

inventree / InvenTree / 8598320379

08 Apr 2024 10:12AM CUT coverage: 91.848% (+1.6%) from 90.251%
8598320379

Pull #6945

github

web-flow
Merge df4553923 into cc045bcc7
Pull Request #6945: Fix test coverage

232 of 666 branches covered (34.83%)

Branch coverage included in aggregate %.

2 of 3 new or added lines in 2 files covered. (66.67%)

33285 of 35826 relevant lines covered (92.91%)

5.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.56
/src/backend/InvenTree/web/tests.py
1
"""Tests for PUI backend stuff."""
2

3
import json
4
import os
5
from pathlib import Path
6
from unittest import mock
7

8
from django.urls import reverse
9

10
from InvenTree.config import get_frontend_settings
11
from InvenTree.unit_test import InvenTreeAPITestCase, InvenTreeTestCase
12

13
from .templatetags import spa_helper
14

15

16
class TemplateTagTest(InvenTreeTestCase):
17
    """Tests for the template tag code."""
18

19
    def assertSettings(self, settings_data):
2✔
20
        """Helper to test if needed args are in the settings."""
21
        self.assertTrue('debug' in settings_data)
22
        self.assertTrue('server_list' in settings_data)
23
        self.assertTrue('show_server_selector' in settings_data)
24
        self.assertTrue('environment' in settings_data)
25

26
    def test_spa_bundle(self):
27
        """Test the 'spa_bundle' template tag."""
28
        resp = spa_helper.spa_bundle()
1✔
29
        if not resp:
1✔
30
            # No Vite, no test
31
            # TODO: Add a test for the non-Vite case (docker)
NEW
32
            return  # pragma: no cover
×
33

34
        shipped_js = resp.split('<script type="module" src="')[1:]
1✔
35
        self.assertTrue(len(shipped_js) > 0)
1✔
36
        self.assertTrue(len(shipped_js) == 3)
1✔
37

38
        manifest_file = Path(__file__).parent.joinpath('static/web/.vite/manifest.json')
1✔
39
        # Try with removed manifest file
40
        manifest_file.rename(manifest_file.with_suffix('.json.bak'))  # Rename
1✔
41
        resp = resp = spa_helper.spa_bundle()
1✔
42
        self.assertIsNone(resp)
1✔
43
        manifest_file.with_suffix('.json.bak').rename(
1✔
44
            manifest_file.with_suffix('.json')
1✔
45
        )  # Name back
46

47
    def test_spa_settings(self):
2✔
48
        """Test the 'spa_settings' template tag."""
49
        resp = spa_helper.spa_settings()
50
        self.assertTrue(resp.startswith('<script>window.INVENTREE_SETTINGS='))
51
        settings_data_string = resp.replace(
52
            '<script>window.INVENTREE_SETTINGS=', ''
53
        ).replace('</script>', '')
54
        settings_data = json.loads(settings_data_string)
55
        self.assertSettings(settings_data)
56

57
    def test_get_frontend_settings(self):
58
        """Test frontend settings retrieval."""
59
        # Normal run for priming
60
        rsp = get_frontend_settings()
1✔
61
        self.assertSettings(rsp)
1✔
62

63
        # No base_url
64
        envs = {'INVENTREE_PUI_URL_BASE': ''}
1✔
65
        with mock.patch.dict(os.environ, envs):
1✔
66
            rsp = get_frontend_settings()
1✔
67
            self.assertSettings(rsp)
1✔
68

69
        # No debug, no serverlist -> selector
70
        rsp = get_frontend_settings(False)
1✔
71
        self.assertSettings(rsp)
1✔
72
        self.assertTrue(rsp['show_server_selector'])
1✔
73

74
        # No debug, serverlist -> no selector
75
        envs = {'INVENTREE_PUI_SETTINGS': json.dumps({'server_list': ['aa', 'bb']})}
1✔
76
        with mock.patch.dict(os.environ, envs):
1✔
77
            rsp = get_frontend_settings(False)
1✔
78
            self.assertFalse('show_server_selector' in rsp)
1✔
79
            self.assertEqual(rsp['server_list'], ['aa', 'bb'])
1✔
80

81

82
class TestWebHelpers(InvenTreeAPITestCase):
2✔
83
    """Tests for the web helpers."""
84

85
    def test_ui_preference(self):
86
        """Test the UI preference API."""
87
        url = reverse('api-ui-preference')
1✔
88

89
        # Test default
90
        resp = self.get(url)
1✔
91
        data = json.loads(resp.content)
1✔
92
        self.assertTrue(data['cui'])
1✔
93
        self.assertFalse(data['pui'])
1✔
94
        self.assertEqual(data['preferred_method'], 'cui')
1✔
95

96
        # Set to PUI
97
        resp = self.put(url, {'preferred_method': 'pui'})
1✔
98
        data = json.loads(resp.content)
1✔
99
        self.assertEqual(resp.status_code, 200)
1✔
100
        self.assertFalse(data['cui'])
1✔
101
        self.assertTrue(data['pui'])
1✔
102
        self.assertEqual(data['preferred_method'], 'pui')
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc