public virtual void ShouldPassOptionsToFactoryMethodAndReturnExpectedSession()
 {
     var actualSession = new NullDataSession();
     var actualOptions = new { };
     var called = false;
     var builder = new DataSessionBuilder<NullDataSession>(
         options =>
         {
             options.Should().Be(actualOptions);
             called = true;
             return actualSession;
         });
     builder.BuildSession(actualOptions).Should().Be.SameInstanceAs(actualSession);
     called.Should().Be.True();
 }
        public virtual void FactoryMethodShouldBeExecutedInsideConstructionScope()
        {
            var called = false;

            var builder = new DataSessionBuilder<NullDataSession>(
                options =>
                {
                    InternalEnvironment.IsInsideConstructionScope.Should().Be.True();
                    called = true;
                    return new NullDataSession();
                });

            InternalEnvironment.IsInsideConstructionScope.Should().Be.False();
            builder.BuildSession();
            InternalEnvironment.IsInsideConstructionScope.Should().Be.False();

            called.Should().Be.True();
        }
        public virtual void ShouldSetNameCorrectly()
        {
            var builder = new DataSessionBuilder(options => new NullDataSession(), "Test");
            builder.BuildSession();
            builder.Name.Should().Be("Test");

            builder = new DataSessionBuilder(() => new NullDataSession(), "Test");
            builder.BuildSession();
            builder.Name.Should().Be("Test");

            builder = new DataSessionBuilder<NullDataSession>(() => new NullDataSession(), "Test");
            builder.BuildSession();
            builder.Name.Should().Be("Test");

            builder = new DataSessionBuilder<NullDataSession>(options => new NullDataSession());
            builder.BuildSession();
            builder.Name.Should().Be(typeof(NullDataSession).FullName);

            builder = new DataSessionBuilder<NullDataSession>(() => new NullDataSession());
            builder.BuildSession();
            builder.Name.Should().Be(typeof(NullDataSession).FullName);
        }