Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .cursor/rules/github-descriptions.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
description: When the user asks for a GitHub description or PR description
globs:
alwaysApply: false
---

When generating GitHub descriptions (PR descriptions, issue descriptions, commit descriptions), always use GitHub-flavored Markdown formatting: **bold** for emphasis, `backticks` for code/class/file references, bullet lists with `-`, and `##` headers where appropriate.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import org.robolectric.annotation.Config


@RunWith(RobolectricTestRunner::class)
@Config(application = TestApplication::class)
@Config(application = TestApplication::class, shadows = [ShadowSoLoader::class, ShadowReactView::class])
abstract class BaseRobolectricTest {

val context: Context = RuntimeEnvironment.getApplication()
Expand Down
5 changes: 3 additions & 2 deletions android/src/test/java/com/reactnativenavigation/BaseTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import com.reactnativenavigation.utils.SystemUiUtils
import com.reactnativenavigation.utils.SystemUiUtils.getStatusBarHeight
import com.reactnativenavigation.utils.SystemUiUtils.getStatusBarHeightDp
import com.reactnativenavigation.utils.ViewUtils
import com.reactnativenavigation.viewcontrollers.statusbar.StatusBarPresenter
import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController
import org.assertj.core.api.Java6Assertions
import org.junit.After
Expand All @@ -37,7 +38,7 @@ import org.robolectric.shadows.ShadowLooper
import java.util.Arrays

@RunWith(RobolectricTestRunner::class)
@Config(sdk = [28], application = TestApplication::class)
@Config(sdk = [28], application = TestApplication::class, shadows = [ShadowSoLoader::class, ShadowReactView::class])
abstract class BaseTest {
private val handler = Handler(Looper.getMainLooper())
private val shadowMainLooper: ShadowLooper = Shadows.shadowOf(Looper.getMainLooper())
Expand All @@ -49,7 +50,6 @@ abstract class BaseTest {
@Before
open fun beforeEach() {
mockReactNativeFeatureFlags = mockStatic(ReactNativeFeatureFlags::class.java)
mockReactNativeFeatureFlags?.close()

NavigationApplication.instance = Mockito.mock(NavigationApplication::class.java)
mockConfiguration = Mockito.mock(Configuration::class.java)
Expand All @@ -62,6 +62,7 @@ abstract class BaseTest {
.thenReturn(0x00000)

RNNFeatureToggles.init()
StatusBarPresenter.init(newActivity())
}


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.reactnativenavigation;

import android.content.Context;
import android.widget.FrameLayout;

import com.reactnativenavigation.react.ReactView;

import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.RealObject;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.util.ReflectionHelpers;
import org.robolectric.util.ReflectionHelpers.ClassParameter;

@Implements(ReactView.class)
public class ShadowReactView extends org.robolectric.shadows.ShadowViewGroup {

@RealObject
private ReactView realObject;

@Implementation
protected void __constructor__(Context context, String componentId, String componentName) {
Shadow.invokeConstructor(FrameLayout.class, realObject,
ClassParameter.from(Context.class, context));
ReflectionHelpers.setField(realObject, "componentId", componentId);
ReflectionHelpers.setField(realObject, "componentName", componentName);
}

@Implementation
protected void onAttachedToWindow() {
}

@Implementation
public void start() {
}

@Implementation
public void destroy() {
}

@Implementation
public boolean isRendered() {
return realObject.getChildCount() >= 1;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.reactnativenavigation;

import com.facebook.soloader.SoLoader;

import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;

@Implements(SoLoader.class)
public class ShadowSoLoader {

@Implementation
public static boolean loadLibrary(String shortName) {
return true;
}

@Implementation
public static boolean loadLibrary(String shortName, int flags) {
return true;
}

@Implementation
public static void loadLibraryOnNonAndroid(String shortName) {
}

@Implementation
public static void init(android.content.Context context, int flags) {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import org.mockito.Mockito

class TestApplication : Application(), ReactApplication {
override val reactNativeHost: ReactNativeHost = object : ReactNativeHost(this) {
Expand All @@ -25,5 +25,5 @@ class TestApplication : Application(), ReactApplication {
}

override val reactHost: ReactHost
get() = getDefaultReactHost(this, reactNativeHost)
get() = Mockito.mock(ReactHost::class.java)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,17 @@

import androidx.annotation.NonNull;

import com.facebook.react.ReactInstanceManager;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.reactnativenavigation.options.Options;
import com.reactnativenavigation.react.ReactView;
import com.reactnativenavigation.viewcontrollers.child.ChildController;
import com.reactnativenavigation.viewcontrollers.child.ChildControllersRegistry;
import com.reactnativenavigation.viewcontrollers.component.ComponentPresenterBase;
import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
import com.reactnativenavigation.viewcontrollers.viewcontroller.ScrollEventListener;
import com.reactnativenavigation.views.component.ReactComponent;

import org.mockito.Mockito;

public class SimpleViewController extends ChildController<SimpleViewController.SimpleView> {
private final ComponentPresenterBase presenter = new ComponentPresenterBase();

Expand Down Expand Up @@ -69,10 +68,10 @@ public String getCurrentComponentName() {
return null;
}

public static class SimpleView extends ReactView implements ReactComponent {
public static class SimpleView extends FrameLayout implements ReactComponent {

public SimpleView(@NonNull Context context) {
super(context, "compId", "compName");
super(context);
}

@Override
Expand All @@ -86,13 +85,21 @@ public boolean isReady() {
}

@Override
public ReactView asView() {
public ViewGroup asView() {
return this;
}

@Override
public void destroy() {}

@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
start();
}

public void start() {}

@Override
public void sendOnNavigationButtonPressed(String buttonId) {}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import org.junit.Test;
import org.mockito.Mockito;

@Ignore("New architecture - failed to fix")
public class PresenterTest extends BaseTest {
private Presenter uut;
private Activity activity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;

@Ignore("New architecture - WIP")
@LooperMode(LooperMode.Mode.PAUSED)
public class ButtonPresenterTest extends BaseTest {
private static final String BTN_TEXT = "button1";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@Ignore("New architecture - WIP")
public class LayoutFactoryTest extends BaseTest {
private LayoutFactory uut;
private ReactHost reactHost;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import static org.assertj.core.api.Java6Assertions.assertThat;
import static org.mockito.Mockito.spy;

@Ignore("New architecture - WIP")
public class OptionsApplyingTest extends BaseTest {
private Activity activity;
private StackController stack;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;

@Ignore("New architecture - WIP")
public class BottomTabPresenterTest extends BaseTest {
private Options tab1Options = createTab1Options();
private Options tab2Options = createTab2Options();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ import org.mockito.kotlin.eq
import org.mockito.kotlin.times
import java.util.*

@Ignore("New architecture - WIP")
class BottomTabsControllerTest : BaseTest() {
private lateinit var activity: Activity
private lateinit var bottomTabs: BottomTabs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import org.mockito.kotlin.verify
import org.mockito.kotlin.verifyNoMoreInteractions
import org.mockito.kotlin.whenever

@Ignore("New architecture - WIP")
class BottomTabsPresenterTest : BaseTest() {
private lateinit var tabs: List<ViewController<*>>
private lateinit var uut: BottomTabsPresenter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import org.mockito.ArgumentMatchers;
import org.mockito.Mockito;

@Ignore("New architecture - WIP")
public class ComponentViewControllerTest extends BaseTest {
private ComponentViewController uut;
private ComponentLayout view;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import org.junit.Test;
import org.mockito.Mockito;

@Ignore("New architecture - WIP")
public class ExternalComponentViewControllerTest extends BaseTest {
private ExternalComponentViewController uut;
private FragmentCreatorMock componentCreator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import org.assertj.core.api.Java6Assertions.assertThat
import org.junit.Ignore
import org.junit.Test

@Ignore("New architecture - WIP")
class ModalAnimatorTest : BaseTest() {
private lateinit var uut: ModalAnimator
private lateinit var activity: Activity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;

@Ignore("New architecture - WIP")
public class ModalPresenterTest extends BaseTest {
private static final String MODAL_ID_1 = "modalId1";
private static final String MODAL_ID_2 = "modalId2";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
@Ignore("New architecture - WIP")
public class ModalStackTest extends BaseTest {
private static final String MODAL_ID_1 = "modalId1";
private static final String MODAL_ID_2 = "modalId2";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@Ignore("New architecture - WIP")
@Config(qualifiers = "xxhdpi")
public class NavigatorTest extends BaseTest {
private TestActivity activity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import org.mockito.kotlin.eq
import org.mockito.kotlin.never
import org.robolectric.android.controller.ActivityController

@Ignore("New architecture - WIP")
class RootPresenterTest : BaseTest() {
private lateinit var uut: RootPresenter
private lateinit var rootContainer: CoordinatorLayout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@Ignore("New architecture - WIP")
public class OverlayManagerTest extends BaseTest {
private static final String OVERLAY_ID_1 = "OVERLAY_1";
private static final String OVERLAY_ID_2 = "OVERLAY_2";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@Ignore("New architecture - WIP")
public class ParentControllerTest extends BaseTest {

private static final String INITIAL_TITLE = "initial title";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@


@SuppressWarnings("MagicNumber")
@Ignore("New architecture - WIP")
public class SideMenuControllerTest extends BaseTest {
private SideMenuController uut;
private Activity activity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@Ignore("New architecture - WIP")
public class BackButtonHelperTest extends BaseTest {
private BackButtonHelper uut;
private StackController stack;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@

import static org.assertj.core.api.Java6Assertions.assertThat;

@Ignore("New architecture - WIP")
public class FloatingActionButtonTest extends BaseTest {

private final static int CHILD_FAB_COUNT = 3;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import org.assertj.core.api.Java6Assertions.assertThat
import org.junit.Ignore
import org.junit.Test

@Ignore("New architecture - WIP")
class StackAnimatorTest : BaseTest() {
private lateinit var uut: StackAnimator
private lateinit var activity: Activity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import org.robolectric.shadows.ShadowLooper
import java.util.*
import kotlin.test.fail

@Ignore("New architecture - WIP")
class StackControllerTest : BaseTest() {
private lateinit var activity: Activity
private lateinit var childRegistry: ChildControllersRegistry
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ import org.robolectric.shadows.ShadowLooper
import java.util.*
import kotlin.collections.ArrayList

@Ignore("New architecture - WIP")
class StackPresenterTest : BaseTest() {
private lateinit var parent: StackController
private lateinit var uut: StackPresenter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

import static org.assertj.core.api.Java6Assertions.assertThat;

@Ignore("New architecture - WIP")
public class TitleBarButtonControllerTest extends BaseTest {
private ButtonController uut;
private ButtonBar titleBar;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;

@Ignore("New architecture - WIP")
public class TitleBarReactViewControllerTest extends BaseTest {

private TitleBarReactViewController uut;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@Ignore("New architecture - WIP")
@SuppressWarnings("MagicNumber")
public class TopBarButtonControllerTest extends BaseTest {

Expand Down
Loading