Modernize tests, remove Tester project, and automate amalgamation pipeline
This commit is contained in:
@@ -1,391 +1,391 @@
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using DynamORM.Tests.Helpers;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>Test standard dynamic access ORM.</summary>
|
||||
[TestClass]
|
||||
public class DynamicModificationTests : TestsBase
|
||||
{
|
||||
/// <summary>Setup test parameters.</summary>
|
||||
[TestInitialize]
|
||||
public virtual void SetUp()
|
||||
{
|
||||
CreateTestDatabase();
|
||||
CreateDynamicDatabase();
|
||||
}
|
||||
|
||||
/// <summary>Tear down test objects.</summary>
|
||||
[TestCleanup]
|
||||
public virtual void TearDown()
|
||||
{
|
||||
DestroyDynamicDatabase();
|
||||
DestroyTestDatabase();
|
||||
}
|
||||
|
||||
/// <summary>Create table using specified method.</summary>
|
||||
/// <returns>Dynamic table.</returns>
|
||||
public virtual dynamic GetTestTable()
|
||||
{
|
||||
return Database.Table("users");
|
||||
}
|
||||
|
||||
#region Insert
|
||||
|
||||
/// <summary>Test row insertion by dynamic arguments.</summary>
|
||||
[TestMethod]
|
||||
public void TestInsertByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Insert(code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "201");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("201", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row insertion by dynamic object.</summary>
|
||||
[TestMethod]
|
||||
public void TestInsertByDynamicObjects()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Insert(values: new { code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "202");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("202", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row insertion by mapped object.</summary>
|
||||
[TestMethod]
|
||||
public void TestInsertByMappedObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Insert(values: new Users
|
||||
{
|
||||
Id = u.Max(columns: "id") + 1,
|
||||
Code = "203",
|
||||
First = null,
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "203");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("203", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row insertion by basic object.</summary>
|
||||
[TestMethod]
|
||||
public void TestInsertByBasicObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Insert(values: new users
|
||||
{
|
||||
id = u.Max(columns: "id") + 1,
|
||||
code = "204",
|
||||
first = null,
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "204");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("204", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
#endregion Insert
|
||||
|
||||
#region Update
|
||||
|
||||
/// <summary>Test row updating by dynamic arguments.</summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(id: 1, code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "201");
|
||||
Assert.AreEqual(1, o.id);
|
||||
Assert.AreEqual("201", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by dynamic objects.</summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateByDynamicObject()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(update: new { id = 2, code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "202");
|
||||
Assert.AreEqual(2, o.id);
|
||||
Assert.AreEqual("202", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by mapped object.</summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateByMappedObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(update: new Users
|
||||
{
|
||||
Id = 3,
|
||||
Code = "203",
|
||||
First = null,
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "203");
|
||||
Assert.AreEqual(3, o.id);
|
||||
Assert.AreEqual("203", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by basic object.</summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateByBasicObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(update: new users
|
||||
{
|
||||
id = 4,
|
||||
code = "204",
|
||||
first = null,
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "204");
|
||||
Assert.AreEqual(4, o.id);
|
||||
Assert.AreEqual("204", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by dynamic objects.</summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateByDynamicObjects()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(values: new { code = "205", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }, where: new { id = 5 }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "205");
|
||||
Assert.AreEqual(5, o.id);
|
||||
Assert.AreEqual("205", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by mapped objects.</summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateByMappedObjects()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(values: new Users
|
||||
{
|
||||
Id = 6,
|
||||
Code = "206",
|
||||
First = null,
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}, id: 6));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "206");
|
||||
Assert.AreEqual(6, o.id);
|
||||
Assert.AreEqual("206", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by basic objects.</summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateByBasicObjects()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(values: new users
|
||||
{
|
||||
id = 7,
|
||||
code = "207",
|
||||
first = null,
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}, id: 7));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "207");
|
||||
Assert.AreEqual(7, o.id);
|
||||
Assert.AreEqual("207", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
#endregion Update
|
||||
|
||||
#region Delete
|
||||
|
||||
/// <summary>Test row deleting by dynamic arguments.</summary>
|
||||
[TestMethod]
|
||||
public void TestDeleteByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(code: "10"));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(code: "10"));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by dynamic objects (all except ID should be ignored).</summary>
|
||||
[TestMethod]
|
||||
public void TestDeleteyDynamicObject()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(delete: new { id = 11, code = 11, first = "Juri", last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 11));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by mapped object.</summary>
|
||||
[TestMethod]
|
||||
public void TestDeleteByMappedObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Delete(delete: new Users
|
||||
{
|
||||
Id = 12,
|
||||
Code = "12",
|
||||
First = "Juri",
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 12));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by basic object.</summary>
|
||||
[TestMethod]
|
||||
public void TestDeleteByBasicObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Delete(delete: new users
|
||||
{
|
||||
id = 13,
|
||||
code = "13",
|
||||
first = "Juri",
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 13));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by dynamic objects (all except ID should be ignored).</summary>
|
||||
[TestMethod]
|
||||
public void TestDeleteyDynamicObjectWhere()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(where: new { id = 14, code = "14" }));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 14));
|
||||
}
|
||||
|
||||
#endregion Delete
|
||||
}
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using DynamORM.Tests.Helpers;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>Test standard dynamic access ORM.</summary>
|
||||
[TestFixture]
|
||||
public class DynamicModificationTests : TestsBase
|
||||
{
|
||||
/// <summary>Setup test parameters.</summary>
|
||||
[SetUp]
|
||||
public virtual void SetUp()
|
||||
{
|
||||
CreateTestDatabase();
|
||||
CreateDynamicDatabase();
|
||||
}
|
||||
|
||||
/// <summary>Tear down test objects.</summary>
|
||||
[TearDown]
|
||||
public virtual void TearDown()
|
||||
{
|
||||
DestroyDynamicDatabase();
|
||||
DestroyTestDatabase();
|
||||
}
|
||||
|
||||
/// <summary>Create table using specified method.</summary>
|
||||
/// <returns>Dynamic table.</returns>
|
||||
public virtual dynamic GetTestTable()
|
||||
{
|
||||
return Database.Table("users");
|
||||
}
|
||||
|
||||
#region Insert
|
||||
|
||||
/// <summary>Test row insertion by dynamic arguments.</summary>
|
||||
[Test]
|
||||
public void TestInsertByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Insert(code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "201");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("201", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row insertion by dynamic object.</summary>
|
||||
[Test]
|
||||
public void TestInsertByDynamicObjects()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Insert(values: new { code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "202");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("202", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row insertion by mapped object.</summary>
|
||||
[Test]
|
||||
public void TestInsertByMappedObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Insert(values: new Users
|
||||
{
|
||||
Id = u.Max(columns: "id") + 1,
|
||||
Code = "203",
|
||||
First = null,
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "203");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("203", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row insertion by basic object.</summary>
|
||||
[Test]
|
||||
public void TestInsertByBasicObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Insert(values: new users
|
||||
{
|
||||
id = u.Max(columns: "id") + 1,
|
||||
code = "204",
|
||||
first = null,
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "204");
|
||||
Assert.AreNotEqual(200, o.id);
|
||||
Assert.AreEqual("204", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
#endregion Insert
|
||||
|
||||
#region Update
|
||||
|
||||
/// <summary>Test row updating by dynamic arguments.</summary>
|
||||
[Test]
|
||||
public void TestUpdateByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(id: 1, code: "201", first: null, last: "Gagarin", email: "juri.gagarin@megacorp.com", quote: "bla, bla, bla"));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "201");
|
||||
Assert.AreEqual(1, o.id);
|
||||
Assert.AreEqual("201", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by dynamic objects.</summary>
|
||||
[Test]
|
||||
public void TestUpdateByDynamicObject()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(update: new { id = 2, code = "202", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "202");
|
||||
Assert.AreEqual(2, o.id);
|
||||
Assert.AreEqual("202", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by mapped object.</summary>
|
||||
[Test]
|
||||
public void TestUpdateByMappedObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(update: new Users
|
||||
{
|
||||
Id = 3,
|
||||
Code = "203",
|
||||
First = null,
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "203");
|
||||
Assert.AreEqual(3, o.id);
|
||||
Assert.AreEqual("203", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by basic object.</summary>
|
||||
[Test]
|
||||
public void TestUpdateByBasicObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(update: new users
|
||||
{
|
||||
id = 4,
|
||||
code = "204",
|
||||
first = null,
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "204");
|
||||
Assert.AreEqual(4, o.id);
|
||||
Assert.AreEqual("204", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by dynamic objects.</summary>
|
||||
[Test]
|
||||
public void TestUpdateByDynamicObjects()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Update(values: new { code = "205", first = DBNull.Value, last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }, where: new { id = 5 }));
|
||||
|
||||
// Verify
|
||||
var o = GetTestTable().Single(code: "205");
|
||||
Assert.AreEqual(5, o.id);
|
||||
Assert.AreEqual("205", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by mapped objects.</summary>
|
||||
[Test]
|
||||
public void TestUpdateByMappedObjects()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(values: new Users
|
||||
{
|
||||
Id = 6,
|
||||
Code = "206",
|
||||
First = null,
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}, id: 6));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "206");
|
||||
Assert.AreEqual(6, o.id);
|
||||
Assert.AreEqual("206", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
/// <summary>Test row updating by basic objects.</summary>
|
||||
[Test]
|
||||
public void TestUpdateByBasicObjects()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Update(values: new users
|
||||
{
|
||||
id = 7,
|
||||
code = "207",
|
||||
first = null,
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}, id: 7));
|
||||
|
||||
// Verify
|
||||
var o = u.Single(code: "207");
|
||||
Assert.AreEqual(7, o.id);
|
||||
Assert.AreEqual("207", o.code.ToString());
|
||||
Assert.IsNull(o.first);
|
||||
Assert.AreEqual("Gagarin", o.last);
|
||||
Assert.AreEqual("juri.gagarin@megacorp.com", o.email);
|
||||
Assert.AreEqual("bla, bla, bla", o.quote);
|
||||
Assert.IsNull(o.password);
|
||||
}
|
||||
|
||||
#endregion Update
|
||||
|
||||
#region Delete
|
||||
|
||||
/// <summary>Test row deleting by dynamic arguments.</summary>
|
||||
[Test]
|
||||
public void TestDeleteByArguments()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(code: "10"));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(code: "10"));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by dynamic objects (all except ID should be ignored).</summary>
|
||||
[Test]
|
||||
public void TestDeleteyDynamicObject()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(delete: new { id = 11, code = 11, first = "Juri", last = "Gagarin", email = "juri.gagarin@megacorp.com", quote = "bla, bla, bla" }));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 11));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by mapped object.</summary>
|
||||
[Test]
|
||||
public void TestDeleteByMappedObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Delete(delete: new Users
|
||||
{
|
||||
Id = 12,
|
||||
Code = "12",
|
||||
First = "Juri",
|
||||
Last = "Gagarin",
|
||||
Email = "juri.gagarin@megacorp.com",
|
||||
Quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 12));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by basic object.</summary>
|
||||
[Test]
|
||||
public void TestDeleteByBasicObject()
|
||||
{
|
||||
var u = GetTestTable();
|
||||
|
||||
Assert.AreEqual(1, u.Delete(delete: new users
|
||||
{
|
||||
id = 13,
|
||||
code = "13",
|
||||
first = "Juri",
|
||||
last = "Gagarin",
|
||||
email = "juri.gagarin@megacorp.com",
|
||||
quote = "bla, bla, bla"
|
||||
}));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 13));
|
||||
}
|
||||
|
||||
/// <summary>Test row deleting by dynamic objects (all except ID should be ignored).</summary>
|
||||
[Test]
|
||||
public void TestDeleteyDynamicObjectWhere()
|
||||
{
|
||||
Assert.AreEqual(1, GetTestTable().Delete(where: new { id = 14, code = "14" }));
|
||||
|
||||
// Verify
|
||||
Assert.AreEqual(0, GetTestTable().Count(id: 14));
|
||||
}
|
||||
|
||||
#endregion Delete
|
||||
}
|
||||
}
|
||||
@@ -1,55 +1,55 @@
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>Test standard dynamic access ORM. With out schema information from database.</summary>
|
||||
[TestClass]
|
||||
public class DynamicNoSchemaModificationTests : DynamicModificationTests
|
||||
{
|
||||
/// <summary>Setup test parameters.</summary>
|
||||
[TestInitialize]
|
||||
public virtual void SetUp()
|
||||
{
|
||||
CreateTestDatabase();
|
||||
CreateDynamicDatabase(
|
||||
DynamicDatabaseOptions.SingleConnection |
|
||||
DynamicDatabaseOptions.SingleTransaction |
|
||||
DynamicDatabaseOptions.SupportLimitOffset);
|
||||
}
|
||||
|
||||
/// <summary>Create table using specified method.</summary>
|
||||
/// <returns>Dynamic table.</returns>
|
||||
public override dynamic GetTestTable()
|
||||
{
|
||||
return Database.Table("users", new string[] { "id" });
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>Test standard dynamic access ORM. With out schema information from database.</summary>
|
||||
[TestFixture]
|
||||
public class DynamicNoSchemaModificationTests : DynamicModificationTests
|
||||
{
|
||||
/// <summary>Setup test parameters.</summary>
|
||||
[SetUp]
|
||||
public override void SetUp()
|
||||
{
|
||||
CreateTestDatabase();
|
||||
CreateDynamicDatabase(
|
||||
DynamicDatabaseOptions.SingleConnection |
|
||||
DynamicDatabaseOptions.SingleTransaction |
|
||||
DynamicDatabaseOptions.SupportLimitOffset);
|
||||
}
|
||||
|
||||
/// <summary>Create table using specified method.</summary>
|
||||
/// <returns>Dynamic table.</returns>
|
||||
public override dynamic GetTestTable()
|
||||
{
|
||||
return Database.Table("users", new string[] { "id" });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,69 +1,69 @@
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using DynamORM.Tests.Helpers;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>Test standard dynamic access ORM. With out schema information from database.</summary>
|
||||
[TestClass]
|
||||
public class DynamicTypeSchemaModificationTests : DynamicModificationTests
|
||||
{
|
||||
/// <summary>Create table using specified method.</summary>
|
||||
/// <returns>Dynamic table.</returns>
|
||||
public override dynamic GetTestTable()
|
||||
{
|
||||
return Database.Table<users>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the bulk insert.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestBulkInsert()
|
||||
{
|
||||
Assert.AreEqual(2, Database.Insert<users>(new List<users>
|
||||
{
|
||||
new users
|
||||
{
|
||||
id = 1001,
|
||||
login = "a",
|
||||
},
|
||||
new users
|
||||
{
|
||||
id = 1002,
|
||||
login = "b",
|
||||
}
|
||||
}));
|
||||
|
||||
Assert.AreEqual(2, Database.Delete<users>().Where(u => u.users.id.In(1001, 1002)).Execute());
|
||||
}
|
||||
}
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using DynamORM.Tests.Helpers;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>Test standard dynamic access ORM. With out schema information from database.</summary>
|
||||
[TestFixture]
|
||||
public class DynamicTypeSchemaModificationTests : DynamicModificationTests
|
||||
{
|
||||
/// <summary>Create table using specified method.</summary>
|
||||
/// <returns>Dynamic table.</returns>
|
||||
public override dynamic GetTestTable()
|
||||
{
|
||||
return Database.Table<users>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the bulk insert.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestBulkInsert()
|
||||
{
|
||||
Assert.AreEqual(2, Database.Insert<users>(new List<users>
|
||||
{
|
||||
new users
|
||||
{
|
||||
id = 1001,
|
||||
login = "a",
|
||||
},
|
||||
new users
|
||||
{
|
||||
id = 1002,
|
||||
login = "b",
|
||||
}
|
||||
}));
|
||||
|
||||
Assert.AreEqual(2, Database.Delete<users>().Where(u => u.users.id.In(1001, 1002)).Execute());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,225 +1,225 @@
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System.Linq;
|
||||
using DynamORM.Builders;
|
||||
using DynamORM.Builders.Implementation;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using DynamORM.Tests.Helpers;
|
||||
using System.Collections.Generic;
|
||||
using static System.Data.Entity.Infrastructure.Design.Executor;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>New parser tests.</summary>
|
||||
[TestClass]
|
||||
public class ParserTests : TestsBase
|
||||
{
|
||||
/// <summary>Setup test parameters.</summary>
|
||||
[TestInitialize]
|
||||
public virtual void SetUp()
|
||||
{
|
||||
CreateTestDatabase();
|
||||
CreateDynamicDatabase(
|
||||
DynamicDatabaseOptions.SingleConnection |
|
||||
DynamicDatabaseOptions.SingleTransaction |
|
||||
DynamicDatabaseOptions.SupportLimitOffset);
|
||||
}
|
||||
|
||||
/// <summary>Tear down test objects.</summary>
|
||||
[TestCleanup]
|
||||
public virtual void TearDown()
|
||||
{
|
||||
DestroyDynamicDatabase();
|
||||
DestroyTestDatabase();
|
||||
}
|
||||
|
||||
#region Insert
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestInsertBasic()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => x.Users.Code = "001", x => x.Users.Name = "Admin", x => x.Users.IsAdmin = 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0})",
|
||||
string.Join(", ", cmd.Parameters.Keys.Select(p => string.Format("[${0}]", p)))), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the insert with sub query.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestInsertSubQuery()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => x.Code = "001", x => x.Name = "Admin", x => x.IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == "001")));
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0}, (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = [${1}])))",
|
||||
string.Join(", ", cmd.Parameters.Keys.Take(2).Select(p => string.Format("[${0}]", p))), cmd.Parameters.Keys.Last()), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert using object.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestInsertBasicObject()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => new { Code = "001", Name = "Admin", IsAdmin = 1 });
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0})",
|
||||
string.Join(", ", cmd.Parameters.Keys.Select(p => string.Format("[${0}]", p)))), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the insert using object with sub query.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestInsertSubQueryObject()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => new
|
||||
{
|
||||
Code = "001",
|
||||
Name = "Admin",
|
||||
IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == "001"))
|
||||
});
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0}, (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = [${1}])))",
|
||||
string.Join(", ", cmd.Parameters.Keys.Take(2).Select(p => string.Format("[${0}]", p))), cmd.Parameters.Keys.Last()), cmd.CommandText());
|
||||
}
|
||||
|
||||
#endregion Insert
|
||||
|
||||
#region Update
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic update.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateBasicSet()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Set(x => x.Users.Code = "001", x => x.Users.Name = "Admin", x => x.Users.IsAdmin = 1)
|
||||
.Where(x => x.Users.Id_User == 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = [${2}] WHERE (""Users"".""Id_User"" = [${3}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2], cmd.Parameters.Keys.ToArray()[3]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic update.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateBasicValues()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd
|
||||
.Values("Code", "001")
|
||||
.Values("Name", "Admin")
|
||||
.Values("IsAdmin", "1")
|
||||
.Where(x => x.Users.Id_User == 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = [${2}] WHERE (""Users"".""Id_User"" = [${3}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2], cmd.Parameters.Keys.ToArray()[3]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the insert with sub query.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateSubQuery()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
cmd.Set(x => x.Users.Code = "001", x => x.Users.Name = "Admin", x => x.Users.IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == a.Users.Id_User)))
|
||||
.Where(x => x.Users.Id_User == 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = ""Users"".""Id_User"")) WHERE (""Users"".""Id_User"" = [${2}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert using object.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateBasicObject()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Set(x => new { Code = "001", Name = "Admin", IsAdmin = 1 })
|
||||
.Where(x => new { Id_User = 1 });
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = [${2}] WHERE (""Id_User"" = [${3}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2], cmd.Parameters.Keys.ToArray()[3]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert using object.
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void TestUpdateSubQueryObject()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Set(x => new
|
||||
{
|
||||
Code = "001",
|
||||
Name = "Admin",
|
||||
IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == a.Users.Id_User))
|
||||
}).Where(x => new { Id_User = 1 });
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = ""Users"".""Id_User"")) WHERE (""Id_User"" = [${2}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2]), cmd.CommandText());
|
||||
}
|
||||
|
||||
#endregion Update
|
||||
}
|
||||
/*
|
||||
* DynamORM - Dynamic Object-Relational Mapping library.
|
||||
* Copyright (c) 2012-2026, Grzegorz Russek (grzegorz.russek@gmail.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System.Linq;
|
||||
using DynamORM.Builders;
|
||||
using DynamORM.Builders.Implementation;
|
||||
using NUnit.Framework;
|
||||
using DynamORM.Tests.Helpers;
|
||||
using System.Collections.Generic;
|
||||
using static System.Data.Entity.Infrastructure.Design.Executor;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DynamORM.Tests.Modify
|
||||
{
|
||||
/// <summary>New parser tests.</summary>
|
||||
[TestFixture]
|
||||
public class ParserTests : TestsBase
|
||||
{
|
||||
/// <summary>Setup test parameters.</summary>
|
||||
[SetUp]
|
||||
public virtual void SetUp()
|
||||
{
|
||||
CreateTestDatabase();
|
||||
CreateDynamicDatabase(
|
||||
DynamicDatabaseOptions.SingleConnection |
|
||||
DynamicDatabaseOptions.SingleTransaction |
|
||||
DynamicDatabaseOptions.SupportLimitOffset);
|
||||
}
|
||||
|
||||
/// <summary>Tear down test objects.</summary>
|
||||
[TearDown]
|
||||
public virtual void TearDown()
|
||||
{
|
||||
DestroyDynamicDatabase();
|
||||
DestroyTestDatabase();
|
||||
}
|
||||
|
||||
#region Insert
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestInsertBasic()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => x.Users.Code = "001", x => x.Users.Name = "Admin", x => x.Users.IsAdmin = 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0})",
|
||||
string.Join(", ", cmd.Parameters.Keys.Select(p => string.Format("[${0}]", p)))), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the insert with sub query.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestInsertSubQuery()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => x.Code = "001", x => x.Name = "Admin", x => x.IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == "001")));
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0}, (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = [${1}])))",
|
||||
string.Join(", ", cmd.Parameters.Keys.Take(2).Select(p => string.Format("[${0}]", p))), cmd.Parameters.Keys.Last()), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert using object.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestInsertBasicObject()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => new { Code = "001", Name = "Admin", IsAdmin = 1 });
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0})",
|
||||
string.Join(", ", cmd.Parameters.Keys.Select(p => string.Format("[${0}]", p)))), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the insert using object with sub query.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestInsertSubQueryObject()
|
||||
{
|
||||
IDynamicInsertQueryBuilder cmd = new DynamicInsertQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Values(x => new
|
||||
{
|
||||
Code = "001",
|
||||
Name = "Admin",
|
||||
IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == "001"))
|
||||
});
|
||||
|
||||
Assert.AreEqual(string.Format(@"INSERT INTO ""Users"" (""Code"", ""Name"", ""IsAdmin"") VALUES ({0}, (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = [${1}])))",
|
||||
string.Join(", ", cmd.Parameters.Keys.Take(2).Select(p => string.Format("[${0}]", p))), cmd.Parameters.Keys.Last()), cmd.CommandText());
|
||||
}
|
||||
|
||||
#endregion Insert
|
||||
|
||||
#region Update
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic update.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestUpdateBasicSet()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Set(x => x.Users.Code = "001", x => x.Users.Name = "Admin", x => x.Users.IsAdmin = 1)
|
||||
.Where(x => x.Users.Id_User == 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = [${2}] WHERE (""Users"".""Id_User"" = [${3}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2], cmd.Parameters.Keys.ToArray()[3]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic update.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestUpdateBasicValues()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd
|
||||
.Values("Code", "001")
|
||||
.Values("Name", "Admin")
|
||||
.Values("IsAdmin", "1")
|
||||
.Where(x => x.Users.Id_User == 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = [${2}] WHERE (""Users"".""Id_User"" = [${3}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2], cmd.Parameters.Keys.ToArray()[3]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the insert with sub query.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestUpdateSubQuery()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
cmd.Set(x => x.Users.Code = "001", x => x.Users.Name = "Admin", x => x.Users.IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == a.Users.Id_User)))
|
||||
.Where(x => x.Users.Id_User == 1);
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = ""Users"".""Id_User"")) WHERE (""Users"".""Id_User"" = [${2}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert using object.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestUpdateBasicObject()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Set(x => new { Code = "001", Name = "Admin", IsAdmin = 1 })
|
||||
.Where(x => new { Id_User = 1 });
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = [${2}] WHERE (""Id_User"" = [${3}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2], cmd.Parameters.Keys.ToArray()[3]), cmd.CommandText());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the basic insert using object.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestUpdateSubQueryObject()
|
||||
{
|
||||
IDynamicUpdateQueryBuilder cmd = new DynamicUpdateQueryBuilder(Database, "Users");
|
||||
|
||||
cmd.Set(x => new
|
||||
{
|
||||
Code = "001",
|
||||
Name = "Admin",
|
||||
IsAdmin = x(cmd
|
||||
.SubQuery(a => a.AccessRights.As(a.a))
|
||||
.Select(a => a.IsAdmin)
|
||||
.Where(a => a.User_Id == a.Users.Id_User))
|
||||
}).Where(x => new { Id_User = 1 });
|
||||
|
||||
Assert.AreEqual(string.Format(@"UPDATE ""Users"" SET ""Code"" = [${0}], ""Name"" = [${1}], ""IsAdmin"" = (SELECT a.""IsAdmin"" FROM ""AccessRights"" AS a WHERE (a.""User_Id"" = ""Users"".""Id_User"")) WHERE (""Id_User"" = [${2}])",
|
||||
cmd.Parameters.Keys.ToArray()[0], cmd.Parameters.Keys.ToArray()[1], cmd.Parameters.Keys.ToArray()[2]), cmd.CommandText());
|
||||
}
|
||||
|
||||
#endregion Update
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user