• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / FluentCommand / 5874771988

16 Aug 2023 04:44AM UTC coverage: 43.028% (+2.5%) from 40.495%
5874771988

push

github

web-flow
Merge pull request #277 from loresoft/feature/method-injectors

Feature/method injectors

765 of 2171 branches covered (35.24%)

Branch coverage included in aggregate %.

126 of 126 new or added lines in 6 files covered. (100.0%)

2361 of 5094 relevant lines covered (46.35%)

119.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/test/FluentCommand.SqlServer.Tests/DataCommandSqlTests.cs
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4

5
using FluentAssertions;
6

7
using FluentCommand.Entities;
8
using FluentCommand.Extensions;
9

10
using Microsoft.Data.SqlClient;
11

12
using Xunit;
13
using Xunit.Abstractions;
14

15
namespace FluentCommand.SqlServer.Tests;
16

17
public class DataCommandSqlTests : DatabaseTestBase
18
{
19
    public DataCommandSqlTests(ITestOutputHelper output, DatabaseFixture databaseFixture) : base(output, databaseFixture)
×
20
    {
21
    }
×
22

23
    [Fact]
24
    public void SqlQuerySingleEntity()
25
    {
26
        var session = GetConfiguration().CreateSession();
×
27
        session.Should().NotBeNull();
×
28

29
        string email = "kara.thrace@battlestar.com";
×
30
        string sql = "select * from [User] where EmailAddress = @EmailAddress";
×
31

32
        var user = session.Sql(sql)
×
33
            .Parameter("@EmailAddress", email)
×
34
            .QuerySingle(r => new User
×
35
            {
×
36
                Id = r.GetGuid("Id"),
×
37
                EmailAddress = r.GetString("EmailAddress"),
×
38
                IsEmailAddressConfirmed = r.GetBoolean("IsEmailAddressConfirmed"),
×
39
                DisplayName = r.GetString("DisplayName"),
×
40
                PasswordHash = r.GetString("PasswordHash"),
×
41
                ResetHash = r.GetString("ResetHash"),
×
42
                InviteHash = r.GetString("InviteHash"),
×
43
                AccessFailedCount = r.GetInt32("AccessFailedCount"),
×
44
                LockoutEnabled = r.GetBoolean("LockoutEnabled"),
×
45
                LockoutEnd = r.GetDateTimeOffsetNull("LockoutEnd"),
×
46
                LastLogin = r.GetDateTimeOffsetNull("LastLogin"),
×
47
                IsDeleted = r.GetBoolean("IsDeleted"),
×
48
                Created = r.GetDateTimeOffset("Created"),
×
49
                CreatedBy = r.GetString("CreatedBy"),
×
50
                Updated = r.GetDateTimeOffset("Updated"),
×
51
                UpdatedBy = r.GetString("UpdatedBy"),
×
52
                RowVersion = r.GetBytes("RowVersion"),
×
53
            });
×
54

55
        user.Should().NotBeNull();
×
56
        user.EmailAddress.Should().Be(email);
×
57
    }
×
58

59
    [Fact]
60
    public void SqlQuerySingleEntityFactory()
61
    {
62
        var session = GetConfiguration().CreateSession();
×
63
        session.Should().NotBeNull();
×
64

65
        string email = "kara.thrace@battlestar.com";
×
66
        string sql = "select * from [User] where EmailAddress = @EmailAddress";
×
67

68
        var user = session.Sql(sql)
×
69
            .Parameter("@EmailAddress", email)
×
70
            .QuerySingle<User>();
×
71

72
        user.Should().NotBeNull();
×
73
        user.EmailAddress.Should().Be(email);
×
74
    }
×
75

76
    [Fact]
77
    public void SqlQuerySingleEntityFactoryCache()
78
    {
79
        var session = GetConfiguration().CreateSession();
×
80
        session.Should().NotBeNull();
×
81

82
        string email = "kara.thrace@battlestar.com";
×
83
        string sql = "select * from [User] where EmailAddress = @EmailAddress";
×
84

85
        var user = session.Sql(sql)
×
86
            .Parameter("@EmailAddress", email)
×
87
            .UseCache(TimeSpan.FromMinutes(5))
×
88
            .QuerySingle<User>();
×
89

90
        user.Should().NotBeNull();
×
91
        user.EmailAddress.Should().Be(email);
×
92

93
        var cachedUser = session.Sql(sql)
×
94
            .Parameter("@EmailAddress", email)
×
95
            .UseCache(TimeSpan.FromMinutes(5))
×
96
            .QuerySingle<User>();
×
97

98
        cachedUser.Should().NotBeNull();
×
99
        cachedUser.EmailAddress.Should().Be(email);
×
100

101
    }
×
102

103
    [Fact]
104
    public void SqlQuerySingleEntityDynamic()
105
    {
106
        var session = GetConfiguration().CreateSession();
×
107
        session.Should().NotBeNull();
×
108

109
        string email = "kara.thrace@battlestar.com";
×
110
        string sql = "select * from [User] where EmailAddress = @EmailAddress";
×
111

112
        dynamic user = session.Sql(sql)
×
113
            .Parameter("@EmailAddress", email)
×
114
            .QuerySingle();
×
115

116
        Assert.NotNull(user);
×
117
        Assert.Equal(user.EmailAddress, email);
×
118
    }
×
119

120
    [Fact]
121
    public void SqlQueryEntity()
122
    {
123
        var session = GetConfiguration().CreateSession();
×
124
        session.Should().NotBeNull();
×
125

126
        string email = "%@battlestar.com";
×
127
        string sql = "select * from [User] where EmailAddress like @EmailAddress";
×
128

129
        var users = session.Sql(sql)
×
130
            .Parameter("@EmailAddress", email)
×
131
            .Query(r => new User
×
132
            {
×
133
                Id = r.GetGuid("Id"),
×
134
                EmailAddress = r.GetString("EmailAddress"),
×
135
                IsEmailAddressConfirmed = r.GetBoolean("IsEmailAddressConfirmed"),
×
136
                DisplayName = r.GetString("DisplayName"),
×
137
                PasswordHash = r.GetString("PasswordHash"),
×
138
                ResetHash = r.GetString("ResetHash"),
×
139
                InviteHash = r.GetString("InviteHash"),
×
140
                AccessFailedCount = r.GetInt32("AccessFailedCount"),
×
141
                LockoutEnabled = r.GetBoolean("LockoutEnabled"),
×
142
                LockoutEnd = r.GetDateTimeOffsetNull("LockoutEnd"),
×
143
                LastLogin = r.GetDateTimeOffsetNull("LastLogin"),
×
144
                IsDeleted = r.GetBoolean("IsDeleted"),
×
145
                Created = r.GetDateTimeOffset("Created"),
×
146
                CreatedBy = r.GetString("CreatedBy"),
×
147
                Updated = r.GetDateTimeOffset("Updated"),
×
148
                UpdatedBy = r.GetString("UpdatedBy"),
×
149
                RowVersion = r.GetBytes("RowVersion"),
×
150
            });
×
151

152
        users.Should().NotBeNull();
×
153
        users.Should().NotBeEmpty();
×
154
    }
×
155

156
    [Fact]
157
    public void SqlQueryEntityError()
158
    {
159
        var session = GetConfiguration().CreateSession();
×
160
        session.Should().NotBeNull();
×
161

162
        string email = "%@battlestar.com";
×
163
        string sql = "select * from [Blah].[User] where EmailAddress like @EmailAddress";
×
164

165
        Action action = () =>
×
166
        {
×
167
            var users = session.Sql(sql)
×
168
                .Parameter("@EmailAddress", email)
×
169
                .Query(r => new User
×
170
                {
×
171
                    Id = r.GetGuid("Id"),
×
172
                    EmailAddress = r.GetString("EmailAddress"),
×
173
                    IsEmailAddressConfirmed = r.GetBoolean("IsEmailAddressConfirmed"),
×
174
                    DisplayName = r.GetString("DisplayName"),
×
175
                    PasswordHash = r.GetString("PasswordHash"),
×
176
                    ResetHash = r.GetString("ResetHash"),
×
177
                    InviteHash = r.GetString("InviteHash"),
×
178
                    AccessFailedCount = r.GetInt32("AccessFailedCount"),
×
179
                    LockoutEnabled = r.GetBoolean("LockoutEnabled"),
×
180
                    LockoutEnd = r.GetDateTimeOffsetNull("LockoutEnd"),
×
181
                    LastLogin = r.GetDateTimeOffsetNull("LastLogin"),
×
182
                    IsDeleted = r.GetBoolean("IsDeleted"),
×
183
                    Created = r.GetDateTimeOffset("Created"),
×
184
                    CreatedBy = r.GetString("CreatedBy"),
×
185
                    Updated = r.GetDateTimeOffset("Updated"),
×
186
                    UpdatedBy = r.GetString("UpdatedBy"),
×
187
                    RowVersion = r.GetBytes("RowVersion"),
×
188
                });
×
189
        };
×
190

191
        action.Should().Throw<SqlException>();
×
192
    }
×
193

194
    [Fact]
195
    public void SqlQueryEntityDynamic()
196
    {
197
        var session = GetConfiguration().CreateSession();
×
198
        session.Should().NotBeNull();
×
199

200
        string email = "%@battlestar.com";
×
201
        string sql = "select * from [User] where EmailAddress like @EmailAddress";
×
202

203
        IEnumerable<dynamic> users = session.Sql(sql)
×
204
            .Parameter("@EmailAddress", email)
×
205
            .Query();
×
206

207
        users.Should().NotBeNull();
×
208
        users.Should().NotBeEmpty();
×
209
    }
×
210

211
    [Fact]
212
    public void SqlQueryEntityDynamicCache()
213
    {
214
        var session = GetConfiguration().CreateSession();
×
215
        session.Should().NotBeNull();
×
216

217
        string email = "%@battlestar.com";
×
218
        string sql = "select * from [User] where EmailAddress like @EmailAddress";
×
219

220
        var users = session
×
221
            .Sql(sql)
×
222
            .Parameter("@EmailAddress", email)
×
223
            .UseCache(TimeSpan.FromMinutes(5))
×
224
            .Query()
×
225
            .ToList();
×
226

227
        users.Should().NotBeNull();
×
228
        users.Should().NotBeEmpty();
×
229

230
        var cachedUsers = session
×
231
            .Sql(sql)
×
232
            .Parameter("@EmailAddress", email)
×
233
            .UseCache(TimeSpan.FromMinutes(5))
×
234
            .Query()
×
235
            .ToList();
×
236

237
        cachedUsers.Should().NotBeNull();
×
238
        cachedUsers.Should().NotBeEmpty();
×
239
    }
×
240

241
    [Fact]
242
    public void SqlQueryEntityFactory()
243
    {
244
        var session = GetConfiguration().CreateSession();
×
245
        session.Should().NotBeNull();
×
246

247
        string email = "%@battlestar.com";
×
248
        string sql = "select * from [User] where EmailAddress like @EmailAddress";
×
249

250
        var users = session.Sql(sql)
×
251
            .Parameter("@EmailAddress", email)
×
252
            .Query<User>();
×
253

254
        users.Should().NotBeNull();
×
255
        users.Should().NotBeEmpty();
×
256
    }
×
257

258
    [Fact]
259
    public void SqlQueryTable()
260
    {
261
        var session = GetConfiguration().CreateSession();
×
262
        session.Should().NotBeNull();
×
263

264
        string email = "%@battlestar.com";
×
265
        string sql = "select * from [User] where EmailAddress like @EmailAddress";
×
266

267
        var users = session.Sql(sql)
×
268
            .Parameter("@EmailAddress", email)
×
269
            .QueryTable();
×
270

271
        users.Should().NotBeNull();
×
272
    }
×
273

274
    [Fact]
275
    public void SqlQueryValue()
276
    {
277
        var session = GetConfiguration().CreateSession();
×
278
        session.Should().NotBeNull();
×
279

280
        string email = "%@battlestar.com";
×
281
        string sql = "select Count(*) from [User] where EmailAddress like @EmailAddress";
×
282

283
        var count = session.Sql(sql)
×
284
            .Parameter("@EmailAddress", email)
×
285
            .QueryValue<int>();
×
286

287
        count.Should().BeGreaterThan(0);
×
288
    }
×
289

290
    [Fact]
291
    public void SqlReader()
292
    {
293
        var session = GetConfiguration().CreateSession();
×
294
        session.Should().NotBeNull();
×
295

296
        string email = "%@battlestar.com";
×
297
        string sql = "select * from [User] where EmailAddress like @EmailAddress";
×
298

299
        var users = new List<dynamic>();
×
300

301
        session.Sql(sql)
×
302
            .Parameter("@EmailAddress", email)
×
303
            .Read(reader =>
×
304
            {
×
305
                while (reader.Read())
×
306
                {
×
307
                    var user = DataReaderExtensions.DynamicFactory(reader);
×
308
                    users.Add(user);
×
309
                }
×
310
            });
×
311

312
        users.Should().NotBeNull();
×
313
        users.Should().NotBeEmpty();
×
314
    }
×
315

316
    [Fact]
317
    public void SqlQueryMultiple()
318
    {
319

320
        string email = "kara.thrace@battlestar.com";
×
321
        string sql = "select * from [User] where EmailAddress = @EmailAddress; " +
×
322
                     "select * from [Role]; " +
×
323
                     "select * from [Priority]; ";
×
324

325
        User user = null;
×
326
        List<Role> roles = null;
×
327
        List<Priority> priorities = null;
×
328

329
        using (var session = GetConfiguration().CreateSession())
×
330
        {
331
            session.Should().NotBeNull();
×
332
            session.Sql(sql)
×
333
                .Parameter("@EmailAddress", email)
×
334
                .QueryMultiple(q =>
×
335
                {
×
336
                    user = q.QuerySingle<User>();
×
337
                    roles = q.Query<Role>().ToList();
×
338
                    priorities = q.Query<Priority>().ToList();
×
339
                });
×
340
        }
×
341

342
        user.Should().NotBeNull();
×
343
        user.EmailAddress.Should().NotBeEmpty();
×
344

345
        roles.Should().NotBeNull();
×
346
        roles.Should().NotBeEmpty();
×
347

348
        priorities.Should().NotBeNull();
×
349
        priorities.Should().NotBeEmpty();
×
350

351
    }
×
352

353
    [Fact]
354
    public void SqlQueryEntityTimeOut()
355
    {
356
        var session = GetConfiguration().CreateSession();
×
357
        session.Should().NotBeNull();
×
358

359
        string email = "%@battlestar.com";
×
360
        string sql = "select * from [User] where EmailAddress like @EmailAddress";
×
361

362
        var dataCommand = session.Sql(sql);
×
363

364
        dataCommand
×
365
            .CommandTimeout(TimeSpan.FromMinutes(5))
×
366
            .Parameter("@EmailAddress", email);
×
367

368
        dataCommand.Command.CommandTimeout.Should().Be(300);
×
369
    }
×
370

371
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc