@@ -82,4 +82,114 @@ var _ = Describe("Users Table Integration", func() {
8282 Expect (err ).ToNot (BeNil ())
8383 Expect (err .Error ()).To (ContainSubstring ("violates foreign key constraint" ))
8484 })
85+
86+ It ("should update and retrieve user name" , func () {
87+ username := "useruser"
88+ email := "useruser@example.com"
89+ rocketpoints := 42
90+
91+ _ , err := testDbInstance .Exec (`
92+ INSERT INTO users (id, username, email, rocketpoints)
93+ VALUES ($1, $2, $3, $4)
94+ ` , userID , username , email , rocketpoints )
95+ Expect (err ).To (BeNil ())
96+
97+ _ , err = testDbInstance .Exec (`
98+ UPDATE users SET username = $1 WHERE id = $2
99+ ` , "newname" , userID )
100+ Expect (err ).To (BeNil ())
101+
102+ row := testDbInstance .QueryRow (`
103+ SELECT username FROM users WHERE id = $1
104+ ` , userID )
105+ var gotUsername string
106+ err = row .Scan (& gotUsername )
107+ Expect (err ).To (BeNil ())
108+ Expect (gotUsername ).To (Equal ("newname" ))
109+ })
110+
111+ It ("should update and retrieve user email in both users and credentials" , func () {
112+ username := "useruser"
113+ email := "useruser@example.com"
114+ rocketpoints := 42
115+
116+ _ , err := testDbInstance .Exec (`
117+ INSERT INTO users (id, username, email, rocketpoints)
118+ VALUES ($1, $2, $3, $4)
119+ ` , userID , username , email , rocketpoints )
120+ Expect (err ).To (BeNil ())
121+
122+ _ , err = testDbInstance .Exec (`
123+ UPDATE users SET email = $1 WHERE id = $2
124+ ` , "newemail@example.com" , userID )
125+ Expect (err ).To (BeNil ())
126+ _ , err = testDbInstance .Exec (`
127+ UPDATE credentials SET email = $1 WHERE id = $2
128+ ` , "newemail@example.com" , userID )
129+ Expect (err ).To (BeNil ())
130+
131+ row := testDbInstance .QueryRow (`
132+ SELECT email FROM users WHERE id = $1
133+ ` , userID )
134+ var gotEmail string
135+ err = row .Scan (& gotEmail )
136+ Expect (err ).To (BeNil ())
137+ Expect (gotEmail ).To (Equal ("newemail@example.com" ))
138+
139+ row = testDbInstance .QueryRow (`
140+ SELECT email FROM credentials WHERE id = $1
141+ ` , userID )
142+ err = row .Scan (& gotEmail )
143+ Expect (err ).To (BeNil ())
144+ Expect (gotEmail ).To (Equal ("newemail@example.com" ))
145+ })
146+
147+ It ("should get user ID by username" , func () {
148+ username := "useruser"
149+ email := "useruser@example.com"
150+ rocketpoints := 42
151+
152+ _ , err := testDbInstance .Exec (`
153+ INSERT INTO users (id, username, email, rocketpoints)
154+ VALUES ($1, $2, $3, $4)
155+ ` , userID , username , email , rocketpoints )
156+ Expect (err ).To (BeNil ())
157+
158+ row := testDbInstance .QueryRow (`
159+ SELECT id FROM users WHERE username = $1
160+ ` , username )
161+ var gotID uuid.UUID
162+ err = row .Scan (& gotID )
163+ Expect (err ).To (BeNil ())
164+ Expect (gotID ).To (Equal (userID ))
165+ })
166+
167+ It ("should delete a user and its credentials" , func () {
168+ username := "useruser"
169+ email := "useruser@example.com"
170+ rocketpoints := 42
171+
172+ _ , err := testDbInstance .Exec (`
173+ INSERT INTO users (id, username, email, rocketpoints)
174+ VALUES ($1, $2, $3, $4)
175+ ` , userID , username , email , rocketpoints )
176+ Expect (err ).To (BeNil ())
177+
178+ _ , err = testDbInstance .Exec (`
179+ DELETE FROM users WHERE id = $1
180+ ` , userID )
181+ Expect (err ).To (BeNil ())
182+ _ , err = testDbInstance .Exec (`
183+ DELETE FROM credentials WHERE id = $1
184+ ` , userID )
185+ Expect (err ).To (BeNil ())
186+
187+ row := testDbInstance .QueryRow (`
188+ SELECT COUNT(*) FROM users WHERE id = $1
189+ ` , userID )
190+ var count int
191+ err = row .Scan (& count )
192+ Expect (err ).To (BeNil ())
193+ Expect (count ).To (Equal (0 ))
194+ })
85195})
0 commit comments