package com.mobify.astro.utilities;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.support.test.annotation.UiThreadTest;
import android.support.test.runner.AndroidJUnit4;
import android.webkit.WebSettings;
import android.webkit.WebView;

import com.mobify.astro.ActivityTestBase;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;

import static org.junit.Assert.assertTrue;

@RunWith(AndroidJUnit4.class)
public class AstroWebUtilitiesTest extends ActivityTestBase {

    private Context context;
    private PackageManager packageManager;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        context = Mockito.spy(getActivity());
        packageManager = Mockito.spy(context.getPackageManager());
        PackageInfo info = new PackageInfo();
        info.versionName = "1.0";
        Mockito.doReturn(packageManager).when(context).getPackageManager();
        Mockito.doReturn("AstroTests").when(context).getPackageName();
        try {
            Mockito.doReturn(info).when(packageManager).getPackageInfo("AstroTests", 0);
        } catch (PackageManager.NameNotFoundException e) {
        }
    }

    @UiThreadTest
    @Test
    public void testAddAstroUserAgent() {

        WebView nonAstroWebView = new WebView(getActivity());
        WebSettings settings = nonAstroWebView.getSettings();

        String defaultUserAgent = settings.getUserAgentString();
        AstroWebUtilities.addAstroUserAgent(context, settings);

        String astroUserAgent = settings.getUserAgentString();

        assertTrue(astroUserAgent.contains(defaultUserAgent));
        assertTrue(astroUserAgent.contains(AstroWebUtilities.ASTRO_USER_AGENT));
        assertTrue(astroUserAgent.contains("1.0"));
    }
}
