@@ -8,6 +8,10 @@ import (
8
8
_ "github.com/ydb-platform/ydb-go-sdk/v3"
9
9
)
10
10
11
+ func ptr (s string ) * string {
12
+ return & s
13
+ }
14
+
11
15
func TestAuthors (t * testing.T ) {
12
16
ctx := context .Background ()
13
17
@@ -16,6 +20,53 @@ func TestAuthors(t *testing.T) {
16
20
17
21
q := New (test .DB )
18
22
23
+ t .Run ("InsertAuthors" , func (t * testing.T ) {
24
+ authorsToInsert := []CreateOrUpdateAuthorParams {
25
+ {P0 : 1 , P1 : "Лев Толстой" , P2 : ptr ("Русский писатель, автор \" Война и мир\" " )},
26
+ {P0 : 2 , P1 : "Александр Пушкин" , P2 : ptr ("Автор \" Евгения Онегина\" " )},
27
+ {P0 : 3 , P1 : "Александр Пушкин" , P2 : ptr ("Русский поэт, драматург и прозаик" )},
28
+ {P0 : 4 , P1 : "Фёдор Достоевский" , P2 : ptr ("Автор \" Преступление и наказание\" " )},
29
+ {P0 : 5 , P1 : "Николай Гоголь" , P2 : ptr ("Автор \" Мёртвые души\" " )},
30
+ {P0 : 6 , P1 : "Антон Чехов" , P2 : nil },
31
+ {P0 : 7 , P1 : "Иван Тургенев" , P2 : ptr ("Автор \" Отцы и дети\" " )},
32
+ {P0 : 8 , P1 : "Михаил Лермонтов" , P2 : nil },
33
+ {P0 : 9 , P1 : "Даниил Хармс" , P2 : ptr ("Абсурдист, писатель и поэт" )},
34
+ {P0 : 10 , P1 : "Максим Горький" , P2 : ptr ("Автор \" На дне\" " )},
35
+ {P0 : 11 , P1 : "Владимир Маяковский" , P2 : nil },
36
+ {P0 : 12 , P1 : "Сергей Есенин" , P2 : ptr ("Русский лирик" )},
37
+ {P0 : 13 , P1 : "Борис Пастернак" , P2 : ptr ("Автор \" Доктор Живаго\" " )},
38
+ }
39
+
40
+ for _ , author := range authorsToInsert {
41
+ if _ , err := q .CreateOrUpdateAuthor (ctx , author ); err != nil {
42
+ t .Fatalf ("failed to insert author %q: %v" , author .P1 , err )
43
+ }
44
+ }
45
+ })
46
+
47
+ t .Run ("CreateOrUpdateAuthorReturningBio" , func (t * testing.T ) {
48
+ newBio := "Обновленная биография автора"
49
+ arg := CreateOrUpdateAuthorRetunringBioParams {
50
+ P0 : 3 ,
51
+ P1 : "Тестовый Автор" ,
52
+ P2 : & newBio ,
53
+ }
54
+
55
+ returnedBio , err := q .CreateOrUpdateAuthorRetunringBio (ctx , arg )
56
+ if err != nil {
57
+ t .Fatalf ("failed to create or update author: %v" , err )
58
+ }
59
+
60
+ if returnedBio == nil {
61
+ t .Fatal ("expected non-nil bio, got nil" )
62
+ }
63
+ if * returnedBio != newBio {
64
+ t .Fatalf ("expected bio %q, got %q" , newBio , * returnedBio )
65
+ }
66
+
67
+ t .Logf ("Author created or updated successfully with bio: %s" , * returnedBio )
68
+ })
69
+
19
70
t .Run ("ListAuthors" , func (t * testing.T ) {
20
71
authors , err := q .ListAuthors (ctx )
21
72
if err != nil {
@@ -26,9 +77,9 @@ func TestAuthors(t *testing.T) {
26
77
}
27
78
t .Log ("Authors:" )
28
79
for _ , a := range authors {
29
- bio := "NULL "
30
- if a .Bio . Valid {
31
- bio = a .Bio . String
80
+ bio := "Null "
81
+ if a .Bio != nil {
82
+ bio = * a .Bio
32
83
}
33
84
t .Logf ("- ID: %d | Name: %s | Bio: %s" , a .ID , a .Name , bio )
34
85
}
@@ -39,9 +90,9 @@ func TestAuthors(t *testing.T) {
39
90
if err != nil {
40
91
t .Fatal (err )
41
92
}
42
- bio := "NULL "
43
- if singleAuthor .Bio . Valid {
44
- bio = singleAuthor .Bio . String
93
+ bio := "Null "
94
+ if singleAuthor .Bio != nil {
95
+ bio = * singleAuthor .Bio
45
96
}
46
97
t .Logf ("- ID: %d | Name: %s | Bio: %s" , singleAuthor .ID , singleAuthor .Name , bio )
47
98
})
@@ -56,9 +107,9 @@ func TestAuthors(t *testing.T) {
56
107
}
57
108
t .Log ("Authors with this name:" )
58
109
for _ , a := range authors {
59
- bio := "NULL "
60
- if a .Bio . Valid {
61
- bio = a .Bio . String
110
+ bio := "Null "
111
+ if a .Bio != nil {
112
+ bio = * a .Bio
62
113
}
63
114
t .Logf ("- ID: %d | Name: %s | Bio: %s" , a .ID , a .Name , bio )
64
115
}
@@ -74,9 +125,9 @@ func TestAuthors(t *testing.T) {
74
125
}
75
126
t .Log ("Authors with even IDs:" )
76
127
for _ , a := range authors {
77
- bio := "NULL "
78
- if a .Bio . Valid {
79
- bio = a .Bio . String
128
+ bio := "Null "
129
+ if a .Bio != nil {
130
+ bio = * a .Bio
80
131
}
81
132
t .Logf ("- ID: %d | Name: %s | Bio: %s" , a .ID , a .Name , bio )
82
133
}
@@ -92,11 +143,27 @@ func TestAuthors(t *testing.T) {
92
143
}
93
144
t .Log ("Authors with NULL bio:" )
94
145
for _ , a := range authors {
95
- bio := "NULL "
96
- if a .Bio . Valid {
97
- bio = a .Bio . String
146
+ bio := "Null "
147
+ if a .Bio != nil {
148
+ bio = * a .Bio
98
149
}
99
150
t .Logf ("- ID: %d | Name: %s | Bio: %s" , a .ID , a .Name , bio )
100
151
}
101
152
})
153
+
154
+ t .Run ("Delete All Authors" , func (t * testing.T ) {
155
+ var i uint64
156
+ for i = 1 ; i <= 13 ; i ++ {
157
+ if err := q .DeleteAuthor (ctx , i ); err != nil {
158
+ t .Fatalf ("failed to delete authors: %v" , err )
159
+ }
160
+ }
161
+ authors , err := q .ListAuthors (ctx )
162
+ if err != nil {
163
+ t .Fatal (err )
164
+ }
165
+ if len (authors ) != 0 {
166
+ t .Fatalf ("expected no authors, got %d" , len (authors ))
167
+ }
168
+ })
102
169
}
0 commit comments