package com.rapidftr; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Provides; import com.google.inject.util.Modules; import com.rapidftr.database.DatabaseHelper; import com.rapidftr.database.ShadowSQLiteHelper; import com.rapidftr.forms.FormField; import com.rapidftr.forms.FormSection; import com.rapidftr.model.User; import com.rapidftr.utils.ApplicationInjector; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.junit.runners.model.InitializationError; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.bytecode.Setup; import java.security.Security; import java.util.Arrays; import java.util.HashMap; import java.util.List; public class CustomTestRunner extends RobolectricTestRunner { public static List<FormSection> formSectionSeed = Arrays.asList( new FormSection(new HashMap<String, String>() {{ put("en", "Section 1"); }}, 1, true, new HashMap<String, String>() {{ put("en", "Section Help 1"); }}, Arrays.asList( new FormField("f1", null, false, true, "text_field", new HashMap<String, String>() {{ put("en", "Field 1"); }}, new HashMap<String, String>() {{ put("en", "Help 1"); }}, null, null), new FormField("f2", null, false, true, "textarea", new HashMap<String, String>() {{ put("en", "Field 2"); }}, new HashMap<String, String>() {{ put("en", "Help 2"); }}, null, null), new FormField("f3", null, false, true, "numeric_field", new HashMap<String, String>() {{ put("en", "Field 3"); }}, new HashMap<String, String>() {{ put("en", "Help 3"); }}, null, null) )), new FormSection(new HashMap<String, String>() {{ put("en", "Section 2"); }}, 1, true, new HashMap<String, String>() {{ put("en", "Section Help 2"); }}, Arrays.asList( new FormField("f4", null, false, true, "radio_button", new HashMap<String, String>() {{ put("en", "Field 4"); }}, new HashMap<String, String>() {{ put("en", "Help 4"); }}, new HashMap<String, List<String>>() {{ put("en", Arrays.asList("radio1", "radio2", "radio3")); }}, null), new FormField("f5", null, false, true, "check_boxes", new HashMap<String, String>() {{ put("en", "Field 5"); }}, new HashMap<String, String>() {{ put("en", "Help 5"); }}, new HashMap<String, List<String>>() {{ put("en", Arrays.asList("check1", "check2", "check3")); }}, null), new FormField("f6", null, false, true, "date_field", new HashMap<String, String>() {{ put("en", "Field 6"); }}, new HashMap<String, String>() {{ put("en", "Help 6"); }}, null, null) )) ); public static class TestInjector extends AbstractModule { @Override protected void configure() { } @Provides public DatabaseHelper getDatabaseHelper() { return ShadowSQLiteHelper.getInstance(); } } public static Injector INJECTOR = Guice.createInjector(Modules.override(new ApplicationInjector()).with(new TestInjector())); public CustomTestRunner(Class<?> testClass) throws InitializationError { super(testClass); MockitoAnnotations.initMocks(testClass); Security.addProvider(new BouncyCastleProvider()); } private static long userId = 0; public static User createUser() { return createUser("user" + (++userId)); } public static User createUser(String userName) { return new User(userName, "testPassword", true, "localhost:3000", "testDbKey", "Test Organisation", "Test Name", "testPassword", "en"); } }