From 36c6e1c7fe2dbb1e934fecffdca4614940b2a0e4 Mon Sep 17 00:00:00 2001 From: Thibaud Giovannetti Date: Tue, 28 Feb 2017 14:09:01 +0100 Subject: [PATCH] Prepare tests --- .../store2store/ExampleInstrumentedTest.java | 26 ---- .../playmoweb/store2store/mock/MemoryDao.java | 112 ++++++++++++++++++ .../store2store/mock/MemoryService.java | 79 ++++++++++++ .../playmoweb/store2store/mock/TestModel.java | 46 +++++++ .../service/AbstractServiceGetUnitTest.java | 41 +++++++ .../store2store/ExampleUnitTest.java | 17 --- 6 files changed, 278 insertions(+), 43 deletions(-) delete mode 100644 store2store/src/androidTest/java/com/playmoweb/store2store/ExampleInstrumentedTest.java create mode 100644 store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryDao.java create mode 100644 store2store/src/androidTest/java/com/playmoweb/store2store/mock/MemoryService.java create mode 100644 store2store/src/androidTest/java/com/playmoweb/store2store/mock/TestModel.java create mode 100644 store2store/src/androidTest/java/com/playmoweb/store2store/service/AbstractServiceGetUnitTest.java delete mode 100644 store2store/src/test/java/com/playmoweb/store2store/ExampleUnitTest.java 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