Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 43b943a

Browse files
committed
Add Update tests to test parameterized queries
1 parent 0152f06 commit 43b943a

File tree

6 files changed

+132
-33
lines changed

6 files changed

+132
-33
lines changed

tests/ServiceStack.OrmLite.Tests/ApiSqlServerTests.Parameterized.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -301,25 +301,25 @@ public void API_SqlServer_Parameterized_Examples()
301301
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
302302

303303
db.Update(new Person { Id = 1, FirstName = "JJ", Age = 27 }, x => x.LastName == "Hendrix");
304-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=1, \"FirstName\"='JJ', \"LastName\"=NULL, \"Age\"=27 WHERE (\"LastName\" = @0)"));
304+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=@1, \"FirstName\"=@2, \"LastName\"=@3, \"Age\"=@4 WHERE (\"LastName\" = @0)"));
305305

306306
db.Update<Person>(new { FirstName = "JJ" }, x => x.LastName == "Hendrix");
307-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = @0)"));
307+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
308308

309309
db.UpdateNonDefaults(new Person { FirstName = "JJ" }, x => x.LastName == "Hendrix");
310-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = @0)"));
310+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
311311

312312
db.UpdateOnly(new Person { FirstName = "JJ" }, x => x.FirstName);
313-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
313+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
314314

315315
db.UpdateOnly(new Person { FirstName = "JJ" }, x => x.FirstName, x => x.LastName == "Hendrix");
316-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = @0)"));
316+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
317317

318318
db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, q => q.Update(x => x.FirstName));
319-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
319+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
320320

321321
db.UpdateOnly(new Person { FirstName = "JJ" }, q => q.Update(x => x.FirstName).Where(x => x.FirstName == "Jimi"));
322-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"FirstName\" = @0)"));
322+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"FirstName\" = @0)"));
323323

324324
db.UpdateFmt<Person>(set: "FirstName = {0}".SqlFmt("JJ"), where: "LastName = {0}".SqlFmt("Hendrix"));
325325
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET FirstName = 'JJ' WHERE LastName = 'Hendrix'"));

tests/ServiceStack.OrmLite.Tests/ApiSqlServerTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -301,25 +301,25 @@ public void API_SqlServer_Examples()
301301
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
302302

303303
db.Update(new Person { Id = 1, FirstName = "JJ", Age = 27 }, p => p.LastName == "Hendrix");
304-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=1, \"FirstName\"='JJ', \"LastName\"=NULL, \"Age\"=27 WHERE (\"LastName\" = 'Hendrix')"));
304+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=@0, \"FirstName\"=@1, \"LastName\"=@2, \"Age\"=@3 WHERE (\"LastName\" = 'Hendrix')"));
305305

306306
db.Update<Person>(new { FirstName = "JJ" }, p => p.LastName == "Hendrix");
307-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = 'Hendrix')"));
307+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"LastName\" = 'Hendrix')"));
308308

309309
db.UpdateNonDefaults(new Person { FirstName = "JJ" }, p => p.LastName == "Hendrix");
310-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = 'Hendrix')"));
310+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"LastName\" = 'Hendrix')"));
311311

312312
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName);
313-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
313+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
314314

315315
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName, p => p.LastName == "Hendrix");
316-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = 'Hendrix')"));
316+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"LastName\" = 'Hendrix')"));
317317

318-
db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, q => q.Update(p => p.FirstName));
319-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
318+
db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, ev => ev.Update(p => p.FirstName));
319+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
320320

321-
db.UpdateOnly(new Person { FirstName = "JJ" }, q => q.Update(p => p.FirstName).Where(x => x.FirstName == "Jimi"));
322-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"FirstName\" = 'Jimi')"));
321+
db.UpdateOnly(new Person { FirstName = "JJ" }, ev => ev.Update(p => p.FirstName).Where(x => x.FirstName == "Jimi"));
322+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"FirstName\" = 'Jimi')"));
323323

324324
db.UpdateFmt<Person>(set: "FirstName = {0}".SqlFmt("JJ"), where: "LastName = {0}".SqlFmt("Hendrix"));
325325
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET FirstName = 'JJ' WHERE LastName = 'Hendrix'"));

tests/ServiceStack.OrmLite.Tests/ApiSqliteTests.Parameterized.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,25 +305,25 @@ public void API_Sqlite_Parameterized_Examples()
305305
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
306306

