1+ using System ;
2+ using System . Linq ;
3+ using NUnit . Framework ;
4+
5+ namespace Shuttle . Core . Data . Tests
6+ {
7+ [ TestFixture ]
8+ public class QueryMapperFixture : Fixture
9+ {
10+ [ SetUp ]
11+ public void SetUp ( )
12+ {
13+ using ( GetDatabaseContext ( ) )
14+ {
15+ new DatabaseGateway ( ) . ExecuteUsing ( RawQuery . Create ( @"
16+ IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[BasicMapping]') AND type in (N'U'))
17+ BEGIN
18+ CREATE TABLE [dbo].[BasicMapping](
19+ [Id] [uniqueidentifier] NOT NULL,
20+ [Name] [varchar](65) NOT NULL,
21+ [Age] [int] NOT NULL,
22+ CONSTRAINT [PK_BasicMapping] PRIMARY KEY CLUSTERED
23+ (
24+ [Id] ASC
25+ )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
26+ ) ON [PRIMARY]
27+ END
28+
29+ IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[DF_BasicMapping_Id]') AND type = 'D')
30+ BEGIN
31+ ALTER TABLE [dbo].[BasicMapping] ADD CONSTRAINT [DF_BasicMapping_Id] DEFAULT (newid()) FOR [Id]
32+ END
33+
34+ delete from BasicMapping;
35+
36+ insert into BasicMapping
37+ (
38+ Id,
39+ Name,
40+ Age
41+ )
42+ values
43+ (
44+ 'E09D96E1-5401-4CB6-A871-092DA1C7248D',
45+ 'Name-1',
46+ 25
47+ )
48+
49+ insert into BasicMapping
50+ (
51+ Id,
52+ Name,
53+ Age
54+ )
55+ values
56+ (
57+ 'B5E0088E-4873-4244-9B91-1059E0383C3E',
58+ 'Name-2',
59+ 50
60+ )
61+ " ) ) ;
62+ }
63+ }
64+
65+ [ Test ]
66+ public void Should_be_able_to_do_basic_mapping ( )
67+ {
68+ var mapper = new QueryMapper ( new DatabaseGateway ( ) ) ;
69+
70+ var queryRow = RawQuery . Create ( @"
71+ select top 1
72+ Id,
73+ Name,
74+ Age
75+ from
76+ BasicMapping
77+ " ) ;
78+
79+ var queryRows = RawQuery . Create ( @"
80+ select
81+ Id,
82+ Name,
83+ Age
84+ from
85+ BasicMapping
86+ " ) ;
87+
88+ using ( GetDatabaseContext ( ) )
89+ {
90+ var item = mapper . MapObject < BasicMapping > ( queryRow ) ;
91+ var items = mapper . MapObjects < BasicMapping > ( queryRows ) ;
92+
93+ Assert . IsNotNull ( item ) ;
94+ Assert . AreEqual ( 2 , items . Count ( ) ) ;
95+
96+ var mappedRow = mapper . MapRow < BasicMapping > ( queryRow ) ;
97+ var mappedRows = mapper . MapRows < BasicMapping > ( queryRows ) ;
98+
99+ Assert . IsNotNull ( mappedRow ) ;
100+ Assert . AreEqual ( 2 , mappedRows . Count ( ) ) ;
101+ }
102+ }
103+
104+ [ Test ]
105+ public void Should_be_able_to_do_basic_mapping_even_though_columns_are_missing ( )
106+ {
107+ var mapper = new QueryMapper ( new DatabaseGateway ( ) ) ;
108+
109+ var queryRow = RawQuery . Create ( @"
110+ select top 1
111+ Id,
112+ Name as NotMapped,
113+ Age as TheAge
114+ from
115+ BasicMapping
116+ " ) ;
117+
118+ var queryRows = RawQuery . Create ( @"
119+ select
120+ Id,
121+ Name,
122+ Age
123+ from
124+ BasicMapping
125+ " ) ;
126+
127+ using ( GetDatabaseContext ( ) )
128+ {
129+ var item = mapper . MapObject < BasicMapping > ( queryRow ) ;
130+ var items = mapper . MapObjects < BasicMapping > ( queryRows ) ;
131+
132+ Assert . IsNotNull ( item ) ;
133+ Assert . AreEqual ( 2 , items . Count ( ) ) ;
134+
135+ var mappedRow = mapper . MapRow < BasicMapping > ( queryRow ) ;
136+ var mappedRows = mapper . MapRows < BasicMapping > ( queryRows ) ;
137+
138+ Assert . IsNotNull ( mappedRow ) ;
139+ Assert . AreEqual ( 2 , mappedRows . Count ( ) ) ;
140+ }
141+ }
142+
143+ [ Test ]
144+ public void Should_be_able_to_do_value_mapping ( )
145+ {
146+ var mapper = new QueryMapper ( new DatabaseGateway ( ) ) ;
147+
148+ var queryRow = RawQuery . Create ( @"
149+ select top 1
150+ Id
151+ from
152+ BasicMapping
153+ " ) ;
154+
155+ var queryRows = RawQuery . Create ( @"
156+ select
157+ Id
158+ from
159+ BasicMapping
160+ " ) ;
161+
162+ using ( GetDatabaseContext ( ) )
163+ {
164+ var value = mapper . MapValue < Guid > ( queryRow ) ;
165+ var values = mapper . MapValues < Guid > ( queryRows ) ;
166+
167+ Assert . IsNotNull ( value ) ;
168+ Assert . AreEqual ( 2 , values . Count ( ) ) ;
169+ }
170+ }
171+ }
172+ }
0 commit comments