/**
* Copyright (c) 2013, Sana
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Sana nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL Sana BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.sana.android.db.impl.test;
import java.util.UUID;
import org.sana.R;
import org.sana.android.db.DatabaseOpenHelper;
import org.sana.android.db.TableHelper;
import org.sana.android.db.impl.ConceptsHelper;
import org.sana.android.db.impl.DatabaseOpenHelperImpl;
import org.sana.android.db.impl.EncounterTasksHelper;
import org.sana.android.db.impl.EncountersHelper;
import org.sana.android.db.impl.EventsHelper;
import org.sana.android.db.impl.InstructionsHelper;
import org.sana.android.db.impl.ModelContentProviderImpl;
import org.sana.android.db.impl.NotificationsHelper;
import org.sana.android.db.impl.ObservationsHelper;
import org.sana.android.db.impl.ObserversHelper;
import org.sana.android.db.impl.ProceduresHelper;
import org.sana.android.db.impl.SubjectsHelper;
import org.sana.android.provider.Concepts;
import org.sana.android.provider.EncounterTasks;
import org.sana.android.provider.Encounters;
import org.sana.android.provider.Events;
import org.sana.android.provider.Instructions;
import org.sana.android.provider.Notifications;
import org.sana.android.provider.Observations;
import org.sana.android.provider.Observers;
import org.sana.android.provider.Procedures;
import org.sana.android.provider.Subjects;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.test.ProviderTestCase2;
import android.test.mock.MockContentResolver;
import android.test.mock.MockContext;
import android.util.Log;
/**
* Handles the test for the ModelContentProvdierImpl class.
*
* @author Sana Development
*
*/
public class ModelContentProviderImplTest extends
ProviderTestCase2<ModelContentProviderImpl>
{
public static final String TAG = ModelContentProviderImplTest.class
.getSimpleName();
MockContentResolver mMockResolver;
SQLiteDatabase mDb;
TableHelper<?> mHelper;
DatabaseOpenHelper mOpener = null;
MockContext mContext;
/**
*
*/
public ModelContentProviderImplTest() {
super(ModelContentProviderImpl.class, ModelContentProviderImpl.AUTHORITY);
}
@Override
protected void setUp() throws Exception{
// Calls the base class implementation of this method.
super.setUp();
// Gets the resolver for this test.
mMockResolver = getMockContentResolver();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
for(String name: getContext().databaseList()){
getContext().deleteDatabase(name);
}
}
/**
* TEst directly against the SQL CREATE statements in the helpers.
*/
public void testTableHelperOnCreate(){
String name = getContext().getString(R.string.db_name);//DATABASE;
int version = getContext().getResources().getInteger(R.integer.cfg_db_version_value);
SQLiteDatabase db = getContext().openOrCreateDatabase(name, 0, null);
// Concept table
db.execSQL(ConceptsHelper.getInstance().onCreate());
// Encounter table
db.execSQL(EncountersHelper.getInstance().onCreate());
// Events table
db.execSQL(EventsHelper.getInstance().onCreate());
// Instructions table
db.execSQL(InstructionsHelper.getInstance().onCreate());
// Notification table
db.execSQL(NotificationsHelper.getInstance().onCreate());
// Observation table
db.execSQL(ObservationsHelper.getInstance().onCreate());
// Observer table
db.execSQL(ObserversHelper.getInstance().onCreate());
// Procedure table
db.execSQL(ProceduresHelper.getInstance().onCreate());
// Subject table
db.execSQL(SubjectsHelper.getInstance().onCreate());
// Subject table
db.execSQL(EncounterTasksHelper.getInstance().onCreate());
db.close();
}
/**
* Tests DatabaseOpenHelperImpl onCreate(SQLiteDatabase) directly
*/
public void testProvideronCreate(){
String name = getContext().getString(R.string.db_name);//DATABASE;
int version = getContext().getResources().getInteger(R.integer.cfg_db_version_value);
mOpener = new DatabaseOpenHelperImpl(getContext(),name, version);
SQLiteDatabase db = getContext().openOrCreateDatabase(name, 0, null);
mOpener.onCreate(db);
mOpener.close();
}
/**
* Tests DatabaseOpenHelperImpl
*/
public void testDatabaseOpenHelperCreateOnGetReadable(){
String name = getContext().getString(R.string.db_name);//DATABASE;
int version = getContext().getResources().getInteger(R.integer.cfg_db_version_value);
mOpener = new DatabaseOpenHelperImpl(getContext(),name, version);
// this should invoke the onCreate method
mOpener.getReadableDatabase();
mOpener.close();
}
/**
* Tests DatabaseOpenHelperImpl
*/
public void testDatabaseOpenHelperCreateOnGetWritable(){
String name = getContext().getString(R.string.db_name);//DATABASE;
int version = getContext().getResources().getInteger(R.integer.cfg_db_version_value);
mOpener = new DatabaseOpenHelperImpl(getContext(),name, version);
// this should invoke the onCreate method
mOpener.getWritableDatabase();
mOpener.close();
}
/**
* test getType() method
*/
public void testDatabaseGetType(){
Uri uri;
String uuid = UUID.randomUUID().toString();
// Concepts
// DIR type
uri = Concepts.CONTENT_URI;
assertEquals(Concepts.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Concepts.CONTENT_URI, "1");
assertEquals(Concepts.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Concepts.CONTENT_URI, uuid.toString());
assertEquals(Concepts.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Encounters
// DIR type
uri = Encounters.CONTENT_URI;
assertEquals(Encounters.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Encounters.CONTENT_URI, "1");
assertEquals(Encounters.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Encounters.CONTENT_URI, uuid);
assertEquals(Encounters.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Events
// DIR type
uri = Events.CONTENT_URI;
assertEquals(Events.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Events.CONTENT_URI, "1");
assertEquals(Events.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Events.CONTENT_URI, uuid);
assertEquals(Events.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Instructions
// DIR type
uri = Instructions.CONTENT_URI;
assertEquals(Instructions.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Instructions.CONTENT_URI, "1");
assertEquals(Instructions.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Instructions.CONTENT_URI, uuid);
assertEquals(Instructions.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Notifications
// DIR type
uri = Notifications.CONTENT_URI;
assertEquals(Notifications.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Notifications.CONTENT_URI, "1");
assertEquals(Notifications.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Notifications.CONTENT_URI, uuid);
assertEquals(Notifications.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Observers
// DIR type
uri = Observers.CONTENT_URI;
assertEquals(Observers.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Observers.CONTENT_URI, "1");
assertEquals(Observers.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Observers.CONTENT_URI, uuid);
assertEquals(Observers.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Observations
uri = Observations.CONTENT_URI;
assertEquals(Observations.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Observations.CONTENT_URI, "1");
assertEquals(Observations.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Observations.CONTENT_URI, uuid);
assertEquals(Observations.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Procedures
// DIR type
uri = Procedures.CONTENT_URI;
assertEquals(Procedures.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Procedures.CONTENT_URI, "1");
assertEquals(Procedures.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Procedures.CONTENT_URI, uuid);
assertEquals(Procedures.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// Subjects
// DIR type
uri = Subjects.CONTENT_URI;
assertEquals(Subjects.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(Subjects.CONTENT_URI, "1");
assertEquals(Subjects.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(Subjects.CONTENT_URI, uuid);
assertEquals(Subjects.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// EncounterTasks
// DIR type
uri = EncounterTasks.CONTENT_URI;
assertEquals(EncounterTasks.CONTENT_TYPE, mMockResolver.getType(uri));
// ITEM type
uri = Uri.withAppendedPath(EncounterTasks.CONTENT_URI, "1");
assertEquals(EncounterTasks.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
// ITEM type from UUID
uri = Uri.withAppendedPath(EncounterTasks.CONTENT_URI, uuid);
assertEquals(EncounterTasks.CONTENT_ITEM_TYPE, mMockResolver.getType(uri));
}
}