1diff --git a/pkg/database/sql/main_test.go b/pkg/database/sql/main_test.go
2new file mode 100644
3index 0000000000000000000000000000000000000000..c373740d66ac05e765ab5a4bb0e51ae9df8928e6
4--- /dev/null
5+++ b/pkg/database/sql/main_test.go
6@@ -0,0 +1,45 @@
7+//go:build integration
8+
9+package sql
10+
11+import (
12+ "context"
13+ "os"
14+ "testing"
15+
16+ "gorm.io/driver/sqlite"
17+ "gorm.io/gorm"
18+ "gorm.io/gorm/logger"
19+)
20+
21+var (
22+ ctx context.Context
23+)
24+
25+func setup(t *testing.T) (*gorm.DB, func()) {
26+ t.Helper()
27+
28+ ctx = context.Background()
29+
30+ file, err := os.CreateTemp("", "img_user_*.db")
31+ if err != nil {
32+ t.Fatalf("Error creating tmp error: %s", err.Error())
33+ }
34+
35+ db, err := gorm.Open(sqlite.Open(file.Name()), &gorm.Config{
36+ Logger: logger.Default.LogMode(logger.Info),
37+ })
38+ if err != nil {
39+ t.Fatalf("Error openning db, error %s", err.Error())
40+ }
41+
42+ err = Migrate(db)
43+ if err != nil {
44+ t.Fatalf("Error migrating db, error %s", err.Error())
45+ }
46+
47+ return db, func() {
48+ //nolint:errcheck
49+ os.Remove(file.Name())
50+ }
51+}
52diff --git a/pkg/database/sql/settings_test.go b/pkg/database/sql/settings_test.go
53new file mode 100644
54index 0000000000000000000000000000000000000000..f1c859dd0c89980f9349c863388488b75339b69f
55--- /dev/null
56+++ b/pkg/database/sql/settings_test.go
57@@ -0,0 +1,43 @@
58+//go:build integration
59+
60+package sql
61+
62+import (
63+ "testing"
64+
65+ "git.sr.ht/~gabrielgio/img/pkg/database/repository"
66+ "git.sr.ht/~gabrielgio/img/pkg/testkit"
67+)
68+
69+func TestSaveLoad(t *testing.T) {
70+ db, tearDown := setup(t)
71+ defer tearDown()
72+
73+ settingsRepository := NewSettingsRespository(db)
74+
75+ // testing saving once
76+ want := &repository.Settings{
77+ ShowMode: true,
78+ ShowOwner: true,
79+ }
80+
81+ err := settingsRepository.Save(ctx, want)
82+ testkit.TestFatalError(t, "Save", err)
83+
84+ got, err := settingsRepository.Load(ctx)
85+ testkit.TestFatalError(t, "Save", err)
86+ testkit.TestValue(t, "Save", want, got)
87+
88+ // testing saving a second time
89+ want = &repository.Settings{
90+ ShowMode: false,
91+ ShowOwner: false,
92+ }
93+
94+ err = settingsRepository.Save(ctx, want)
95+ testkit.TestFatalError(t, "Save", err)
96+
97+ got, err = settingsRepository.Load(ctx)
98+ testkit.TestFatalError(t, "Save", err)
99+ testkit.TestValue(t, "Save", want, got)
100+}
101diff --git a/pkg/database/sql/user_test.go b/pkg/database/sql/user_test.go
102index 01f6729bc00c576b97cc6bdf2fa45154e0b4eab8..db436767045e01cc9b20d03e3bee2576e01c6707 100644
103--- a/pkg/database/sql/user_test.go
104+++ b/pkg/database/sql/user_test.go
105@@ -4,42 +4,12 @@ package sql
106
107 import (
108 "context"
109- "os"
110 "testing"
111
112 "github.com/google/go-cmp/cmp"
113- "gorm.io/driver/sqlite"
114- "gorm.io/gorm"
115- "gorm.io/gorm/logger"
116
117 "git.sr.ht/~gabrielgio/img/pkg/database/repository"
118 )
119-
120-func setup(t *testing.T) (*gorm.DB, func()) {
121- t.Helper()
122-
123- file, err := os.CreateTemp("", "img_user_*.db")
124- if err != nil {
125- t.Fatalf("Error creating tmp error: %s", err.Error())
126- }
127-
128- db, err := gorm.Open(sqlite.Open(file.Name()), &gorm.Config{
129- Logger: logger.Default.LogMode(logger.Info),
130- })
131- if err != nil {
132- t.Fatalf("Error openning db, error %s", err.Error())
133- }
134-
135- err = Migrate(db)
136- if err != nil {
137- t.Fatalf("Error migrating db, error %s", err.Error())
138- }
139-
140- return db, func() {
141- //nolint:errcheck
142- os.Remove(file.Name())
143- }
144-}
145
146 func TestCreate(t *testing.T) {
147 t.Parallel()