diff --git a/store2store/src/androidTest/java/com/playmoweb/store2store/ExampleInstrumentedTest.java b/store2store/src/androidTest/java/com/playmoweb/store2store/ExampleInstrumentedTest.java
deleted file mode 100644
index 47c900d..0000000
--- a/store2store/src/androidTest/java/com/playmoweb/store2store/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.playmoweb.store2store;
-
-import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumentation test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("com.playmoweb.store2store.test", appContext.getPackageName());
- }
-}
diff --git a/store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryDao.java b/store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryDao.java
new file mode 100644
index 0000000..3f63c77
--- /dev/null
+++ b/store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryDao.java
@@ -0,0 +1,112 @@
+package com.playmoweb.store2store.mock;
+
+import com.playmoweb.store2store.dao.api.IDao;
+import com.playmoweb.store2store.utils.Filter;
+import com.playmoweb.store2store.utils.SortingMode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import rx.Observable;
+
+/**
+ * Memory dao for tests purposes
+ *
+ * @warning This class is not tested !
+ *
+ * @author Thibaud Giovannetti
+ * @by Playmoweb
+ * @date 28/02/2017
+ */
+public class MemoryDao implements IDao {
+ private List models = new ArrayList<>();
+
+ @Override
+ public Observable> getAll(Filter filter, SortingMode sortingMode) {
+ return Observable.just(models);
+ }
+
+ @Override
+ public Observable getOne(Filter filter, SortingMode sortingMode) {
+ return Observable.just(models.get(0));
+ }
+
+ @Override
+ public Observable getById(String id) {
+ int integerId = Integer.valueOf(id);
+ TestModel t = null;
+ for(TestModel tm : models) {
+ if(tm.getId() == integerId) {
+ t = tm;
+ break;
+ }
+ }
+ return Observable.just(t);
+ }
+
+ @Override
+ public Observable insertOrUpdate(TestModel object) {
+ return Observable.just(insertObjectOrUpdate(object));
+ }
+
+ @Override
+ public Observable> insertOrUpdate(List items) {
+ List output = new ArrayList<>(items.size());
+
+ for(int i = 0; i < items.size(); i++) {
+ output.set(i, insertObjectOrUpdate(items.get(i)));
+ }
+ return Observable.just(output);
+ }
+
+ @Override
+ public Observable delete(List items) {
+ for(TestModel tm : models) {
+ removeItemIfExists(tm);
+ }
+ return Observable.just(null);
+ }
+
+ @Override
+ public Observable delete(TestModel object) {
+ removeItemIfExists(object);
+ return Observable.just(null);
+ }
+
+ @Override
+ public Observable deleteAll() {
+ models.clear();
+ return Observable.just(null);
+ }
+
+
+ // PRIVATES METHODS
+
+ private List removeItemIfExists(TestModel object) {
+ List output = new ArrayList<>();
+ for(TestModel tm : models) {
+ if(tm.getId() != object.getId()) {
+ output.add(tm);
+ }
+ }
+ return output;
+ }
+
+ private TestModel insertObjectOrUpdate(TestModel object) {
+ TestModel t = null;
+ int i = 0;
+ for(TestModel tm : models) {
+ if(tm.getId() == object.getId()) {
+ t = tm;
+ models.set(i, object);
+ break;
+ }
+ i++;
+ }
+
+ if(t == null) {
+ models.add(object);
+ }
+ return object;
+ }
+}
diff --git a/store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryService.java b/store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryService.java
new file mode 100644
index 0000000..1f6cd84
--- /dev/null
+++ b/store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryService.java
@@ -0,0 +1,79 @@
+package com.playmoweb.store2store.mock;
+
+import com.playmoweb.store2store.service.api.AbstractService;
+import com.playmoweb.store2store.utils.Filter;
+import com.playmoweb.store2store.utils.SortingMode;
+
+import java.util.List;
+
+import rx.Observable;
+
+/**
+ * Memory service for tests purposes
+ * @author Thibaud Giovannetti
+ * @by Playmoweb
+ * @date 28/02/2017
+ */
+public class MemoryService extends AbstractService {
+ // to simplify we use a second memory DAO to simulate another storage :)
+ private MemoryDao myCustomAPI = new MemoryDao();
+
+ /**
+ * Public constructor
+ *
+ * @param clazz
+ */
+ public MemoryService(Class clazz) {
+ super(clazz, new MemoryDao());
+ }
+
+ @Override
+ protected Observable> getAll(Filter filter, SortingMode sortingMode) {
+ return myCustomAPI.getAll(filter, sortingMode);
+ }
+
+ @Override
+ protected Observable getOne(Filter filter, SortingMode sortingMode) {
+ return myCustomAPI.getOne(filter, sortingMode);
+ }
+
+ @Override
+ protected Observable getById(String id) {
+ return myCustomAPI.getById(id);
+ }
+
+ @Override
+ protected Observable insert(TestModel object) {
+ return myCustomAPI.insertOrUpdate(object);
+ }
+
+ @Override
+ protected Observable> insert(List items) {
+ return myCustomAPI.insertOrUpdate(items);
+ }
+
+ @Override
+ protected Observable update(TestModel object) {
+ return myCustomAPI.insertOrUpdate(object);
+ }
+
+ @Override
+ protected Observable> update(List items) {
+ return myCustomAPI.insertOrUpdate(items);
+ }
+
+ @Override
+ protected Observable delete(List items) {
+ return myCustomAPI.delete(items);
+ }
+
+ @Override
+ protected Observable delete(TestModel object) {
+ return myCustomAPI.delete(object);
+ }
+
+ @Override
+ protected Observable deleteAll() {
+ return myCustomAPI.deleteAll();
+ }
+}
diff --git a/store2store/src/androidTest/java/com/playmoweb/store2store/mock/TestModel.java b/store2store/src/androidTest/java/com/playmoweb/store2store/mock/TestModel.java
new file mode 100644
index 0000000..a3bd517
--- /dev/null
+++ b/store2store/src/androidTest/java/com/playmoweb/store2store/mock/TestModel.java
@@ -0,0 +1,46 @@
+package com.playmoweb.store2store.mock;
+
+/**
+ * Bean for tests purposes
+ * @author Thibaud Giovannetti
+ * @by Playmoweb
+ * @date 28/02/2017
+ */
+public class TestModel {
+ private int id;
+ private String name;
+ private boolean available;
+
+ public TestModel(int id) {
+ this.id = id;
+ }
+
+ public TestModel(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public boolean isAvailable() {
+ return available;
+ }
+
+ public void setAvailable(boolean available) {
+ this.available = available;
+ }
+}
diff --git a/store2store/src/androidTest/java/com/playmoweb/store2store/service/AbstractServiceGetUnitTest.java b/store2store/src/androidTest/java/com/playmoweb/store2store/service/AbstractServiceGetUnitTest.java
new file mode 100644
index 0000000..3544453
--- /dev/null
+++ b/store2store/src/androidTest/java/com/playmoweb/store2store/service/AbstractServiceGetUnitTest.java
@@ -0,0 +1,41 @@
+package com.playmoweb.store2store.service;
+
+import android.support.test.runner.AndroidJUnit4;
+
+import com.playmoweb.store2store.mock.MemoryService;
+import com.playmoweb.store2store.mock.TestModel;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import rx.subscriptions.CompositeSubscription;
+
+/**
+ * Test all get operations
+ * @author Thibaud Giovannetti
+ * @by Playmoweb
+ * @date 28/02/2017
+ */
+@RunWith(AndroidJUnit4.class)
+public class AbstractServiceGetUnitTest {
+
+ private final CompositeSubscription subscriptions = new CompositeSubscription();
+ private MemoryService service = new MemoryService(TestModel.class);
+
+ @Before
+ public void before() {
+
+ }
+
+ @After
+ public void after() {
+ subscriptions.clear();
+ }
+
+ @Test
+ public void getOne() throws Exception {
+
+ }
+}
diff --git a/store2store/src/test/java/com/playmoweb/store2store/ExampleUnitTest.java b/store2store/src/test/java/com/playmoweb/store2store/ExampleUnitTest.java
deleted file mode 100644
index d709a3e..0000000
--- a/store2store/src/test/java/com/playmoweb/store2store/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.playmoweb.store2store;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file