package com.fastaccess.ui.modules.main;

import android.support.test.espresso.intent.rule.IntentsTestRule;

import com.fastaccess.R;
import com.fastaccess.helper.AppHelper;
import com.fastaccess.ui.modules.feeds.FeedsFragment;
import com.fastaccess.ui.modules.main.issues.pager.MyIssuesPagerFragment;
import com.fastaccess.ui.modules.main.pullrequests.pager.MyPullsPagerFragment;
import com.fastaccess.ui.modules.notification.NotificationActivity;
import com.fastaccess.ui.modules.search.SearchActivity;

import org.junit.Rule;
import org.junit.Test;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.intent.Intents.intended;
import static android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static com.fastaccess.helper.TestHelper.bottomNavAction;
import static com.fastaccess.helper.TestHelper.bottomNavSelection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

/**
 * Created by Kosh on 06 May 2017, 2:11 AM
 */

public class MainActivityTest {
    @Rule public IntentsTestRule<MainActivity> testRule = new IntentsTestRule<>(MainActivity.class);

    @Test public void onInitTest() {
        assertEquals(testRule.getActivity().isLoggedIn(), true);
        onView(withId(R.id.bottomNavigation)).check(matches(bottomNavSelection(0)));
        assertNotNull(AppHelper.getFragmentByTag(testRule.getActivity().getSupportFragmentManager(), FeedsFragment.TAG));
    }

    @Test public void onSelectIssuesTabTest() {
        assertEquals(testRule.getActivity().isLoggedIn(), true);
        onView(withId(R.id.bottomNavigation)).perform(bottomNavAction(1))
                .check(matches(bottomNavSelection(1)));
        assertNotNull(AppHelper.getFragmentByTag(testRule.getActivity().getSupportFragmentManager(), MyIssuesPagerFragment.TAG));
    }

    @Test public void onSelectPullRequestsTabTest() {
        assertEquals(testRule.getActivity().isLoggedIn(), true);
        onView(withId(R.id.bottomNavigation)).perform(bottomNavAction(2))
                .check(matches(bottomNavSelection(2)));
        assertNotNull(AppHelper.getFragmentByTag(testRule.getActivity().getSupportFragmentManager(), MyPullsPagerFragment.TAG));
    }

    @Test public void startNotificationsIntentTest() {
        onView(withId(R.id.notifications)).perform(click());
        intended(hasComponent(NotificationActivity.class.getName()));
    }

    @Test public void startSearchIntentTest() {
        onView(withId(R.id.search)).perform(click());
        intended(hasComponent(SearchActivity.class.getName()));
    }
}