307307
db.Update(new Person { Id = 1, FirstName = "JJ", Age = 27 }, p => p.LastName == "Hendrix");
308-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=1, \"FirstName\"='JJ', \"LastName\"=NULL, \"Age\"=27 WHERE (\"LastName\" = @0)"));
308+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=@1, \"FirstName\"=@2, \"LastName\"=@3, \"Age\"=@4 WHERE (\"LastName\" = @0)"));
309309

310310
db.Update<Person>(new { FirstName = "JJ" }, p => p.LastName == "Hendrix");
311-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = @0)"));
311+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
312312

313313
db.UpdateNonDefaults(new Person { FirstName = "JJ" }, p => p.LastName == "Hendrix");
314-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = @0)"));
314+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
315315

316316
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName);
317-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
317+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
318318

319319
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName, p => p.LastName == "Hendrix");
320-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = @0)"));
320+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
321321

322322
db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, ev => ev.Update(p => p.FirstName));
323-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
323+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
324324

325325
db.UpdateOnly(new Person { FirstName = "JJ" }, q => q.Update(p => p.FirstName).Where(x => x.FirstName == "Jimi"));
326-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"FirstName\" = @0)"));
326+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"FirstName\" = @0)"));
327327

328328
db.UpdateFmt<Person>(set: "FirstName = {0}".SqlFmt("JJ"), where: "LastName = {0}".SqlFmt("Hendrix"));
329329
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET FirstName = 'JJ' WHERE LastName = 'Hendrix'"));

tests/ServiceStack.OrmLite.Tests/ApiSqliteTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,25 +305,25 @@ public void API_Sqlite_Examples()
305305
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
306306

307307
db.Update(new Person { Id = 1, FirstName = "JJ", Age = 27 }, p => p.LastName == "Hendrix");
308-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=1, \"FirstName\"='JJ', \"LastName\"=NULL, \"Age\"=27 WHERE (\"LastName\" = 'Hendrix')"));
308+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=@0, \"FirstName\"=@1, \"LastName\"=@2, \"Age\"=@3 WHERE (\"LastName\" = 'Hendrix')"));
309309

310310
db.Update<Person>(new { FirstName = "JJ" }, p => p.LastName == "Hendrix");
311-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = 'Hendrix')"));
311+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"LastName\" = 'Hendrix')"));
312312

313313
db.UpdateNonDefaults(new Person { FirstName = "JJ" }, p => p.LastName == "Hendrix");
314-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = 'Hendrix')"));
314+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"LastName\" = 'Hendrix')"));
315315

316316
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName);
317-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
317+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
318318

319319
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName, p => p.LastName == "Hendrix");
320-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"LastName\" = 'Hendrix')"));
320+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"LastName\" = 'Hendrix')"));
321321

322322
db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, ev => ev.Update(p => p.FirstName));
323-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ'"));
323+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
324324

325325
db.UpdateOnly(new Person { FirstName = "JJ" }, ev => ev.Update(p => p.FirstName).Where(x => x.FirstName == "Jimi"));
326-
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"='JJ' WHERE (\"FirstName\" = 'Jimi')"));
326+
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0 WHERE (\"FirstName\" = 'Jimi')"));
327327

328328
db.UpdateFmt<Person>(set: "FirstName = {0}".SqlFmt("JJ"), where: "LastName = {0}".SqlFmt("Hendrix"));
329329
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET FirstName = 'JJ' WHERE LastName = 'Hendrix'"));

tests/ServiceStack.OrmLite.Tests/EnumTests.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,11 @@ public void Updates_enum_flags_with_int_value()
157157
Assert.That(db.GetLastSql(), Is.StringContaining("=@Flags").Or.StringContaining("=:Flags"));
158158
db.GetLastSql().Print();
159159

160-
db.UpdateOnly(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagThree }, q => q.Flags);
161-
Assert.That(db.GetLastSql(), Is.StringContaining("=" + (int)FlagsEnum.FlagThree));
162-
db.GetLastSql().Print();
160+
db.UpdateOnly(new TypeWithFlagsEnum { Id = 1, Flags = FlagsEnum.FlagThree }, onlyFields:q => q.Flags);
161+
Assert.That(db.GetLastSql().NormalizeSql(), Is.StringContaining("=@0"));
162+
163+
var row = db.SingleById<TypeWithFlagsEnum>(1);
164+
Assert.That(row.Flags, Is.EqualTo(FlagsEnum.FlagThree));
163165
}
164166
}
165167

