using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
using FluentAssertions; namespace Dapper.ColumnMapper.Tests
{
[TestFixture]
public class ColumnMapperTests
{
private SqlConnection connection; public static readonly string connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=tempdb;Integrated Security=True"; public class ColumnMappingObject
{
public string DefaultColumn { get; set; }
public string NonMatchingColumn { get; set; }
[ColumnMapping("MappedCol")]
public string MappedColumn { get; set; }
public string MiscasedColumn { get; set; }
} [TestFixtureSetUp]
public void Setup()
{
connection = new SqlConnection(connectionString);
connection.Open(); CreateTestTable(); SqlMapper.SetTypeMap(typeof(ColumnMappingObject), new ColumnTypeMapper(typeof(ColumnMappingObject)));
} private void CreateTestTable()
{
const string createSql = @"
create table #Test (Id int, DefaultColumn varchar(20), BadCol varchar(20), MappedCol varchar(20), miscasedColumn varchar(20))
insert #Test values(1, 'DefaultColumn1', 'BadColumn', 'MappedColumn1', 'MiscasedColumn1')"; connection.Execute(createSql);
} [TestFixtureTearDown]
public void TearDown()
{
if (connection != null && connection.State == ConnectionState.Open)
{
const string dropSql = "drop table #Test";
connection.Execute(dropSql); connection.Close();
} connection = null;
} [Test]
public void Property_Matching_Column_Name_Exactly_Is_Mapped_Correctly()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.DefaultColumn.Should().NotBeNullOrEmpty();
selectedObject.DefaultColumn.Should().Be("DefaultColumn1");
} [Test]
public void Property_Not_Matching_Coumn_Name_Exactly_And_No_Attribute_Is_Not_Mapped()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.NonMatchingColumn.Should().BeNullOrEmpty();
} [Test]
public void Property_Using_Column_Mapping_Attribute_Is_Mapped_Correctly()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.MappedColumn.Should().NotBeNullOrEmpty();
selectedObject.MappedColumn.Should().Be("MappedColumn1");
} [Test]
public void Miscased_Property_Is_Mapped_Correctly()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.MiscasedColumn.Should().NotBeNullOrEmpty();
selectedObject.MiscasedColumn.Should().Be("MiscasedColumn1"); } private ColumnMappingObject SelectObjects()
{
const string selectSql = "select * from #Test"; return connection.Query<ColumnMappingObject>(selectSql).FirstOrDefault();
} [Test]
public void Can_Register_Single_Type()
{
ColumnTypeMapper.RegisterForTypes(typeof (DateTime)); var map = SqlMapper.GetTypeMap(typeof(DateTime)); map.Should().NotBeNull();
map.Should().BeOfType<ColumnTypeMapper>();
} [Test]
public void Can_Register_Multiple_Types()
{
ColumnTypeMapper.RegisterForTypes(typeof(DateTime), typeof(TimeSpan)); var dateTimeMap = SqlMapper.GetTypeMap(typeof (DateTime)); dateTimeMap.Should().NotBeNull();
dateTimeMap.Should().BeOfType<ColumnTypeMapper>(); var timeSpanMap = SqlMapper.GetTypeMap(typeof (TimeSpan)); timeSpanMap.Should().NotBeNull();
timeSpanMap.Should().BeOfType<ColumnTypeMapper>();
} }
}

最新文章

  1. 【leetcode】Largest Number
  2. HTML基本组成结构与标签的认识
  3. [读书笔记]Java之静态分派
  4. springboot使用之二:整合mybatis(xml方式)并添加PageHelper插件
  5. ACM: HDU 2563 统计问题-DFS+打表
  6. (译)详解javascript立即执行函数表达式(IIFE)
  7. 5.4 String
  8. Error creating bean with name &#39;bookDao&#39;
  9. java签名证书
  10. struts2 result的type属性
  11. 盛希泰:办公室就像男人的春药——人的一生的精力是有限的,你把有限的时间分配给谁决定你的成败——你有N多选择,你人生的积累就是N多选择加起来的结果
  12. SQLSERVER用无中生有的思想来替代游标
  13. Android高斯模糊技术,实现毛玻璃效果(转)
  14. spark集成hbase与hive数据转换与代码练习
  15. 15分钟在笔记本上搭建 Kubernetes + Istio开发环境
  16. Vue.js——快速入门Vuex
  17. Excel中的数据与DataSet的互换
  18. MIME sniffing攻击
  19. angular2版本迭代之特性追踪
  20. [朴孝敏][Road Trip]

热门文章

  1. 在Linux里读取UBOOT环境变量
  2. 两个数据库表同步的可视化WEB同步程序
  3. 【Android Studio 小技巧】一键查看文件方法结构目录File Structure
  4. js实现归并排序
  5. 关于JDK中的总结和基本知识总结
  6. (转载)Java NIO:NIO原理分析(二)
  7. RTC之初始化
  8. html,css所遇问题(一)
  9. HTTP状态码解读
  10. 谈谈JavaScript事件