package com.badoo.unittest;
import android.support.annotation.NonNull;
import com.badoo.chateau.example.data.model.ExampleConversation;
import com.badoo.chateau.example.data.model.ExampleUser;
import com.badoo.chateau.example.data.util.ParseUtils;
import com.parse.ParseObject;
import com.parse.ParseUser;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class ModelTestHelper {
public static List<ExampleUser> createUsers(int count) {
final List<ExampleUser> users = new ArrayList<>(count);
for (int i = 0; i < count; i++) {
users.add(new ExampleUser(Integer.toString(i), "User" + i));
}
return users;
}
public static List<ParseUser> createParseUsers(int count) {
List<ParseUser> users = new ArrayList<>(count);
for (int i = 0; i < count; i++) {
users.add(createParseUser(Integer.toString(i)));
}
return users;
}
public static ParseUser createParseUser(String id) {
ParseUser user = mock(ParseUser.class);
when(user.getUsername()).thenReturn(id);
when(user.getObjectId()).thenReturn(id);
when(user.getString(ParseUtils.UsersTable.Fields.DISPLAY_NAME)).thenReturn(id);
return user;
}
public static List<ExampleConversation> createConversations(int count) {
final List<ExampleConversation> conversations = new ArrayList<>();
for (int i = 0; i < count; i++) {
conversations.add(new ExampleConversation(Integer.toString(i)
, "Convo" + i, Collections.emptyList(), null, 0));
}
return conversations;
}
public static List<ParseObject> createSubscriptions(int count) {
final List<ParseObject> subscriptions = new ArrayList<>(count);
for (int i = 0; i < count; i++) {
subscriptions.add(createSubscription(Integer.toString(i)));
}
return subscriptions;
}
public static ParseObject createSubscription(@NonNull String id) {
final ParseObject subscription = mock(ParseObject.class);
when(subscription.getObjectId()).thenReturn(id);
final ParseObject chat = mock(ParseObject.class);
when(subscription.getParseObject(ParseUtils.ChatSubscriptionTable.Fields.CHAT)).thenReturn(chat);
when(chat.isDataAvailable()).thenReturn(false);
return subscription;
}
}