tests/ServiceStack.OrmLite.Tests/OrmLiteUpdateTests.cs

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,103 @@ public void Can_updated_with_ExecuteSql_and_db_params()
304304
Assert.That(row.Name, Is.EqualTo("UPDATED"));
305305
}
306306
}
307+
308+
[Test]
309+
public void Does_Update_using_db_params()
310+
{
311+
using (var db = OpenDbConnection())
312+
{
313+
db.DropAndCreateTable<Person>();
314+
db.InsertAll(Person.Rockstars);
315+
316+
db.Update(new Person { Id = 1, FirstName = "JJ", Age = 27 }, p => p.LastName == "Hendrix");
317+
318+
var sql = db.GetLastSql().NormalizeSql();
319+
Assert.That(sql, Is.StringContaining("where (lastname = @0)"));
320+
Assert.That(sql, Is.StringContaining("id=@1"));
321+
Assert.That(sql, Is.StringContaining("firstname=@2"));
322+
323+
var row = db.SingleById<Person>(1);
324+
Assert.That(row.FirstName, Is.EqualTo("JJ"));
325+
}
326+
}
327+
328+
[Test]
329+
public void Does_Update_anonymous_using_db_params()
330+
{
331+
using (var db = OpenDbConnection())
332+
{
333+
db.DropAndCreateTable<Person>();
334+
db.InsertAll(Person.Rockstars);
335+
336+
db.Update<Person>(new { FirstName = "JJ" }, p => p.LastName == "Hendrix");
337+
338+
var sql = db.GetLastSql().NormalizeSql();
339+
Assert.That(sql, Is.StringContaining("where (lastname = @0)"));
340+
Assert.That(sql, Is.StringContaining("firstname=@1"));
341+
342+
var row = db.SingleById<Person>(1);
343+
Assert.That(row.FirstName, Is.EqualTo("JJ"));
344+
}
345+
}
346+
347+
[Test]
348+
public void Does_UpdateNonDefaults_using_db_params()
349+
{
350+
using (var db = OpenDbConnection())
351+
{
352+
db.DropAndCreateTable<Person>();
353+
db.InsertAll(Person.Rockstars);
354+
355+
db.UpdateNonDefaults(new Person { FirstName = "JJ" }, p => p.LastName == "Hendrix");
356+
357+
var sql = db.GetLastSql().NormalizeSql();
358+
Assert.That(sql, Is.StringContaining("where (lastname = @0)"));
359+
Assert.That(sql, Is.StringContaining("firstname=@1"));
360+
361+
var row = db.SingleById<Person>(1);
362+
Assert.That(row.FirstName, Is.EqualTo("JJ"));
363+
}
364+
}
365+
366+
[Test]
367+
public void Does_UpdateOnly_using_db_params()
368+
{
369+
using (var db = OpenDbConnection())
370+
{
371+
db.DropAndCreateTable<Person>();
372+
db.InsertAll(Person.Rockstars);
373+
374+
db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName, p => p.LastName == "Hendrix");
375+
376+
var sql = db.GetLastSql().NormalizeSql();
377+
Assert.That(sql, Is.StringContaining("where (lastname = @0)"));
378+
Assert.That(sql, Is.StringContaining("firstname=@1"));
379+
380+
var row = db.SingleById<Person>(1);
381+
Assert.That(row.FirstName, Is.EqualTo("JJ"));
382+
}
383+
}
384+
385+
[Test]
386+
public void Does_UpdateOnly_with_SqlExpression_using_db_params()
387+
{
388+
using (var db = OpenDbConnection())
389+
{
390+
db.DropAndCreateTable<Person>();
391+
db.InsertAll(Person.Rockstars);
392+
393+
db.UpdateOnly(new Person { FirstName = "JJ" }, q => q.Update(p => p.FirstName).Where(x => x.FirstName == "Jimi"));
394+
395+
var sql = db.GetLastSql().NormalizeSql();
396+
Assert.That(sql, Is.StringContaining("where (firstname = @0)"));
397+
Assert.That(sql, Is.StringContaining("firstname=@1"));
398+
399+
var row = db.SingleById<Person>(1);
400+
Assert.That(row.FirstName, Is.EqualTo("JJ"));
401+
}
402+
}
403+
307404
}
308405

309406
[CompositeIndex("FirstName", "LastName")]

0 commit comments

Comments
 (0)