package com.querydsl.example.sql.repository;
import com.querydsl.example.sql.model.Tweet;
import com.querydsl.example.sql.model.User;
import org.junit.Before;
import org.junit.Test;
import javax.inject.Inject;
import static com.querydsl.example.sql.model.QTweet.tweet;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
public class TweetRepositoryTest extends AbstractPersistenceTest {
@Inject
private TweetRepository repository;
@Inject
private UserRepository userRepository;
private Long posterId;
@Before
public void setUp() {
User poster = new User();
poster.setUsername("dr_frank");
posterId = userRepository.save(poster);
}
@Test
public void save_and_find_by_id() {
String content = "I am alive! #YOLO";
Tweet tweet = new Tweet();
tweet.setContent(content);
tweet.setPosterId(posterId);
Long id = repository.save(tweet);
assertEquals(content, repository.findById(id).getContent());
}
@Test
public void save_and_find_by_username() {
String content = "I am alive! #YOLO";
Tweet tweet = new Tweet();
tweet.setContent(content);
tweet.setPosterId(posterId);
repository.save(tweet);
assertFalse(repository.findOfUser("dr_frank").isEmpty());
}
@Test
public void save_with_mentions() {
User other = new User();
other.setUsername("dexter");
Long otherId = userRepository.save(other);
String content = "I am alive! #YOLO";
Tweet tweet = new Tweet();
tweet.setContent(content);
tweet.setPosterId(posterId);
Long tweetId = repository.save(tweet, otherId);
assertEquals(tweetId, repository.findWithMentioned(otherId).get(0).getId());
}
@Test
public void find_list_by_predicate() {
Tweet tw1 = new Tweet();
tw1.setPosterId(posterId);
tw1.setContent("It is a alive! #YOLO");
repository.save(tw1);
Tweet tw2 = new Tweet();
tw2.setPosterId(posterId);
tw2.setContent("Oh the humanity!");
repository.save(tw2);
Tweet tw3 = new Tweet();
tw3.setPosterId(posterId);
tw3.setContent("#EpicFail");
repository.save(tw3);
assertEquals(1, repository.findAll(tweet.content.contains("#YOLO")).size());
}
}