com.facebook.react.tests.ShareTestCase.java Source code

Java tutorial

Introduction

Here is the source code for com.facebook.react.tests.ShareTestCase.java

Source

/**
 * Copyright (c) 2014-present, Facebook, Inc.
 * All rights reserved.
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

package com.facebook.react.tests;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Instrumentation.ActivityMonitor;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter.MalformedMimeTypeException;
import android.support.v4.app.DialogFragment;

import com.facebook.react.bridge.BaseJavaModule;
import com.facebook.react.testing.ReactInstanceSpecForTest;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.modules.share.ShareModule;
import com.facebook.react.testing.ReactAppInstrumentationTestCase;

/**
 * Test case for {@link ShareModule}.
 */
public class ShareTestCase extends ReactAppInstrumentationTestCase {

    private static interface ShareTestModule extends JavaScriptModule {
        public void showShareDialog(WritableMap content, WritableMap options);
    }

    private static class ShareRecordingModule extends BaseJavaModule {

        private int mOpened = 0;
        private int mErrors = 0;

        @Override
        public String getName() {
            return "ShareRecordingModule";
        }

        @ReactMethod
        public void recordOpened() {
            mOpened++;
        }

        @ReactMethod
        public void recordError() {
            mErrors++;
        }

        public int getOpened() {
            return mOpened;
        }

        public int getErrors() {
            return mErrors;
        }

    }

    final ShareRecordingModule mRecordingModule = new ShareRecordingModule();

    @Override
    protected ReactInstanceSpecForTest createReactInstanceSpecForTest() {
        return super.createReactInstanceSpecForTest().addNativeModule(mRecordingModule)
                .addJSModule(ShareTestModule.class);
    }

    @Override
    protected String getReactApplicationKeyUnderTest() {
        return "ShareTestApp";
    }

    private ShareTestModule getTestModule() {
        return getReactContext().getCatalystInstance().getJSModule(ShareTestModule.class);
    }

    public void testShowBasicShareDialog() {
        final WritableMap content = new WritableNativeMap();
        content.putString("message", "Hello, ReactNative!");
        final WritableMap options = new WritableNativeMap();

        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CHOOSER);
        intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
        ActivityMonitor monitor = getInstrumentation().addMonitor(intentFilter, null, true);

        getTestModule().showShareDialog(content, options);

        waitForBridgeAndUIIdle();
        getInstrumentation().waitForIdleSync();

        assertEquals(1, monitor.getHits());
        assertEquals(1, mRecordingModule.getOpened());
        assertEquals(0, mRecordingModule.getErrors());

    }

}