/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at
* src/com/vodafone360/people/VODAFONE.LICENSE.txt or
* http://github.com/360/360-Engine-for-Android
* See the License for the specific language governing permissions and
* limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each file and
* include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the fields
* enclosed by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved.
* Use is subject to license terms.
*/
package com.vodafone360.people.tests.engine.presence;
import android.test.ApplicationTestCase;
import com.vodafone360.people.MainApplication;
import com.vodafone360.people.database.DatabaseHelper;
import com.vodafone360.people.datatypes.ChatMessage;
import com.vodafone360.people.engine.presence.ChatDbUtils;
import com.vodafone360.people.engine.presence.NetworkPresence.SocialNetwork;
/***
* Tests for the ChatDbUtils class.
*/
public class ChatDbUtilsTest extends ApplicationTestCase<MainApplication> {
/** Test network ID value, which should never be returned by the code. **/
private static final int NETWORK_ID = -2;
/** Test local contact ID value, which can be returned by the code. **/
private static final Long LOCAL_CONTACT_ID = -1L;
/** Reference to database. **/
private DatabaseHelper mDatabaseHelper;
/***
* Constructor.
*/
public ChatDbUtilsTest() {
super(MainApplication.class);
}
/***
* Set up the DatabaseHelper.
*/
public final void setUp() {
createApplication();
MainApplication mainApplication = getApplication();
if (mainApplication == null) {
throw(new RuntimeException("ChatDbUtilsTest.setUp() "
+ "Unable to create main application"));
}
mDatabaseHelper = mainApplication.getDatabase();
}
/***
* Close the DatabaseHelper.
*/
public final void tearDown() {
mDatabaseHelper.getReadableDatabase().close();
}
/***
* JUnit test for the ChatDbUtils.convertUserIds() method.
*
* @see com.vodafone360.people.tests.engine.presence.ChatDbUtils
* #convertUserIds(ChatMessage msg, DatabaseHelper databaseHelper)
*/
public final void testConvertUserIds() {
/** SNS test. **/
testConvertUserId(
"facebook.com::123456", NETWORK_ID, LOCAL_CONTACT_ID,
"123456", SocialNetwork.FACEBOOK_COM, -1L);
testConvertUserId(
"hyves.nl::123456", NETWORK_ID, LOCAL_CONTACT_ID,
"123456", SocialNetwork.HYVES_NL, -1L);
testConvertUserId(
"google::123456", NETWORK_ID, LOCAL_CONTACT_ID,
"123456", SocialNetwork.GOOGLE, -1L);
testConvertUserId(
"microsoft::123456", NETWORK_ID, LOCAL_CONTACT_ID,
"123456", SocialNetwork.MICROSOFT, -1L);
/** Parsing test. **/
testConvertUserId(
"facebook.com::123456", NETWORK_ID, LOCAL_CONTACT_ID,
"123456", SocialNetwork.FACEBOOK_COM, -1L);
testConvertUserId(
"facebook_com::", NETWORK_ID, LOCAL_CONTACT_ID,
"", SocialNetwork.FACEBOOK_COM, -1L);
/** Issue seen in PAND-2356. **/
testConvertUserId(
"facebook_com::-100001020578165@chat.facebook.com",
NETWORK_ID, LOCAL_CONTACT_ID,
"-100001020578165@chat.facebook.com",
SocialNetwork.FACEBOOK_COM, -1L);
/** Issue seen in PAND-2408. **/
testConvertUserId(
"google::cassandra21love@googlemail.com",
NETWORK_ID, LOCAL_CONTACT_ID,
"cassandra21love@googlemail.com", SocialNetwork.GOOGLE,
-1L);
/** Invalid tests. **/
testConvertUserId(
"unknown_network::123456", NETWORK_ID, LOCAL_CONTACT_ID,
"123456", SocialNetwork.INVALID, -1L);
testConvertUserId(
"::123456", NETWORK_ID, LOCAL_CONTACT_ID,
"123456", SocialNetwork.INVALID, -1L);
testConvertUserId(
"unknown_network::", NETWORK_ID, LOCAL_CONTACT_ID,
"", SocialNetwork.INVALID, -1L);
testConvertUserId(
"::", NETWORK_ID, LOCAL_CONTACT_ID,
"", SocialNetwork.INVALID, -1L);
}
/***
* Test ChatDbUtils.convertUserIds() method with a given parameter
* combination.
*
* @param userId User ID.
* @param networkId Network ID.
* @param localContactId Local Contact ID.
* @param expectedUserId Expected User ID.
* @param expectedNetwork Expected Network ID.
* @param expectedLocalContactId Expected Local Contact ID.
*/
private void testConvertUserId(final String userId,
final int networkId, final Long localContactId,
final String expectedUserId,
final SocialNetwork expectedNetwork,
final Long expectedLocalContactId) {
ChatMessage chatMessage = new ChatMessage();
chatMessage.setUserId(userId);
chatMessage.setNetworkId(networkId);
chatMessage.setLocalContactId(localContactId);
ChatDbUtils.convertUserIds(chatMessage, mDatabaseHelper);
assertEquals("ChatDbUtilsTest.checkChatMessage() Unexpected user ID",
expectedUserId, chatMessage.getUserId());
assertEquals("ChatDbUtilsTest.checkChatMessage() Unexpected network ID ["
+ expectedNetwork + "]",
expectedNetwork.ordinal(), chatMessage.getNetworkId());
assertEquals("ChatDbUtilsTest.checkChatMessage() Unexpected local contact ID",
expectedLocalContactId, chatMessage.getLocalContactId());
}
}