Skip to content
This repository was archived by the owner on May 21, 2026. It is now read-only.

Commit fd06f72

Browse files
Add UserMediaListRepositoryTest @DataJpaTest and fix repository ID type to UUID
Agent-Logs-Url: https://github.com/EspacoGeek-Teams/SpringAPI_EspacoGeek/sessions/8bd217c1-398c-45a6-b66b-7e28bdd3e4b6 Co-authored-by: AbigailGeovana <142514517+AbigailGeovana@users.noreply.github.com>
1 parent ce65993 commit fd06f72

2 files changed

Lines changed: 93 additions & 1 deletion

File tree

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.espacogeek.geek.repositories;
22

3+
import java.util.UUID;
4+
35
import org.springframework.data.jpa.repository.JpaRepository;
46

57
import com.espacogeek.geek.models.UserMediaListModel;
68

7-
public interface UserMediaListRepository extends JpaRepository<UserMediaListModel, Integer> {
9+
public interface UserMediaListRepository extends JpaRepository<UserMediaListModel, UUID> {
810

911
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.espacogeek.geek.repositories;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
5+
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.Test;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
10+
import org.springframework.dao.DataIntegrityViolationException;
11+
import org.springframework.test.context.ActiveProfiles;
12+
13+
import com.espacogeek.geek.models.MediaCategoryModel;
14+
import com.espacogeek.geek.models.MediaModel;
15+
import com.espacogeek.geek.models.UserMediaListModel;
16+
import com.espacogeek.geek.models.UserModel;
17+
18+
@DataJpaTest
19+
@ActiveProfiles("test")
20+
class UserMediaListRepositoryTest {
21+
22+
@Autowired
23+
private UserMediaListRepository userMediaListRepository;
24+
25+
@Autowired
26+
private UserRepository userRepository;
27+
28+
@Autowired
29+
private MediaRepository mediaRepository;
30+
31+
@Autowired
32+
private MediaCategoryRepository mediaCategoryRepository;
33+
34+
private UserModel user;
35+
private MediaModel media;
36+
37+
@BeforeEach
38+
void setUp() {
39+
MediaCategoryModel category = mediaCategoryRepository.save(new MediaCategoryModel(null, "ANIME", null));
40+
41+
UserModel newUser = new UserModel();
42+
newUser.setUsername("testuser");
43+
newUser.setEmail("test@example.com");
44+
newUser.setPassword("password1".getBytes());
45+
user = userRepository.save(newUser);
46+
47+
MediaModel newMedia = new MediaModel();
48+
newMedia.setName("Test Media");
49+
newMedia.setMediaCategory(category);
50+
media = mediaRepository.save(newMedia);
51+
}
52+
53+
@Test
54+
void persist_ShouldSaveAndRetrieveUserMediaListWithGeneratedUuid() {
55+
UserMediaListModel entry = new UserMediaListModel();
56+
entry.setUser(user);
57+
entry.setMedia(media);
58+
entry.setStatus("watching");
59+
entry.setProgress(5);
60+
61+
UserMediaListModel saved = userMediaListRepository.save(entry);
62+
63+
assertThat(saved.getId()).isNotNull();
64+
assertThat(userMediaListRepository.findById(saved.getId())).isPresent()
65+
.get()
66+
.satisfies(found -> {
67+
assertThat(found.getUser().getId()).isEqualTo(user.getId());
68+
assertThat(found.getMedia().getId()).isEqualTo(media.getId());
69+
assertThat(found.getStatus()).isEqualTo("watching");
70+
assertThat(found.getProgress()).isEqualTo(5);
71+
});
72+
}
73+
74+
@Test
75+
void persist_WhenDuplicateUserAndMedia_ShouldViolateUniqueConstraint() {
76+
UserMediaListModel first = new UserMediaListModel();
77+
first.setUser(user);
78+
first.setMedia(media);
79+
first.setStatus("watching");
80+
userMediaListRepository.saveAndFlush(first);
81+
82+
UserMediaListModel duplicate = new UserMediaListModel();
83+
duplicate.setUser(user);
84+
duplicate.setMedia(media);
85+
duplicate.setStatus("completed");
86+
87+
assertThatThrownBy(() -> userMediaListRepository.saveAndFlush(duplicate))
88+
.isInstanceOf(DataIntegrityViolationException.class);
89+
}
90+
}

0 commit comments

Comments
 (0)