@Test public void searchText_escape_special_characters_in_like() { UserQuery query = UserQuery.builder().searchText("%sim_").build(); assertThat(query.searchText()).isEqualTo("%sim_"); assertThat(query.searchTextSql).isEqualTo("%/%sim/_%"); } }
@Test public void searchText() { UserQuery query = UserQuery.builder().searchText("sim").build(); assertThat(query.searchText()).isEqualTo("sim"); assertThat(query.searchTextSql).isEqualTo("%sim%"); }
@Test public void selectUsersByQuery_escape_special_characters_in_like() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof")); UserQuery query = UserQuery.builder().searchText("%s%").build(); // we expect really a login or name containing the 3 characters "%s%" List<UserDto> users = underTest.selectUsers(session, query); assertThat(users).isEmpty(); }
@Test public void selectUsersByQuery_search_by_name_text() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof")); List<UserDto> users = underTest.selectUsers(session, UserQuery.builder().searchText("Simon").build()); assertThat(users).extracting(UserDto::getLogin).containsExactlyInAnyOrder("sbrandhof"); }
@Test public void selectUsersByQuery_search_by_login_text() { db.users().insertUser(user -> user.setLogin("user").setName("User")); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof")); List<UserDto> users = underTest.selectUsers(session, UserQuery.builder().searchText("sbr").build()); assertThat(users).extracting(UserDto::getLogin).containsExactlyInAnyOrder("sbrandhof"); }