Merge branch 'feature/6-enhance-the-search-field' into 'develop/0.2.0'
Enhance the search field by adding options to filter for boolean fields See merge request tpeetz/kontor!22
This commit was merged in pull request #66.
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
package de.thpeetz.kontor.common.views;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@ToString
|
||||||
|
public class FilterOption {
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private Boolean value;
|
||||||
|
|
||||||
|
public FilterOption(String name, Boolean value) {
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package de.thpeetz.kontor.common.views;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@ToString
|
||||||
|
public class SearchFilter {
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private String searchTerm;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private List<FilterOption> filterOptions = new LinkedList<>();
|
||||||
|
|
||||||
|
public SearchFilter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addFilter(FilterOption option) {
|
||||||
|
filterOptions.add(option);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package de.thpeetz.kontor.common.views;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.vaadin.flow.component.combobox.MultiSelectComboBox;
|
||||||
|
import com.vaadin.flow.component.combobox.MultiSelectComboBox.AutoExpandMode;
|
||||||
|
import com.vaadin.flow.component.customfield.CustomField;
|
||||||
|
import com.vaadin.flow.component.textfield.TextField;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class SearchFilterField extends CustomField<SearchFilter> {
|
||||||
|
|
||||||
|
private final TextField searchField = new TextField();
|
||||||
|
private final MultiSelectComboBox<FilterOption> filterField = new MultiSelectComboBox<>();
|
||||||
|
private final List<FilterOption> filterOptions = new LinkedList<>();
|
||||||
|
|
||||||
|
public SearchFilterField() {
|
||||||
|
searchField.setPlaceholder("Search");
|
||||||
|
searchField.setClearButtonVisible(true);
|
||||||
|
filterField.setPlaceholder("Filter");
|
||||||
|
filterField.setClearButtonVisible(true);
|
||||||
|
filterField.setItemLabelGenerator(FilterOption::getName);
|
||||||
|
filterField.setAutoExpand(AutoExpandMode.BOTH);
|
||||||
|
add(searchField, filterField);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SearchFilter generateModelValue() {
|
||||||
|
SearchFilter filter = new SearchFilter();
|
||||||
|
if (searchField.getValue() != null) {
|
||||||
|
filter.setSearchTerm(searchField.getValue());
|
||||||
|
}
|
||||||
|
Set<FilterOption> filterOptions = filterField.getValue();
|
||||||
|
for (FilterOption filterOption : filterOptions) {
|
||||||
|
filter.addFilter(filterOption);
|
||||||
|
}
|
||||||
|
log.info("use searchfilter: {}", filter);
|
||||||
|
return filter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setPresentationValue(SearchFilter searchFilter) {
|
||||||
|
log.info("display filter: {}", searchFilter);
|
||||||
|
if (searchFilter == null) return;
|
||||||
|
searchField.setValue(searchFilter.getSearchTerm());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addFilter(String optionName) {
|
||||||
|
filterOptions.add(new FilterOption(optionName, true));
|
||||||
|
filterField.setItems(filterOptions);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package de.thpeetz.kontor.media.data;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.Query;
|
|
||||||
import org.springframework.data.repository.query.Param;
|
|
||||||
|
|
||||||
public interface MediaFileRepository extends JpaRepository<MediaFile, String> {
|
|
||||||
@Query("select m from MediaFile m " +
|
|
||||||
"where lower(m.url) like lower(concat('%', :searchTerm, '%')) or lower(m.title) like lower(concat('%', :searchTerm, '%'))")
|
|
||||||
List<MediaFile> search(@Param("searchTerm") String searchTerm);
|
|
||||||
|
|
||||||
}
|
|
||||||
+3
-1
@@ -1,6 +1,8 @@
|
|||||||
package de.thpeetz.kontor.media.data;
|
package de.thpeetz.kontor.media.repository;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.data.MediaActorFile;
|
||||||
|
|
||||||
public interface MediaActorFileRepository extends JpaRepository<MediaActorFile, String> {
|
public interface MediaActorFileRepository extends JpaRepository<MediaActorFile, String> {
|
||||||
}
|
}
|
||||||
+3
-1
@@ -1,9 +1,11 @@
|
|||||||
package de.thpeetz.kontor.media.data;
|
package de.thpeetz.kontor.media.repository;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.query.Param;
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.data.MediaActor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface MediaActorRepository extends JpaRepository<MediaActor, String> {
|
public interface MediaActorRepository extends JpaRepository<MediaActor, String> {
|
||||||
+3
-1
@@ -1,9 +1,11 @@
|
|||||||
package de.thpeetz.kontor.media.data;
|
package de.thpeetz.kontor.media.repository;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.query.Param;
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.data.MediaArticle;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface MediaArticleRepository extends JpaRepository<MediaArticle, String> {
|
public interface MediaArticleRepository extends JpaRepository<MediaArticle, String> {
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
package de.thpeetz.kontor.media.repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.data.MediaFile;
|
||||||
|
|
||||||
|
public interface MediaFileRepository extends JpaRepository<MediaFile, String> {
|
||||||
|
@Query("select m from MediaFile m " +
|
||||||
|
"where lower(m.url) like lower(concat('%', :searchTerm, '%')) or lower(m.title) like lower(concat('%', :searchTerm, '%'))")
|
||||||
|
List<MediaFile> search(@Param("searchTerm") String searchTerm);
|
||||||
|
|
||||||
|
List<MediaFile> findByShouldDownload(Boolean shouldDownload);
|
||||||
|
|
||||||
|
List<MediaFile> findByReview(Boolean review);
|
||||||
|
|
||||||
|
List<MediaFile> findByReviewAndShouldDownload(Boolean review, Boolean shouldDownload);
|
||||||
|
|
||||||
|
@Query("select m from MediaFile m " +
|
||||||
|
"where lower(m.url) like lower(concat('%', :searchTerm, '%')) or lower(m.title) like lower(concat('%', :searchTerm, '%')) " +
|
||||||
|
"AND m.review=:review AND m.shouldDownload=:download")
|
||||||
|
List<MediaFile> search(
|
||||||
|
@Param("searchTerm") String searchTerm,
|
||||||
|
@Param("review") boolean searchReview,
|
||||||
|
@Param("download") boolean searchDownload);
|
||||||
|
}
|
||||||
+3
-1
@@ -1,9 +1,11 @@
|
|||||||
package de.thpeetz.kontor.media.data;
|
package de.thpeetz.kontor.media.repository;
|
||||||
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.query.Param;
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.data.MediaVideo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface MediaVideoRepository extends JpaRepository<MediaVideo, String> {
|
public interface MediaVideoRepository extends JpaRepository<MediaVideo, String> {
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
package de.thpeetz.kontor.media.services;
|
package de.thpeetz.kontor.media.services;
|
||||||
|
|
||||||
import de.thpeetz.kontor.media.data.MediaArticle;
|
import de.thpeetz.kontor.media.data.MediaArticle;
|
||||||
import de.thpeetz.kontor.media.data.MediaArticleRepository;
|
import de.thpeetz.kontor.media.repository.MediaArticleRepository;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,19 @@
|
|||||||
package de.thpeetz.kontor.media.services;
|
package de.thpeetz.kontor.media.services;
|
||||||
|
|
||||||
import de.thpeetz.kontor.media.data.*;
|
import de.thpeetz.kontor.common.views.SearchFilter;
|
||||||
|
import de.thpeetz.kontor.media.data.MediaActor;
|
||||||
|
import de.thpeetz.kontor.media.data.MediaActorFile;
|
||||||
|
import de.thpeetz.kontor.media.data.MediaFile;
|
||||||
|
import de.thpeetz.kontor.media.repository.MediaActorFileRepository;
|
||||||
|
import de.thpeetz.kontor.media.repository.MediaActorRepository;
|
||||||
|
import de.thpeetz.kontor.media.repository.MediaFileRepository;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class MediaFileService {
|
public class MediaFileService {
|
||||||
@@ -20,7 +28,7 @@ public class MediaFileService {
|
|||||||
this.mediaActorFileRepository = mediaActorFileRepository;
|
this.mediaActorFileRepository = mediaActorFileRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MediaFile> findAllMediaFiles(String stringFilter) {
|
public List<MediaFile> findAllMediaFilesByString(String stringFilter) {
|
||||||
List<MediaFile> results;
|
List<MediaFile> results;
|
||||||
if (stringFilter == null || stringFilter.isEmpty()) {
|
if (stringFilter == null || stringFilter.isEmpty()) {
|
||||||
results = mediaFileRepository.findAll();
|
results = mediaFileRepository.findAll();
|
||||||
@@ -31,6 +39,42 @@ public class MediaFileService {
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<MediaFile> findAllMediaFiles(SearchFilter searchFilter) {
|
||||||
|
if (searchFilter == null) {
|
||||||
|
return mediaFileRepository.findAll();
|
||||||
|
} else {
|
||||||
|
if (searchFilter.getSearchTerm() != null && searchFilter.getFilterOptions().isEmpty()) {
|
||||||
|
log.info("find MediaFiles by using searchTerm: {}", searchFilter.getSearchTerm());
|
||||||
|
List<MediaFile> results = mediaFileRepository.search(searchFilter.getSearchTerm());
|
||||||
|
log.info("found {} entries", results.size());
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
if (searchFilter.getFilterOptions().size() == 1) {
|
||||||
|
log.info("using searchFilter: {}", searchFilter);
|
||||||
|
String filter = searchFilter.getFilterOptions().get(0).getName();
|
||||||
|
Boolean filterValue = searchFilter.getFilterOptions().get(0).getValue();
|
||||||
|
if (filter == "Überprüfung") {
|
||||||
|
List<MediaFile> results = mediaFileRepository.findByReview(filterValue);
|
||||||
|
log.info("found {} entries", results.size());
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
if (filter == "Download") {
|
||||||
|
List<MediaFile> results = mediaFileRepository.findByShouldDownload(filterValue);
|
||||||
|
log.info("found {} entries", results.size());
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (searchFilter.getFilterOptions().size() == 2) {
|
||||||
|
log.info("using searchFilter: {}", searchFilter);
|
||||||
|
List<MediaFile> results = mediaFileRepository.search(searchFilter.getSearchTerm(), searchFilter.getFilterOptions().get(0).getValue(), searchFilter.getFilterOptions().get(1).getValue());
|
||||||
|
log.info("found {} entries", results.size());
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.info("noch filter used");
|
||||||
|
return mediaFileRepository.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
public void saveMediaFile(MediaFile mediaFile) {
|
public void saveMediaFile(MediaFile mediaFile) {
|
||||||
if (mediaFile == null) {
|
if (mediaFile == null) {
|
||||||
log.warn("MediaFile is null. Are you sure you have connected your form to the application?");
|
log.warn("MediaFile is null. Are you sure you have connected your form to the application?");
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package de.thpeetz.kontor.media.services;
|
package de.thpeetz.kontor.media.services;
|
||||||
|
|
||||||
import de.thpeetz.kontor.media.data.MediaVideo;
|
import de.thpeetz.kontor.media.data.MediaVideo;
|
||||||
import de.thpeetz.kontor.media.data.MediaVideoRepository;
|
import de.thpeetz.kontor.media.repository.MediaVideoRepository;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|||||||
@@ -3,21 +3,13 @@ package de.thpeetz.kontor.media.views;
|
|||||||
import com.vaadin.flow.component.Component;
|
import com.vaadin.flow.component.Component;
|
||||||
import com.vaadin.flow.component.button.Button;
|
import com.vaadin.flow.component.button.Button;
|
||||||
import com.vaadin.flow.component.button.ButtonVariant;
|
import com.vaadin.flow.component.button.ButtonVariant;
|
||||||
import com.vaadin.flow.component.contextmenu.ContextMenu;
|
|
||||||
import com.vaadin.flow.component.contextmenu.MenuItem;
|
|
||||||
import com.vaadin.flow.component.grid.Grid;
|
import com.vaadin.flow.component.grid.Grid;
|
||||||
import com.vaadin.flow.component.icon.Icon;
|
|
||||||
import com.vaadin.flow.component.icon.VaadinIcon;
|
|
||||||
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
import com.vaadin.flow.component.textfield.TextField;
|
|
||||||
import com.vaadin.flow.data.value.ValueChangeMode;
|
|
||||||
import com.vaadin.flow.router.PageTitle;
|
import com.vaadin.flow.router.PageTitle;
|
||||||
import com.vaadin.flow.router.Route;
|
import com.vaadin.flow.router.Route;
|
||||||
import com.vaadin.flow.spring.annotation.SpringComponent;
|
import com.vaadin.flow.spring.annotation.SpringComponent;
|
||||||
import de.thpeetz.kontor.common.views.ColumnToggleContextMenu;
|
import de.thpeetz.kontor.common.views.*;
|
||||||
import de.thpeetz.kontor.common.views.MainLayout;
|
|
||||||
import de.thpeetz.kontor.common.views.StatusIcon;
|
|
||||||
import de.thpeetz.kontor.media.data.MediaFile;
|
import de.thpeetz.kontor.media.data.MediaFile;
|
||||||
import de.thpeetz.kontor.media.services.MediaFileService;
|
import de.thpeetz.kontor.media.services.MediaFileService;
|
||||||
import jakarta.annotation.security.RolesAllowed;
|
import jakarta.annotation.security.RolesAllowed;
|
||||||
@@ -53,7 +45,7 @@ public class MediaFileView extends VerticalLayout {
|
|||||||
setHeader("Überprüfung").setWidth("6rem").setSortable(true);
|
setHeader("Überprüfung").setWidth("6rem").setSortable(true);
|
||||||
Grid.Column<MediaFile> shouldDownloadColumn = grid.addComponentColumn(mediafile -> StatusIcon.create(mediafile.isShouldDownload())).
|
Grid.Column<MediaFile> shouldDownloadColumn = grid.addComponentColumn(mediafile -> StatusIcon.create(mediafile.isShouldDownload())).
|
||||||
setHeader("Download?").setWidth("6rem").setSortable(true);
|
setHeader("Download?").setWidth("6rem").setSortable(true);
|
||||||
TextField searchField = new TextField();
|
SearchFilterField searchFilterField = new SearchFilterField();
|
||||||
@Getter
|
@Getter
|
||||||
MediaFileForm form;
|
MediaFileForm form;
|
||||||
MediaFileService service;
|
MediaFileService service;
|
||||||
@@ -108,11 +100,9 @@ public class MediaFileView extends VerticalLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private HorizontalLayout getToolbar() {
|
private HorizontalLayout getToolbar() {
|
||||||
searchField.setPlaceholder("Search");
|
searchFilterField.addFilter("Überprüfung");
|
||||||
searchField.setClearButtonVisible(true);
|
searchFilterField.addFilter("Download");
|
||||||
searchField.setPrefixComponent(new Icon(VaadinIcon.SEARCH));
|
searchFilterField.addValueChangeListener(e -> updateList());
|
||||||
searchField.setValueChangeMode(ValueChangeMode.EAGER);
|
|
||||||
searchField.addValueChangeListener(e -> updateList());
|
|
||||||
|
|
||||||
Button addMediaFileButton = new Button("Add MediaFile");
|
Button addMediaFileButton = new Button("Add MediaFile");
|
||||||
addMediaFileButton.addClickListener(click -> addMediaFile());
|
addMediaFileButton.addClickListener(click -> addMediaFile());
|
||||||
@@ -129,7 +119,7 @@ public class MediaFileView extends VerticalLayout {
|
|||||||
columnToggleContextMenu.addColumnToggleItem(cloudLinkColumn);
|
columnToggleContextMenu.addColumnToggleItem(cloudLinkColumn);
|
||||||
columnToggleContextMenu.addColumnToggleItem(reviewColumn);
|
columnToggleContextMenu.addColumnToggleItem(reviewColumn);
|
||||||
columnToggleContextMenu.addColumnToggleItem(shouldDownloadColumn);
|
columnToggleContextMenu.addColumnToggleItem(shouldDownloadColumn);
|
||||||
HorizontalLayout toolbar = new HorizontalLayout(searchField, addMediaFileButton, menuButton);
|
HorizontalLayout toolbar = new HorizontalLayout(searchFilterField, addMediaFileButton, menuButton);
|
||||||
toolbar.addClassName("toolbar");
|
toolbar.addClassName("toolbar");
|
||||||
return toolbar;
|
return toolbar;
|
||||||
}
|
}
|
||||||
@@ -162,6 +152,7 @@ public class MediaFileView extends VerticalLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updateList() {
|
public void updateList() {
|
||||||
grid.setItems(service.findAllMediaFiles(searchField.getValue()));
|
log.info("searchFilterField: {}", searchFilterField.getValue());
|
||||||
|
grid.setItems(service.findAllMediaFiles(searchFilterField.getValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package de.thpeetz.kontor.media.data;
|
package de.thpeetz.kontor.media.data;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.repository.MediaArticleRepository;
|
||||||
import de.thpeetz.kontor.media.services.MediaArticleService;
|
import de.thpeetz.kontor.media.services.MediaArticleService;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.repository.MediaFileRepository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
import de.thpeetz.kontor.media.repository.MediaVideoRepository;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user