public void TestExecuteScriptWhenDriverDoesNotSupportScriptReturnsNull()
        {
            var driver = new Mock <IWebDriver>(MockBehavior.Strict);

            var lazyDriver = new Lazy <IWebDriver>(() => driver.Object);

            Assert.IsNotNull(lazyDriver.Value);

            var logger = new Mock <ILogger>(MockBehavior.Loose);

            var browser = new SeleniumBrowser(lazyDriver, logger.Object);

            var resultObject = browser.ExecuteScript("some script", "Hello");

            Assert.IsNull(resultObject);

            driver.VerifyAll();
        }
        public void TestExecuteScriptWhenDriverSupportItRunsScript()
        {
            var result = new object();
            var driver = new Mock <IWebDriver>(MockBehavior.Strict);

            driver.As <IJavaScriptExecutor>().Setup(e => e.ExecuteScript("some script", It.IsAny <object[]>()))
            .Returns(result);

            var lazyDriver = new Lazy <IWebDriver>(() => driver.Object);

            Assert.IsNotNull(lazyDriver.Value);

            var logger = new Mock <ILogger>(MockBehavior.Loose);

            var browser = new SeleniumBrowser(lazyDriver, logger.Object);

            var resultObject = browser.ExecuteScript("some script", "Hello");

            Assert.AreSame(result, resultObject);

            driver.VerifyAll();
        }
        public void TestExecuteScriptWhenResultIsNativeElementReturnsProxyClass()
        {
            var result = new Mock <IWebElement>(MockBehavior.Strict);
            var driver = new Mock <IWebDriver>(MockBehavior.Strict);

            driver.As <IJavaScriptExecutor>().Setup(e => e.ExecuteScript("some script", It.IsAny <object[]>()))
            .Returns(result.Object);

            var lazyDriver = new Lazy <IWebDriver>(() => driver.Object);

            Assert.IsNotNull(lazyDriver.Value);

            var logger = new Mock <ILogger>(MockBehavior.Loose);

            var browser = new SeleniumBrowser(lazyDriver, logger.Object);

            var resultObject = browser.ExecuteScript("some script", "Hello");

            Assert.IsNotNull(resultObject);
            Assert.IsInstanceOfType(resultObject, typeof(WebElement));

            driver.VerifyAll();
            result.VerifyAll();
        }
        public void TestExecuteScriptWhenDriverDoesNotSupportScriptReturnsNull()
        {
            var driver = new Mock<IWebDriver>(MockBehavior.Strict);
            
            var lazyDriver = new Lazy<IWebDriver>(() => driver.Object);

            Assert.IsNotNull(lazyDriver.Value);

            var logger = new Mock<ILogger>(MockBehavior.Loose);

            var browser = new SeleniumBrowser(lazyDriver, logger.Object);

            var resultObject = browser.ExecuteScript("some script", "Hello");

            Assert.IsNull(resultObject);

            driver.VerifyAll();
        }
        public void TestExecuteScriptWhenResultIsNativeElementReturnsProxyClass()
        {
            var result = new Mock<IWebElement>(MockBehavior.Strict);
            var driver = new Mock<IWebDriver>(MockBehavior.Strict);
            driver.As<IJavaScriptExecutor>().Setup(e => e.ExecuteScript("some script", It.IsAny<object[]>()))
                                            .Returns(result.Object);

            var lazyDriver = new Lazy<IWebDriver>(() => driver.Object);

            Assert.IsNotNull(lazyDriver.Value);

            var logger = new Mock<ILogger>(MockBehavior.Loose);

            var browser = new SeleniumBrowser(lazyDriver, logger.Object);

            var resultObject = browser.ExecuteScript("some script", "Hello");

            Assert.IsNotNull(resultObject);
            Assert.IsInstanceOfType(resultObject, typeof(WebElement));
           
            driver.VerifyAll();
            result.VerifyAll();
        }
        public void TestExecuteScriptWhenDriverSupportItRunsScript()
        {
            var result = new object();
            var driver = new Mock<IWebDriver>(MockBehavior.Strict);
            driver.As<IJavaScriptExecutor>().Setup(e => e.ExecuteScript("some script", It.IsAny<object[]>()))
                                            .Returns(result);

            var lazyDriver = new Lazy<IWebDriver>(() => driver.Object);

            Assert.IsNotNull(lazyDriver.Value);

            var logger = new Mock<ILogger>(MockBehavior.Loose);

            var browser = new SeleniumBrowser(lazyDriver, logger.Object);

            var resultObject = browser.ExecuteScript("some script", "Hello");

            Assert.AreSame(result, resultObject);

            driver.VerifyAll();
        }