@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "video")
public class Video {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String title;
private String url;
}
@Repository
public interface VideoRepository extends JpaRepository<Video, Integer> {
}
public interface VideoService {
List<Video> findAll();
}
@Service
public class VideoServiceImpl implements VideoService{
@Autowired
private VideoRepository videoRepository;
@Override
public List<Video> findAll() {
return videoRepository.findAll();
}
}
class VideoServiceImplTest {
@InjectMocks
VideoServiceImpl videoService;
@Mock
VideoRepository videoRepository;
private Video videoOne = new Video(1, "kultas", "https://webnsdf");
private Video videoTwo = new Video(2, "joshua", "https://343heth");
private Video videoThree = new Video(3, "ambient mix", "https://ambientsome");
@BeforeEach
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
void findAll() {
List<Video> list = new ArrayList<>();
list.add(videoOne);
list.add(videoTwo);
list.add(videoThree);
when(videoRepository.findAll()).thenReturn(list);
}
}
import ga.rusanov.backend.model.Video;
import ga.rusanov.backend.service.VideoService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import java.util.ArrayList;
import java.util.List;
import static org.hamcrest.Matchers.hasSize;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(controllers = VideoController.class)
class VideoControllerTest {
@MockBean
private VideoService videoService;
@Autowired
private MockMvc mockMvc;
private List<Video> videoList;
@BeforeEach()
void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
this.videoList = new ArrayList<>();
this.videoList.add(new Video(1, "kultas", "https://webnsdf"));
this.videoList.add(new Video(2, "joshua", "https://343heth"));
this.videoList.add(new Video(3, "ambient mix", "https://ambientsome"));
}
@Test
void shouldGetAllVideos() throws Exception{
Mockito.when(videoService.findAll()).thenReturn(videoList);
given(videoService.findAll()).willReturn(videoList);
this.mockMvc.perform(get("/api/video/all"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.*", hasSize(3)));
}
}