public void SetsNullValueWhenEnumerableIsEmpty() { var cmd = new Mock <IDbCommand>(); cmd.Setup(c => c.CreateParameter()).Returns(new SqlParameter()); var toTest = new TableValuedParameter("Foo", new TVP2[0], typeof(TVP2), "CustomInt", "Schema"); var res = toTest.CreateDbDataParameter(cmd.Object); res.DbType.Should().Be(DbType.Object, "table valued parameters pass DbType.Object"); res.ParameterName.Should().Be("Foo", "it was passed in the constructor"); res.Direction.Should().Be(ParameterDirection.Input, "it is an input parameter"); res.Value.Should().BeNull(); var typed = res.Should().BeOfType <SqlParameter>().Which; typed.SqlDbType.Should().Be(SqlDbType.Structured, "table valued parameters are Structured"); typed.TypeName.Should().Be("[Schema].[CustomInt]", "it was passed in the constructor"); typed.Value.Should().BeNull(); }
public void IgnoresSetOnlyProperties() { var cmd = new Mock <IDbCommand>(); cmd.Setup(c => c.CreateParameter()).Returns(new SqlParameter()); var toTest = new TableValuedParameter("Foo", new[] { new TVP2(42) }, typeof(TVP2), "CustomInt", "Schema"); var res = toTest.CreateDbDataParameter(cmd.Object); res.DbType.Should().Be(DbType.Object, "table valued parameters pass DbType.Object"); res.ParameterName.Should().Be("Foo", "it was passed in the constructor"); res.Direction.Should().Be(ParameterDirection.Input, "it is an input parameter"); var typed = res.Should().BeOfType <SqlParameter>().Which; typed.SqlDbType.Should().Be(SqlDbType.Structured, "table valued parameters are Structured"); typed.TypeName.Should().Be("[Schema].[CustomInt]", "it was passed in the constructor"); var meta = typed.Value.Should().BeAssignableTo <IEnumerable <SqlDataRecord> >().Which.Single(); meta.FieldCount.Should().Be(1, "only one row was passed in"); meta.GetInt32(0).Should().Be(42, "it was passed in the row"); }
public void SetsConstructorDataTableOnParameter() { var cmd = new Mock <IDbCommand>(); cmd.Setup(c => c.CreateParameter()).Returns(new SqlParameter()); var dt = new DataTable(); dt.Columns.Add("Int", typeof(int)); dt.Rows.Add(42); var toTest = new TableValuedParameter("Foo", dt, "CustomInt", "Schema"); var res = toTest.CreateDbDataParameter(cmd.Object); res.DbType.Should().Be(DbType.Object, "table valued parameters pass DbType.Object"); res.ParameterName.Should().Be("Foo", "it was passed in the constructor"); res.Direction.Should().Be(ParameterDirection.Input, "it is an input parameter"); var typed = res.Should().BeOfType <SqlParameter>().Which; typed.SqlDbType.Should().Be(SqlDbType.Structured, "table valued parameters are Structured"); typed.TypeName.Should().Be("[Schema].[CustomInt]", "it was passed in the constructor"); typed.Value.Should().Be(dt); }