package me.moodcat.backend;
import java.math.BigInteger;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import me.moodcat.api.models.ChatMessageModel;
import me.moodcat.database.embeddables.VAVector;
import me.moodcat.database.entities.Artist;
import me.moodcat.database.entities.Room;
import me.moodcat.database.entities.Song;
import me.moodcat.database.entities.User;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
/**
* Abstract {@code BackendTest} for some shared logic for testing backends.
*/
public abstract class BackendTest {
protected static final Random random = new Random();
protected static User createUser() {
User user = new User();
user.setId(random.nextInt());
user.setName(randomString());
return user;
}
protected static ChatMessageModel createChatMessage(final User user) {
final ChatMessageModel chatMessage = new ChatMessageModel();
chatMessage.setMessage(randomString());
chatMessage.setTimestamp(System.currentTimeMillis());
return chatMessage;
}
protected static Room createRoom(final Song song) {
final Room room = new Room();
room.setId(random.nextInt());
room.setCurrentSong(song);
room.setChatMessages(Sets.newHashSet());
room.setPlayQueue(Lists.newLinkedList());
room.setPlayHistory(Lists.newArrayList());
room.setVaVector(VAVector.createRandomVector());
return room;
}
protected static Song createSong() {
return createSong(random.nextInt());
}
protected static Song createSong(final int id) {
final Song song = new Song();
final Artist artist = new Artist();
artist.setId(id);
artist.setName(randomString());
song.setId(id);
song.setArtist(artist);
song.setName(randomString());
song.setArtworkUrl(randomString());
song.setDuration((int) (Math.round(Math.random() + 0.5) * TimeUnit.MINUTES.toMillis(5)));
song.setValenceArousal(VAVector.createRandomVector());
return song;
}
protected static String randomString() {
return new BigInteger(130, random).toString(32);
}
}