package com.kth.baasio.test;
import com.kth.baasio.Baas;
import com.kth.baasio.callback.BaasioCallback;
import com.kth.baasio.callback.BaasioDeviceCallback;
import com.kth.baasio.callback.BaasioSignInCallback;
import com.kth.baasio.callback.BaasioSignUpCallback;
import com.kth.baasio.entity.push.BaasioDevice;
import com.kth.baasio.entity.user.BaasioUser;
import com.kth.baasio.exception.BaasioError;
import com.kth.baasio.exception.BaasioException;
import com.kth.baasio.help.BaasioHelp;
import com.kth.baasio.help.data.Faq;
import com.kth.baasio.help.data.FaqCategory;
import com.kth.baasio.help.data.Question;
import com.kth.baasio.utils.ObjectUtils;
import com.kth.common.utils.LogUtils;
import android.os.AsyncTask;
import android.test.InstrumentationTestCase;
import java.util.List;
import java.util.concurrent.CountDownLatch;
public class Test005HelpCenter extends InstrumentationTestCase {
private static final String TAG = LogUtils.makeLogTag(Test005HelpCenter.class);
private static List<FaqCategory> mHelps;
private static AsyncTask mGCMRegisterTask;
public Test005HelpCenter() {
super();
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void test000Init() throws InterruptedException {
Baas.io().init(getInstrumentation().getContext(), BaasioConfig.BAASIO_URL,
BaasioConfig.BAASIO_ID, BaasioConfig.APPLICATION_ID);
final CountDownLatch signal = new CountDownLatch(1);
mGCMRegisterTask = Baas.io().setGcmEnabled(getInstrumentation().getContext(),
UnitTestConfig.PUSH_SHOULD_RECEIVE_TAG, new BaasioDeviceCallback() {
@Override
public void onException(BaasioException e) {
if (!BaasioError.ERROR_GCM_ALREADY_REGISTERED.equals(e.getMessage())) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
} else {
LogUtils.LOGV(TAG, e.toString());
}
signal.countDown();
}
@Override
public void onResponse(BaasioDevice response) {
LogUtils.LOGV(TAG, response.toString());
signal.countDown();
}
}, BaasioConfig.GCM_SENDER_ID);
if (mGCMRegisterTask != null) {
signal.await();
}
}
public void test001Init_User1SignIn() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioUser.signOut(getInstrumentation().getContext());
BaasioUser.signInInBackground(getInstrumentation().getContext(),
UnitTestConfig.USER1_USERNAME, UnitTestConfig.COMMON_PASSWORD,
new BaasioSignInCallback() {
@Override
public void onException(BaasioException e) {
LogUtils.LOGV(TAG, e.toString());
signal.countDown();
}
@Override
public void onResponse(BaasioUser response) {
LogUtils.LOGV(TAG, response.toString());
signal.countDown();
}
});
signal.await();
}
public void test002Init_User1Unsubscribe() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioUser user = Baas.io().getSignedInUser();
if (!ObjectUtils.isEmpty(user)) {
user.unsubscribeInBackground(getInstrumentation().getContext(),
new BaasioCallback<BaasioUser>() {
@Override
public void onResponse(BaasioUser response) {
LogUtils.LOGV(TAG, response.toString());
signal.countDown();
}
@Override
public void onException(BaasioException e) {
LogUtils.LOGV(TAG, e.toString());
signal.countDown();
}
});
signal.await();
}
}
public void test003Init_User1SignUp() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioUser.signUpInBackground(UnitTestConfig.USER1_USERNAME, UnitTestConfig.USER1_USERNAME,
UnitTestConfig.USER1_EMAIL, UnitTestConfig.COMMON_PASSWORD,
new BaasioSignUpCallback() {
@Override
public void onException(BaasioException e) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
signal.countDown();
}
@Override
public void onResponse(BaasioUser response) {
LogUtils.LOGV(TAG, response.toString());
signal.countDown();
}
});
signal.await();
}
public void test004Init_User1SignIn() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioUser.signInInBackground(getInstrumentation().getContext(),
UnitTestConfig.USER1_USERNAME, UnitTestConfig.COMMON_PASSWORD,
new BaasioSignInCallback() {
@Override
public void onException(BaasioException e) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
signal.countDown();
}
@Override
public void onResponse(BaasioUser response) {
LogUtils.LOGV(TAG, response.toString());
signal.countDown();
}
});
signal.await();
}
public void test300GetHelps() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioHelp.getHelpsInBackground(new BaasioCallback<List<FaqCategory>>() {
@Override
public void onResponse(List<FaqCategory> response) {
LogUtils.LOGV(TAG, response.toString());
mHelps = response;
FaqCategory faqCategory = mHelps.get(0);
if (!faqCategory.getName().equals(
UnitTestConfig.HELPCENTER_RECOMMENDED_CATEGORY_TITLE)) {
fail("Recommended help category miss matched: name is " + faqCategory.getName());
}
if (faqCategory.getFaqs().size() > 0) {
if (!UnitTestConfig.HELPCENTER_RECOMMENDED_HELP) {
fail("Recommended help should not response");
}
} else {
if (UnitTestConfig.HELPCENTER_RECOMMENDED_HELP) {
fail("Recommended help should response");
}
}
signal.countDown();
}
@Override
public void onException(BaasioException e) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
signal.countDown();
}
});
signal.await();
}
public void test301GetHelpDetail() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
Faq faq = mHelps.get(1).getFaqs().get(0);
BaasioHelp.getHelpDetailInBackground(faq.getUuid(), new BaasioCallback<Faq>() {
@Override
public void onResponse(Faq response) {
LogUtils.LOGV(TAG, response.toString());
if (!response.getTitle().equals(UnitTestConfig.HELPCENTER_NORMAL_TITLE)) {
fail("Title miss matched");
}
if (!response.getContent().equals(UnitTestConfig.HELPCENTER_NORMAL_CONTENT)) {
fail("Content miss matched");
}
signal.countDown();
}
@Override
public void onException(BaasioException e) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
signal.countDown();
}
});
signal.await();
}
public void test302SearchHelp() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioHelp.searchHelpsInBackground(UnitTestConfig.HELPCENTER_SEARCH_KEYWORD,
new BaasioCallback<List<FaqCategory>>() {
@Override
public void onResponse(List<FaqCategory> response) {
LogUtils.LOGV(TAG, response.toString());
for (FaqCategory faqCategory : response) {
for (Faq faq : faqCategory.getFaqs()) {
if (!faq.getTitle().contains(
UnitTestConfig.HELPCENTER_SEARCH_KEYWORD)) {
fail("Keyword is not contained");
}
}
}
signal.countDown();
}
@Override
public void onException(BaasioException e) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
signal.countDown();
}
});
signal.await();
}
public void test303SendQuestion() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioUser user = Baas.io().getSignedInUser();
BaasioHelp.sendQuestionInBackground(getInstrumentation().getContext(), user.getEmail(),
UnitTestConfig.HELPCENTER_QUESTION_BODY, new BaasioCallback<Question>() {
@Override
public void onResponse(Question response) {
if (!response.getContent().equals(UnitTestConfig.HELPCENTER_QUESTION_BODY)) {
fail("Question miss matched");
}
signal.countDown();
}
@Override
public void onException(BaasioException e) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
signal.countDown();
}
});
signal.await();
}
public void test996Uninit_UserSignOut() {
BaasioUser.signOut(getInstrumentation().getContext());
}
public void test997Uninit_User1SignIn() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioUser.signInInBackground(getInstrumentation().getContext(),
UnitTestConfig.USER1_USERNAME, UnitTestConfig.COMMON_PASSWORD,
new BaasioSignInCallback() {
@Override
public void onException(BaasioException e) {
LogUtils.LOGE(TAG, e.toString());
fail(e.toString());
signal.countDown();
}
@Override
public void onResponse(BaasioUser response) {
LogUtils.LOGV(TAG, response.toString());
signal.countDown();
}
});
signal.await();
}
public void test998Uninit_User1Unsubscribe() throws InterruptedException {
final CountDownLatch signal = new CountDownLatch(1);
BaasioUser user = Baas.io().getSignedInUser();
if (!ObjectUtils.isEmpty(user)) {
user.unsubscribeInBackground(getInstrumentation().getContext(),
new BaasioCallback<BaasioUser>() {
@Override
public void onResponse(BaasioUser response) {
LogUtils.LOGV(TAG, response.toString());
signal.countDown();
}
@Override
public void onException(BaasioException e) {
LogUtils.LOGV(TAG, e.toString());
signal.countDown();
}
});
signal.await();
}
}
public void test999Uninit() throws InterruptedException {
if (mGCMRegisterTask != null) {
mGCMRegisterTask.cancel(true);
}
Baas.io().uninit(getInstrumentation().getContext());
}
}