code.gitea.io/gitea@v1.21.7/models/system/setting_test.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package system_test 5 6 import ( 7 "testing" 8 9 "code.gitea.io/gitea/models/db" 10 "code.gitea.io/gitea/models/system" 11 "code.gitea.io/gitea/models/unittest" 12 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func TestSettings(t *testing.T) { 17 keyName := "test.key" 18 assert.NoError(t, unittest.PrepareTestDatabase()) 19 20 assert.NoError(t, db.TruncateBeans(db.DefaultContext, &system.Setting{})) 21 22 rev, settings, err := system.GetAllSettings(db.DefaultContext) 23 assert.NoError(t, err) 24 assert.EqualValues(t, 1, rev) 25 assert.Len(t, settings, 1) // there is only one "revision" key 26 27 err = system.SetSettings(db.DefaultContext, map[string]string{keyName: "true"}) 28 assert.NoError(t, err) 29 rev, settings, err = system.GetAllSettings(db.DefaultContext) 30 assert.NoError(t, err) 31 assert.EqualValues(t, 2, rev) 32 assert.Len(t, settings, 2) 33 assert.EqualValues(t, "true", settings[keyName]) 34 35 err = system.SetSettings(db.DefaultContext, map[string]string{keyName: "false"}) 36 assert.NoError(t, err) 37 rev, settings, err = system.GetAllSettings(db.DefaultContext) 38 assert.NoError(t, err) 39 assert.EqualValues(t, 3, rev) 40 assert.Len(t, settings, 2) 41 assert.EqualValues(t, "false", settings[keyName]) 42 43 // setting the same value should not trigger DuplicateKey error, and the "version" should be increased 44 setting := &system.Setting{SettingKey: keyName} 45 _, err = db.GetByBean(db.DefaultContext, setting) 46 assert.NoError(t, err) 47 assert.EqualValues(t, 2, setting.Version) 48 err = system.SetSettings(db.DefaultContext, map[string]string{keyName: "false"}) 49 assert.NoError(t, err) 50 setting = &system.Setting{SettingKey: keyName} 51 _, err = db.GetByBean(db.DefaultContext, setting) 52 assert.NoError(t, err) 53 assert.EqualValues(t, 3, setting.Version) 54 }