zhongrj
2025-11-24 276323dce9613867abb3f58a4cc2abbfb2fd0dea
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
import os
import time
 
from django.core.exceptions import ValidationError
from django.core.files import File
from django.test import Client
 
from app.contexts.settings import load as load_settings
from app.models import Setting
from app.models import Theme
from webodm import settings as webodm_settings
from .classes import BootTestCase
 
class TestSettings(BootTestCase):
 
    def setUp(self):
        pass
 
    def tearDown(self):
        pass
 
    def test_settings(self):
        c = Client()
 
        # There should always be a Setting object
        self.assertTrue(Setting.objects.count() == 1, "There's a settings object")
 
        # There should be "default" Theme object
        self.assertTrue(Theme.objects.filter(name="Default").count() == 1, "Default theme found")
 
        # The default settings use the default theme
        self.assertTrue(Setting.objects.first().theme.id == Theme.objects.get(name="Default").id, "Default theme is associated to settings")
 
        # We can create a new theme object
        second_theme = Theme.objects.create(name="Second")
 
        # We cannot add another setting objects
        with self.assertRaises(ValidationError):
            Setting.objects.create(app_name="Test", theme=second_theme)
 
        # We can retrieve the settings
        settings = load_settings()['SETTINGS']
        self.assertTrue(settings is not None, "Can retrieve settings")
 
        # The default logo has been created in the proper destination
        default_logo_path = os.path.join(webodm_settings.MEDIA_ROOT, settings.app_logo.name)
        self.assertTrue(os.path.exists(default_logo_path), "Default logo exists in MEDIA_ROOT/settings")
 
        # We can update the logo
        logo = os.path.join('app', 'static', 'app', 'img', 'favicon.png')
        settings.app_logo.save(os.path.basename(logo), File(open(logo, 'rb')))
        settings.save()
 
        # The main logo has been uploaded
        self.assertTrue("favicon" in settings.app_logo.name, "Logo has been updated")
        self.assertTrue(os.path.exists(os.path.join(webodm_settings.MEDIA_ROOT, settings.app_logo.name)),
                        "New logo exists in MEDIA_ROOT/settings")
 
        # The old logo does not exist anymore
        self.assertFalse(os.path.exists(default_logo_path),
                        "Old logo has been deleted")