public void LocateElements_CallsSearchContext([Frozen] Mock <ISearchContext> searchContextMock,
                                                      [Frozen] Mock <IWebElement> elementMock,
                                                      DefaultElementLocator sut)
        {
            searchContextMock.Setup(x => x.FindElements(It.IsAny <By>())).Returns(new ReadOnlyCollection <IWebElement>(new[] { elementMock.Object }.ToList()));

            sut.LocateElements(_bys);

            searchContextMock.Verify(x => x.FindElements(It.IsAny <By>()), Times.Exactly(_bys.Count()));
        }
        public void LocateElements_ReturnsEmptyListWhenNothingIsFound(
            [Frozen] Mock <ISearchContext> searchContextMock,
            DefaultElementLocator sut)
        {
            searchContextMock.Setup(x => x.FindElements(_bys.First()))
            .Throws(new NoSuchElementException());
            searchContextMock.Setup(x => x.FindElements(_bys.Last()))
            .Throws(new NoSuchElementException());

            sut.LocateElements(_bys).Should().BeEmpty();
        }
        public void LocateElement_ThrowsExceptionWhenNothingIsFound([Frozen] Mock <ISearchContext> searchContextMock)
        {
            var sut = new DefaultElementLocator(searchContextMock.Object, TimeSpan.FromMilliseconds(5),
                                                TimeSpan.FromMilliseconds(20));

            searchContextMock.Setup(x => x.FindElements(_bys.First()))
            .Throws(new NoSuchElementException());
            searchContextMock.Setup(x => x.FindElements(_bys.Last()))
            .Throws(new NoSuchElementException());

            Action action = () => sut.LocateElement(_bys);

            action.Should().Throw <NoSuchElementException>();
        }
        public void LocateElement_IteratesBysUntilAnyWasFound(
            [Frozen] Mock <ISearchContext> searchContextMock,
            Mock <IWebElement> webElementMock,
            DefaultElementLocator sut)
        {
            searchContextMock.Setup(x => x.FindElements(_bys.First()))
            .Throws(new NoSuchElementException());
            searchContextMock.Setup(x => x.FindElements(_bys.Last()))
            .Returns(new ReadOnlyCollection <IWebElement>(new[] { webElementMock.Object }));

            sut.LocateElement(_bys).Should().Be(webElementMock.Object);

            searchContextMock.Verify(x => x.FindElements(_bys.First()), Times.AtLeastOnce());
            searchContextMock.Verify(x => x.FindElements(_bys.Last()), Times.AtLeastOnce());
        }
        public static void InitElements(ISearchContext searchContext, object obj)
        {
            var locator = new DefaultElementLocator(searchContext);

            InitElements(locator, obj);
        }
 public void LocateElements_ArgumentNullExceptions(DefaultElementLocator sut)
 {
     new Action(() => sut.LocateElements(null)).Should().Throw <ArgumentNullException>();
 }