Skip to content

Commit

Permalink
testing module is now a java module; More unit tests for viewstate an…
Browse files Browse the repository at this point in the history
…d rx presenter
  • Loading branch information
sockeqwe committed Apr 3, 2015
1 parent 6c00ba2 commit 247bc2f
Show file tree
Hide file tree
Showing 25 changed files with 571 additions and 134 deletions.
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

VERSION_NAME=0.8.4-SNAPSHOT
VERSION_NAME=0.9.0-SNAPSHOT
VERSION_CODE=10
GROUP=com.hannesdorfmann.mosby

POM_DESCRIPTION=A Model-View-Presenter framework for modern Android apps
POM_DESCRIPTION=A Model-View-Presenter framework for Android apps
POM_URL=https://github.com/sockeqwe/mosby
POM_SCM_URL=https://github.com/sockeqwe/mosby
POM_SCM_CONNECTION=scm:[email protected]:sockeqwe/mosby.git
Expand Down
118 changes: 118 additions & 0 deletions maven-push-java-lib.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/*
* Copyright 2013 Chris Banes
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

apply plugin: 'maven'
apply plugin: 'signing'

def isReleaseBuild() {
return VERSION_NAME.contains("SNAPSHOT") == false
}

def getReleaseRepositoryUrl() {
return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}

def getSnapshotRepositoryUrl() {
return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
: "https://oss.sonatype.org/content/repositories/snapshots/"
}

def getRepositoryUsername() {
return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}

afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME

repository(url: getReleaseRepositoryUrl()) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
snapshotRepository(url: getSnapshotRepositoryUrl()) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}

pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL

scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}

licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}

developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
}
}
}


// Resolve dependencies to other modules
pom.whenConfigured { pom ->
pom.dependencies.findAll { dep -> dep.groupId == rootProject.name }.collect { dep ->
dep.groupId = pom.groupId = project.GROUP
dep.version = pom.version = project.VERSION_NAME
}
}
}
}
}

signing {
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}

task javadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
}

task sourceJar (type : Jar) {
classifier = 'sources'
from sourceSets.main.allSource
}

artifacts {
archives javadocJar
archives sourceJar
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.hannesdorfmann.mosby.mvp;

import junit.framework.Assert;
import org.junit.Test;

/**
* @author Hannes Dorfmann
*/
public class MvpBasePresenterTest {} /*extends MvpBasePresenter<MvpView> {
public class MvpBasePresenterTest extends MvpBasePresenter<MvpView> {

@Test
public void testOnDestroy(){
Expand All @@ -26,12 +29,10 @@ public void testOnDestroy(){
detachView(false);
noViewAttached();

}


private void noViewAttached(){
Assert.assertFalse(isViewAttached());
}
}
*/
2 changes: 2 additions & 0 deletions rx/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,6 @@ dependencies {
compile 'io.reactivex:rxjava:1.0.7'
compile 'io.reactivex:rxandroid:0.24.0'
compile project(':mvp')

testCompile project(':testing')
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.hannesdorfmann.mosby.rx.lce;

import com.hannesdorfmann.mosby.testing.presenter.MvpLcePresenterTest;
import junit.framework.Assert;
import org.junit.Test;

/**
* @author Hannes Dorfmann
*/
public class MvpLceRxPresenterTest extends MvpLcePresenterTest<Object, TestView, TestPresenter> {

private TestPresenter presenter = new TestPresenter();
private Object data = new Object();

@Override protected void beforeTestNotFailing() {
presenter.setFail(false);
presenter.setData(data);
}

@Override protected void beforeTestFailing() {
presenter.setData(null);
presenter.setFail(true);
}

@Override protected Class<TestView> getViewClass() {
return TestView.class;
}

@Override protected TestPresenter createPresenter() {
return presenter;
}

@Override protected void loadData(TestPresenter presenter, boolean pullToRefresh) {
presenter.loadData(pullToRefresh);
}

@Override protected void verifyData(Object data) {
Assert.assertTrue(data == this.data);
}

@Test
public void testPresenter(){
super.startLceTests(true);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.hannesdorfmann.mosby.rx.lce;

import com.hannesdorfmann.mosby.mvp.rx.lce.MvpLceRxPresenter;
import rx.Observable;
import rx.functions.Func0;
import rx.schedulers.Schedulers;

/**
* @author Hannes Dorfmann
*/
public class TestPresenter extends MvpLceRxPresenter<TestView, Object> {

private Object data;
private boolean fail;

public void setData(Object data) {
this.data = data;
}

public void setFail(boolean fail) {
this.fail = fail;
}

public void loadData(boolean pullToRefresh) {
Observable<Object> observable;

if (fail) {
observable = Observable.error(new Exception("Mock Exception"));
} else {

observable = Observable.defer(new Func0<Observable<Object>>() {
@Override public Observable<Object> call() {
return Observable.just(data);
}
});
}

subscribe(observable, pullToRefresh);
}

@Override protected Observable<Object> applyScheduler(Observable<Object> observable) {
return observable.subscribeOn(Schedulers.immediate()).observeOn(Schedulers.immediate());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.hannesdorfmann.mosby.rx.lce;

import com.hannesdorfmann.mosby.mvp.lce.MvpLceView;

/**
* @author Hannes Dorfmann
*/
public interface TestView extends MvpLceView<Object> {
}
8 changes: 8 additions & 0 deletions sample-dagger2-rx/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,12 @@ dependencies {
compile 'com.squareup.okhttp:okhttp:2.3.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'


// testing
testCompile project(':testing')
testCompile 'com.squareup.retrofit:retrofit-mock:1.9.0'
testCompile 'com.google.dagger:dagger:2.0-SNAPSHOT'
testCompile 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
testCompile 'javax.annotation:javax.annotation-api:1.2'
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.hannesdorfmann.mosby.sample.dagger2;

import android.content.Context;
import com.hannesdorfmann.mosby.mvp.rx.lce.scheduler.AndroidSchedulerTransformer;
import com.hannesdorfmann.mosby.mvp.rx.lce.scheduler.SchedulerTransformer;
import com.hannesdorfmann.mosby.sample.dagger2.model.ErrorMessageDeterminer;
import com.hannesdorfmann.mosby.sample.dagger2.model.GithubApi;
import com.squareup.okhttp.Cache;
Expand Down Expand Up @@ -34,6 +36,10 @@ public SampleModule(Context context) {
return Picasso.with(context);
}

@Provides @Singleton SchedulerTransformer providesSchedulerTransfomer(){
return new AndroidSchedulerTransformer();
}

@Provides @Singleton public GithubApi providesGithubApi() {

OkHttpClient client = new OkHttpClient();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.hannesdorfmann.mosby.sample.dagger2.repos;

import com.hannesdorfmann.mosby.mvp.rx.lce.MvpLceRxPresenter;
import com.hannesdorfmann.mosby.mvp.rx.lce.scheduler.SchedulerTransformer;
import com.hannesdorfmann.mosby.sample.dagger2.model.GithubApi;
import com.hannesdorfmann.mosby.sample.dagger2.model.Repo;
import java.util.Collections;
Expand All @@ -15,19 +16,26 @@
public class ReposPresenter extends MvpLceRxPresenter<ReposView, List<Repo>> {

GithubApi githubapi;
SchedulerTransformer transformer;

@Inject public ReposPresenter(GithubApi githubapi) {
@Inject public ReposPresenter(GithubApi githubapi, SchedulerTransformer transformer) {
this.githubapi = githubapi;
this.transformer = transformer;
}

public void loadRepos(boolean pullToRefresh) {
Observable<List<Repo>> observable = githubapi.getRepos().flatMap(new Func1<List<Repo>, Observable<List<Repo>>>() {
@Override public Observable<List<Repo>> call(List<Repo> repos) {
Collections.shuffle(repos);
return Observable.just(repos);
}
});
Observable<List<Repo>> observable =
githubapi.getRepos().flatMap(new Func1<List<Repo>, Observable<List<Repo>>>() {
@Override public Observable<List<Repo>> call(List<Repo> repos) {
Collections.shuffle(repos);
return Observable.just(repos);
}
});

subscribe(observable, pullToRefresh);
}

@Override protected Observable<List<Repo>> applyScheduler(Observable<List<Repo>> observable) {
return observable.compose(transformer);
}
}
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1 +1 @@
include ':sample', ':core', ':core-dagger1', ':viewstate', ':mvp', ':rx', ':retrofit', ':testing', ':mvp-dagger1', ':viewstate-dagger1', ':sample-dagger1', ':sample-dagger2-rx'
include ':sample', ':core', ':core-dagger1', ':viewstate', ':mvp', ':rx', ':retrofit', ':mvp-dagger1', ':viewstate-dagger1', ':sample-dagger1', ':sample-dagger2-rx', ':testing'
Loading

0 comments on commit 247bc2f

Please sign in to comment.