public void DefaultElementActivator_Create_ViaParameters(Class1 class1)
        {
            var defaultElementActivator = new DefaultElementActivator();
            var instance = defaultElementActivator.Create <ClassWithMultipleConstructors>(class1);

            instance.Class1.Should().Be(class1);
        }
        public void DefaultElementActivator_Create_MatchesFirstParameter_ViaConstructorParameter(Class1 class1, Class2 class2)
        {
            var sut      = new DefaultElementActivator(class1);
            var instance = sut.Create <ClassWithMultipleConstructors>(class2);

            instance.Class1.Should().Be(class1);
            instance.Interface1.Should().Be(class2);
            instance.Interface2.Should().Be(class2);
        }
        public void DefaultElementActivator_Create_IsGreedy(Class1 class1, Class2 class2)
        {
            var sut      = new DefaultElementActivator();
            var instance = sut.Create <ClassWithMultipleConstructors>(class1, class2);

            instance.Class1.Should().Be(class1);
            instance.Interface1.Should().Be(class1);
            instance.Interface2.Should().Be(class2);
        }
        public void DefaultElementActivator_Create_Throws()
        {
            var sut    = new DefaultElementActivator();
            var action = new Action(() => sut.Create <ClassWithMultipleConstructors>());

            action.Should()
            .Throw <ActivationException>()
            .WithMessage("Cannot resolve parameter 'Selenium.Community.PageObjects.Tests.DefaultElementActivatorTests+Class1 class1' of constructor 'Void .ctor(Selenium.Community.PageObjects.Tests.DefaultElementActivatorTests+Class1)'.");
        }
        public void DefaultElementActivator_Create_NoConstructor()
        {
            var defaultElementActivator = new DefaultElementActivator();

            new Action(() => defaultElementActivator.Create <Class1>()).Should().NotThrow();
        }