public void TestGetItemWithHeadersButNoRowsReturnsNull()
        {
            var oneColumn = new Mock <IWebElement>(MockBehavior.Strict);

            oneColumn.SetupGet(o => o.Text).Returns("MyColumn");

            var firstRow = new Mock <IWebElement>(MockBehavior.Strict);

            firstRow.Setup(f => f.FindElements(By.TagName("th")))
            .Returns(new List <IWebElement> {
                oneColumn.Object
            }.AsReadOnly());

            var browser = new Mock <IBrowser>(MockBehavior.Strict);
            var parent  = new Mock <IWebElement>(MockBehavior.Strict);

            parent.Setup(p => p.FindElements(By.TagName("tr")))
            .Returns(new List <IWebElement> {
                firstRow.Object
            }.AsReadOnly());


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNull(result);

            parent.VerifyAll();
            browser.VerifyAll();
            firstRow.VerifyAll();
            oneColumn.VerifyAll();
        }
        public void TestGetEmptyListWithNullDriverSearchResultsNoResults()
        {
            var browser = new Mock<IBrowser>(MockBehavior.Strict);
            var parent = new Mock<IWebElement>(MockBehavior.Strict);
            parent.Setup(p => p.FindElements(By.TagName("tr"))).Returns((ReadOnlyCollection<IWebElement>)null);


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNull(result);

            parent.VerifyAll();
            browser.VerifyAll();
        }
        public void TestGetEmptyListWithNullDriverSearchResultsNoResults()
        {
            var browser = new Mock <IBrowser>(MockBehavior.Strict);
            var parent  = new Mock <IWebElement>(MockBehavior.Strict);

            parent.Setup(p => p.FindElements(By.TagName("tr"))).Returns((ReadOnlyCollection <IWebElement>)null);


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNull(result);

            parent.VerifyAll();
            browser.VerifyAll();
        }
        public void TestGetItemWithNoHeadersReturnsItemButNotColumns()
        {
            var firstRow = new Mock <IWebElement>(MockBehavior.Strict);

            firstRow.SetupGet(f => f.Displayed).Returns(true);
            firstRow.Setup(f => f.FindElements(By.TagName("td")))
            .Returns(new ReadOnlyCollection <IWebElement>(new IWebElement[0]));
            firstRow.Setup(f => f.FindElements(By.TagName("th")))
            .Returns(new ReadOnlyCollection <IWebElement>(new IWebElement[0]));

            var browser = new Mock <IBrowser>(MockBehavior.Strict);
            var parent  = new Mock <IWebElement>(MockBehavior.Strict);

            parent.Setup(p => p.FindElements(By.TagName("tr")))
            .Returns(new List <IWebElement> {
                firstRow.Object
            }.AsReadOnly());


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(SeleniumTableDriver.RowWrapper));
            Assert.IsInstanceOfType(result, typeof(IElementProvider));

            var elementList = ((IElementProvider)result).GetElements();

            Assert.IsNotNull(elementList);
            Assert.AreEqual(0, elementList.Count());

            parent.VerifyAll();
            browser.VerifyAll();
            firstRow.VerifyAll();
        }
        public void TestGetItemWithNoHeadersReturnsItemButNotColumns()
        {
            var firstRow = new Mock<IWebElement>(MockBehavior.Strict);
            firstRow.SetupGet(f => f.Displayed).Returns(true);
            firstRow.Setup(f => f.FindElements(By.TagName("td")))
                    .Returns(new ReadOnlyCollection<IWebElement>(new IWebElement[0]));
            firstRow.Setup(f => f.FindElements(By.TagName("th")))
                    .Returns(new ReadOnlyCollection<IWebElement>(new IWebElement[0]));

            var browser = new Mock<IBrowser>(MockBehavior.Strict);
            var parent = new Mock<IWebElement>(MockBehavior.Strict);
            parent.Setup(p => p.FindElements(By.TagName("tr")))
                  .Returns(new List<IWebElement> { firstRow.Object }.AsReadOnly());


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(SeleniumTableDriver.RowWrapper));
            Assert.IsInstanceOfType(result, typeof(IElementProvider));

            var elementList = ((IElementProvider)result).GetElements();

            Assert.IsNotNull(elementList);
            Assert.AreEqual(0, elementList.Count());

            parent.VerifyAll();
            browser.VerifyAll();
            firstRow.VerifyAll();
        }
        public void TestGetItemWithHeadersThatContainWhitespaceAndMultipleRowsReturnsData()
        {
            var oneColumn = new Mock<IWebElement>(MockBehavior.Strict);
            oneColumn.SetupGet(o => o.Text).Returns(" MyColumn  ");

            var firstRow = new Mock<IWebElement>(MockBehavior.Strict);
            firstRow.Setup(f => f.FindElements(By.TagName("th")))
                    .Returns(new List<IWebElement> { oneColumn.Object }.AsReadOnly());

            var cell = new Mock<IWebElement>(MockBehavior.Strict);
            cell.Setup(c => c.Text).Returns("Hello!");

            var secondRow = new Mock<IWebElement>(MockBehavior.Strict);
            secondRow.SetupGet(s => s.Displayed).Returns(true);
            secondRow.Setup(f => f.FindElements(By.TagName("td")))
                    .Returns(new List<IWebElement> { cell.Object }.AsReadOnly());

            var browser = new Mock<IBrowser>(MockBehavior.Strict);
            var parent = new Mock<IWebElement>(MockBehavior.Strict);
            parent.Setup(p => p.FindElements(By.TagName("tr")))
                  .Returns(new List<IWebElement> { firstRow.Object, secondRow.Object }.AsReadOnly());


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(SeleniumTableDriver.RowWrapper));
            Assert.IsInstanceOfType(result, typeof(IElementProvider));

            var elementList = ((IElementProvider)result).GetElements().ToList();

            Assert.IsNotNull(elementList);
            Assert.AreEqual(1, elementList.Count);

            var item = elementList.First();
            Assert.AreEqual("mycolumn", item.PropertyName);
            Assert.AreEqual(typeof(IWebElement), item.PropertyType);
            Assert.IsNotNull(item.Value);

            Assert.AreEqual("Hello!", ((IWebElement)item.Value).Text);

            parent.VerifyAll();
            browser.VerifyAll();
            firstRow.VerifyAll();
            oneColumn.VerifyAll();
            cell.VerifyAll();
        }
        public void TestGetItemWithHeadersButNoRowsReturnsNull()
        {
            var oneColumn = new Mock<IWebElement>(MockBehavior.Strict);
            oneColumn.SetupGet(o => o.Text).Returns("MyColumn");

            var firstRow = new Mock<IWebElement>(MockBehavior.Strict);
            firstRow.Setup(f => f.FindElements(By.TagName("th")))
                    .Returns(new List<IWebElement> { oneColumn.Object }.AsReadOnly());

            var browser = new Mock<IBrowser>(MockBehavior.Strict);
            var parent = new Mock<IWebElement>(MockBehavior.Strict);
            parent.Setup(p => p.FindElements(By.TagName("tr")))
                  .Returns(new List<IWebElement> { firstRow.Object }.AsReadOnly());


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNull(result);

            parent.VerifyAll();
            browser.VerifyAll();
            firstRow.VerifyAll();
            oneColumn.VerifyAll();
        }
        public void TestGetItemWithHeadersThatContainWhitespaceAndMultipleRowsReturnsData()
        {
            var oneColumn = new Mock <IWebElement>(MockBehavior.Strict);

            oneColumn.SetupGet(o => o.Text).Returns(" MyColumn  ");

            var firstRow = new Mock <IWebElement>(MockBehavior.Strict);

            firstRow.Setup(f => f.FindElements(By.TagName("th")))
            .Returns(new List <IWebElement> {
                oneColumn.Object
            }.AsReadOnly());

            var cell = new Mock <IWebElement>(MockBehavior.Strict);

            cell.Setup(c => c.Text).Returns("Hello!");

            var secondRow = new Mock <IWebElement>(MockBehavior.Strict);

            secondRow.SetupGet(s => s.Displayed).Returns(true);
            secondRow.Setup(f => f.FindElements(By.TagName("td")))
            .Returns(new List <IWebElement> {
                cell.Object
            }.AsReadOnly());

            var browser = new Mock <IBrowser>(MockBehavior.Strict);
            var parent  = new Mock <IWebElement>(MockBehavior.Strict);

            parent.Setup(p => p.FindElements(By.TagName("tr")))
            .Returns(new List <IWebElement> {
                firstRow.Object, secondRow.Object
            }.AsReadOnly());


            var tableDriver = new SeleniumTableDriver(parent.Object, browser.Object);

            var result = tableDriver.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(SeleniumTableDriver.RowWrapper));
            Assert.IsInstanceOfType(result, typeof(IElementProvider));

            var elementList = ((IElementProvider)result).GetElements().ToList();

            Assert.IsNotNull(elementList);
            Assert.AreEqual(1, elementList.Count);

            var item = elementList.First();

            Assert.AreEqual("mycolumn", item.PropertyName);
            Assert.AreEqual(typeof(IWebElement), item.PropertyType);
            Assert.IsNotNull(item.Value);

            Assert.AreEqual("Hello!", ((IWebElement)item.Value).Text);

            parent.VerifyAll();
            browser.VerifyAll();
            firstRow.VerifyAll();
            oneColumn.VerifyAll();
            cell.VerifyAll();
        }