package es.usc.citius.servando.calendula.activities;
import android.content.Intent;
import android.support.test.InstrumentationRegistry;
import android.test.ActivityInstrumentationTestCase2;
import org.junit.Before;
import org.junit.Test;
import es.usc.citius.servando.calendula.CalendulaApp;
import es.usc.citius.servando.calendula.R;
import es.usc.citius.servando.calendula.database.DB;
import es.usc.citius.servando.calendula.persistence.Medicine;
import es.usc.citius.servando.calendula.persistence.Presentation;
import es.usc.citius.servando.calendula.util.TestUtils;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.clearText;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
public class MedicinesActivityEditTest extends ActivityInstrumentationTestCase2<MedicinesActivity> {
public static final String NAME_BEFORE_EDIT = "Aspirin";
public static final String NAME_AFTER_EDIT = "Paracetamol";
private MedicinesActivity mActivity;
public MedicinesActivityEditTest() {
super(MedicinesActivity.class);
}
@Before
public void setUp() throws Exception {
super.setUp();
CalendulaApp.disableReceivers = true;
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
DB.init(getInstrumentation().getContext());
DB.dropAndCreateDatabase();
// create medicine
Medicine created = new Medicine(NAME_BEFORE_EDIT, Presentation.EFFERVESCENT);
created.save();
// set edit intent
Intent i = new Intent();
i.putExtra(CalendulaApp.INTENT_EXTRA_MEDICINE_ID, created.getId());
setActivityIntent(i);
mActivity = getActivity();
}
@Test
public void testActivityCreated() {
assertNotNull(mActivity);
}
@Test
public void testEditMedicine() {
assertEquals(1, DB.medicines().count());
assertEquals(NAME_BEFORE_EDIT, DB.medicines().findAll().get(0).name());
// type name
onView(withId(R.id.medicine_edit_name))
.perform(clearText())
.perform(typeText(NAME_AFTER_EDIT));
// close Soft Keyboard
TestUtils.closeKeyboard();
// select capsules presentation
onView(withId(R.id.med_presentation_2))
.perform(click());
// click save
onView(withId(R.id.add_button))
.perform(click());
// find edited med and do assertions
Medicine m = DB.medicines().findOneBy(Medicine.COLUMN_NAME, NAME_AFTER_EDIT);
assertEquals(1, DB.medicines().count());
assertNotNull(m);
assertEquals(NAME_AFTER_EDIT, m.name());
assertEquals(Presentation.CAPSULES, m.presentation());
}
}