public void TearDown() { Criteria criteria1 = new Criteria("ShapeName", Criteria.ComparisonOp.Equals, "MyShape"); Shape shape = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <Shape>( criteria1); if (shape != null) { shape.MarkForDelete(); shape.Save(); } criteria1 = new Criteria("ShapeName", Criteria.ComparisonOp.Equals, "Circle"); Criteria criteria2 = new Criteria("ShapeName", Criteria.ComparisonOp.Equals, "CircleChanged"); Criteria criteria = new Criteria(criteria1, Criteria.LogicalOp.Or, criteria2); CircleNoPrimaryKey circle = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <CircleNoPrimaryKey>( criteria); if (circle != null) { circle.MarkForDelete(); circle.Save(); } criteria1 = new Criteria("ShapeName", Criteria.ComparisonOp.Equals, "FilledCircle"); criteria2 = new Criteria("ShapeName", Criteria.ComparisonOp.Equals, "FilledCircleChanged"); criteria = new Criteria(criteria1, Criteria.LogicalOp.Or, criteria2); FilledCircleNoPrimaryKey filledCircle = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <FilledCircleNoPrimaryKey>( criteria); if (filledCircle == null) { return; } filledCircle.MarkForDelete(); filledCircle.Save(); }
public void TestLoad_SingleTableInheritance_Hierarchy() { //---------------Set up test pack------------------- FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy(); FilledCircleNoPrimaryKey filledCircle = FilledCircleNoPrimaryKey.CreateSavedFilledCircle(); //---------------Execute Test ---------------------- FilledCircleNoPrimaryKey loadedFilledCircle = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <FilledCircleNoPrimaryKey>(filledCircle.ID); //---------------Test Result ----------------------- Assert.AreSame(filledCircle, loadedFilledCircle); }
protected void SetupInheritanceSpecifics() { ClassDef.ClassDefs.Clear(); _classDefShape = Shape.GetClassDef(); _classDefCircleNoPrimaryKey = CircleNoPrimaryKey.GetClassDef(); _classDefCircleNoPrimaryKey.SuperClassDef = new SuperClassDef(_classDefShape, ORMapping.SingleTableInheritance); _classDefCircleNoPrimaryKey.SuperClassDef.Discriminator = "ShapeType_field"; _classDefFilledCircleNoPrimaryKey = FilledCircleNoPrimaryKey.GetClassDef(); _classDefFilledCircleNoPrimaryKey.SuperClassDef = new SuperClassDef(_classDefCircleNoPrimaryKey, ORMapping.SingleTableInheritance); _classDefFilledCircleNoPrimaryKey.SuperClassDef.Discriminator = "ShapeType_field"; }
protected override void SetupInheritanceSpecifics() { ClassDef.ClassDefs.Clear(); FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy(); //_classDefShape = Shape.GetClassDef(); //_classDefCircleNoPrimaryKey = CircleNoPrimaryKey.GetClassDef(); //_classDefCircleNoPrimaryKey.SuperClassDef = new SuperClassDef(_classDefShape, // ORMapping.SingleTableInheritance); //_classDefCircleNoPrimaryKey.SuperClassDef.Discriminator = "ShapeType_field"; //_classDefFilledCircleNoPrimaryKey = FilledCircleNoPrimaryKey.GetClassDef(); //_classDefFilledCircleNoPrimaryKey.SuperClassDef = new SuperClassDef(_classDefCircleNoPrimaryKey, // ORMapping.SingleTableInheritance); //_classDefFilledCircleNoPrimaryKey.SuperClassDef.Discriminator = "ShapeType_field"; }
public void TestLoad_SingleTableInheritance_Hierarchy_LoadingMiddleType_ShouldLoadSubType() { //---------------Set up test pack------------------- FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy(); FilledCircleNoPrimaryKey filledCircle = FilledCircleNoPrimaryKey.CreateSavedFilledCircle(); Shape shape = Shape.CreateSavedShape(); CircleNoPrimaryKey circle = CircleNoPrimaryKey.CreateSavedCircle(); //---------------Execute Test ---------------------- BusinessObjectCollection <CircleNoPrimaryKey> loadedCircles = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObjectCollection <CircleNoPrimaryKey>(""); //---------------Test Result ----------------------- Assert.AreEqual(2, loadedCircles.Count); }
public void TestGetBusinessObject_ReturnsSubType_TwoLevelsDeep_Fresh() { //---------------Set up test pack------------------- SetupDataAccessor(); FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchyDifferentDiscriminators(); FilledCircleNoPrimaryKey filledCircle = FilledCircleNoPrimaryKey.CreateSavedFilledCircle(); FixtureEnvironment.ClearBusinessObjectManager(); //---------------Execute Test ---------------------- Shape loadedShape = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <Shape>(filledCircle.ID); //---------------Test Result ----------------------- Assert.IsInstanceOf(typeof(FilledCircleNoPrimaryKey), loadedShape); //---------------Tear Down ------------------------- }
public void TestSingleTableInheritanceHierarchy_DifferentDiscriminators() { //---------------Set up test pack------------------- FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchyDifferentDiscriminators(); FilledCircleNoPrimaryKey filledCircle = new FilledCircleNoPrimaryKey(); InsertStatementGenerator gen = new InsertStatementGenerator(filledCircle, DatabaseConnection.CurrentConnection); //---------------Execute Test ---------------------- var sqlStatementCollection = gen.Generate(); //---------------Test Result ----------------------- var sqlStatements = sqlStatementCollection.ToList(); Assert.AreEqual(1, sqlStatements.Count); ISqlStatement sqlStatement = sqlStatements[0]; string sql = sqlStatement.Statement.ToString(); StringAssert.Contains("ShapeType", sql); StringAssert.Contains("CircleType", sql); }
public void TestLoad_SingleTableInheritance_Hierarchy_Fresh() { //---------------Set up test pack------------------- FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy(); FilledCircleNoPrimaryKey filledCircle = FilledCircleNoPrimaryKey.CreateSavedFilledCircle(); //---------------Execute Test ---------------------- FixtureEnvironment.ClearBusinessObjectManager(); FilledCircleNoPrimaryKey loadedFilledCircle = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <FilledCircleNoPrimaryKey>( filledCircle.ID); //---------------Test Result ----------------------- Assert.AreNotSame(loadedFilledCircle, filledCircle); Assert.AreEqual(filledCircle.Radius, loadedFilledCircle.Radius); Assert.AreEqual(filledCircle.ShapeName, loadedFilledCircle.ShapeName); Assert.AreEqual(filledCircle.Colour, loadedFilledCircle.Colour); //---------------Tear Down ------------------------- }
public void TestInsertStatementExcludesNonPersistable_InheritanceProps() { //---------------Set up test pack------------------- const string nonPersistablePropertyName = "NonPersistableProp"; FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy_NonPersistableProp(nonPersistablePropertyName); var filledCircle = new FilledCircleNoPrimaryKey(); var gen = new InsertStatementGenerator(filledCircle, DatabaseConnection.CurrentConnection); //---------------Execute Test ---------------------- var sqlStatementCollection = gen.Generate(); //---------------Test Result ----------------------- var sqlStatements = sqlStatementCollection.ToList(); Assert.AreEqual(1, sqlStatements.Count); var sqlStatement = sqlStatements[0]; var sql = sqlStatement.Statement.ToString(); Assert.IsFalse(sql.Contains(nonPersistablePropertyName)); }
public void Test_GetBusinessObjectCollection_NonGeneric_ReturnsSubType_TwoLevelsDeep_DiscriminatorShared_Fresh() { //---------------Set up test pack------------------- SetupDataAccessor(); FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy(); FilledCircleNoPrimaryKey filledCircle = FilledCircleNoPrimaryKey.CreateSavedFilledCircle(); FixtureEnvironment.ClearBusinessObjectManager(); IClassDef classDef = ClassDef.Get <Shape>(); //---------------Execute Test ---------------------- IBusinessObject loadedShape = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject(classDef, filledCircle.ID); //---------------Test Result ----------------------- Assert.IsInstanceOf(typeof(Shape), loadedShape); Assert.IsInstanceOf(typeof(FilledCircleNoPrimaryKey), loadedShape); //---------------Tear Down ------------------------- }
public void TestSingleTableInheritance_TwoLevelsDeep() { //---------------Set up test pack------------------- ClassDef.ClassDefs.Clear(); ClassDef filledCircleClassDef = (ClassDef)FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy(); IClassDef shapeClassDef = filledCircleClassDef.SuperClassClassDef.SuperClassClassDef; Criteria expectedShapeCriteria = new Criteria("ShapeType_field", Criteria.ComparisonOp.Is, "null"); Criteria expectedCircleCriteria = new Criteria("ShapeType_field", Criteria.ComparisonOp.Equals, "CircleNoPrimaryKey"); Criteria expectedFilledCircleCriteria = new Criteria("ShapeType_field", Criteria.ComparisonOp.Equals, "FilledCircleNoPrimaryKey"); Criteria shapeOrCircleCriteria = new Criteria(expectedShapeCriteria, Criteria.LogicalOp.Or, expectedCircleCriteria); Criteria expected = new Criteria(shapeOrCircleCriteria, Criteria.LogicalOp.Or, expectedFilledCircleCriteria); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- SelectQuery selectQuery = (SelectQuery)QueryBuilder.CreateSelectQuery(shapeClassDef); //---------------Test Result ----------------------- Assert.AreEqual(expected, selectQuery.DiscriminatorCriteria); }
public void TestSingleTableInheritanceHierarchy_SharedDiscriminators() { //---------------Set up test pack------------------- FilledCircleNoPrimaryKey.GetClassDefWithSingleInheritanceHierarchy(); FilledCircleNoPrimaryKey filledCircle = new FilledCircleNoPrimaryKey(); InsertStatementGenerator gen = new InsertStatementGenerator(filledCircle, DatabaseConnection.CurrentConnection); //---------------Execute Test ---------------------- var sqlStatementCollection = gen.Generate(); //---------------Test Result ----------------------- var sqlStatements = sqlStatementCollection.ToList(); Assert.AreEqual(1, sqlStatements.Count); ISqlStatement sqlStatement = sqlStatements[0]; string sql = sqlStatement.Statement.ToString(); int index = sql.IndexOf("ShapeType"); Assert.IsTrue(index > 0); index = sql.IndexOf("ShapeType", index + 1); Assert.IsTrue(index < 0, "There were two ShapeType fields specified"); Assert.AreEqual("FilledCircleNoPrimaryKey", sqlStatement.Parameters[4].Value); }
public void TestFilledCircleIsUsingSingleTableInheritance() { Assert.AreEqual(ORMapping.SingleTableInheritance, CircleNoPrimaryKey.GetClassDef().SuperClassDef.ORMapping); Assert.AreEqual(ORMapping.SingleTableInheritance, FilledCircleNoPrimaryKey.GetClassDef().SuperClassDef.ORMapping); }
public void TestDatabaseReadWrite() { // Test inserting & selecting Shape shape = new Shape {ShapeName = "MyShape"}; shape.Save(); BusinessObjectCollection<Shape> shapes = new BusinessObjectCollection<Shape>(); shapes.LoadAll(); Assert.AreEqual(1, shapes.Count); BusinessObjectCollection<CircleNoPrimaryKey> circles = new BusinessObjectCollection<CircleNoPrimaryKey>(); circles.LoadAll(); Assert.AreEqual(0, circles.Count); BusinessObjectCollection<FilledCircleNoPrimaryKey> filledCircles = new BusinessObjectCollection<FilledCircleNoPrimaryKey>(); filledCircles.LoadAll(); Assert.AreEqual(0, filledCircles.Count); CircleNoPrimaryKey circle = new CircleNoPrimaryKey {Radius = 5, ShapeName = "Circle"}; circle.Save(); FixtureEnvironment.ClearBusinessObjectManager(); shapes.LoadAll("ShapeName"); Assert.AreEqual(2, shapes.Count); Assert.AreEqual("Circle", shapes[0].ShapeName); Assert.AreEqual("MyShape", shapes[1].ShapeName); FixtureEnvironment.ClearBusinessObjectManager(); circles.LoadAll(); Assert.AreEqual(1, circles.Count); Assert.AreEqual(circles[0].ShapeID, shapes[0].ShapeID); Assert.AreEqual(5, circles[0].Radius); Assert.AreEqual("Circle", circles[0].ShapeName); FilledCircleNoPrimaryKey filledCircle = new FilledCircleNoPrimaryKey { Colour = 3, Radius = 7, ShapeName = "FilledCircle" }; filledCircle.Save(); FixtureEnvironment.ClearBusinessObjectManager(); shapes.LoadAll("ShapeName"); Assert.AreEqual(3, shapes.Count); Assert.AreEqual("Circle", shapes[0].ShapeName); Assert.AreEqual("FilledCircle", shapes[1].ShapeName); Assert.AreEqual("MyShape", shapes[2].ShapeName); Assert.That(shapes[0], Is.InstanceOf(typeof(CircleNoPrimaryKey))); Assert.That(shapes[1], Is.InstanceOf(typeof(FilledCircleNoPrimaryKey))); Assert.That(shapes[2], Is.InstanceOf(typeof(Shape))); circles.LoadAll("ShapeName"); Assert.AreEqual(2, circles.Count); Assert.AreEqual(circles[1].ShapeID, shapes[1].ShapeID); Assert.AreEqual(7, circles[1].Radius); Assert.AreEqual("FilledCircle", circles[1].ShapeName); filledCircles.LoadAll(); Assert.AreEqual(1, filledCircles.Count); Assert.AreEqual(filledCircles[0].ShapeID, shapes[1].ShapeID); Assert.AreEqual(7, filledCircles[0].Radius); Assert.AreEqual("FilledCircle", filledCircles[0].ShapeName); Assert.AreEqual(3, filledCircles[0].Colour); // Test updating shape.ShapeName = "MyShapeChanged"; shape.Save(); circle.ShapeName = "CircleChanged"; circle.Radius = 10; circle.Save(); filledCircle.ShapeName = "FilledCircleChanged"; filledCircle.Radius = 12; filledCircle.Colour = 4; filledCircle.Save(); shapes.LoadAll("ShapeName"); Assert.AreEqual("CircleChanged", shapes[0].ShapeName); Assert.AreEqual("FilledCircleChanged", shapes[1].ShapeName); Assert.AreEqual("MyShapeChanged", shapes[2].ShapeName); circles.LoadAll("ShapeName"); Assert.AreEqual(10, circles[0].Radius); Assert.AreEqual(12, circles[1].Radius); Assert.AreEqual("CircleChanged", circles[0].ShapeName); Assert.AreEqual("FilledCircleChanged", circles[1].ShapeName); filledCircles.LoadAll(); Assert.AreEqual(4, filledCircles[0].Colour); Assert.AreEqual(12, filledCircles[0].Radius); Assert.AreEqual("FilledCircleChanged", filledCircles[0].ShapeName); // Test deleting shape.MarkForDelete(); shape.Save(); circle.MarkForDelete(); circle.Save(); filledCircle.MarkForDelete(); filledCircle.Save(); shapes.LoadAll(); Assert.AreEqual(0, shapes.Count); Assert.AreEqual(0, shapes.PersistedBusinessObjects.Count); Assert.AreEqual(0, shapes.CreatedBusinessObjects.Count); circles.LoadAll(); Assert.AreEqual(0, circles.Count); filledCircles.LoadAll(); Assert.AreEqual(0, filledCircles.Count); }
public void TestDatabaseReadWrite() { // Test inserting & selecting Shape shape = new Shape { ShapeName = "MyShape" }; shape.Save(); BusinessObjectCollection <Shape> shapes = new BusinessObjectCollection <Shape>(); shapes.LoadAll(); Assert.AreEqual(1, shapes.Count); BusinessObjectCollection <CircleNoPrimaryKey> circles = new BusinessObjectCollection <CircleNoPrimaryKey>(); circles.LoadAll(); Assert.AreEqual(0, circles.Count); BusinessObjectCollection <FilledCircleNoPrimaryKey> filledCircles = new BusinessObjectCollection <FilledCircleNoPrimaryKey>(); filledCircles.LoadAll(); Assert.AreEqual(0, filledCircles.Count); CircleNoPrimaryKey circle = new CircleNoPrimaryKey { Radius = 5, ShapeName = "Circle" }; circle.Save(); FixtureEnvironment.ClearBusinessObjectManager(); shapes.LoadAll("ShapeName"); Assert.AreEqual(2, shapes.Count); Assert.AreEqual("Circle", shapes[0].ShapeName); Assert.AreEqual("MyShape", shapes[1].ShapeName); FixtureEnvironment.ClearBusinessObjectManager(); circles.LoadAll(); Assert.AreEqual(1, circles.Count); Assert.AreEqual(circles[0].ShapeID, shapes[0].ShapeID); Assert.AreEqual(5, circles[0].Radius); Assert.AreEqual("Circle", circles[0].ShapeName); FilledCircleNoPrimaryKey filledCircle = new FilledCircleNoPrimaryKey { Colour = 3, Radius = 7, ShapeName = "FilledCircle" }; filledCircle.Save(); FixtureEnvironment.ClearBusinessObjectManager(); shapes.LoadAll("ShapeName"); Assert.AreEqual(3, shapes.Count); Assert.AreEqual("Circle", shapes[0].ShapeName); Assert.AreEqual("FilledCircle", shapes[1].ShapeName); Assert.AreEqual("MyShape", shapes[2].ShapeName); Assert.That(shapes[0], Is.InstanceOf(typeof(CircleNoPrimaryKey))); Assert.That(shapes[1], Is.InstanceOf(typeof(FilledCircleNoPrimaryKey))); Assert.That(shapes[2], Is.InstanceOf(typeof(Shape))); circles.LoadAll("ShapeName"); Assert.AreEqual(2, circles.Count); Assert.AreEqual(circles[1].ShapeID, shapes[1].ShapeID); Assert.AreEqual(7, circles[1].Radius); Assert.AreEqual("FilledCircle", circles[1].ShapeName); filledCircles.LoadAll(); Assert.AreEqual(1, filledCircles.Count); Assert.AreEqual(filledCircles[0].ShapeID, shapes[1].ShapeID); Assert.AreEqual(7, filledCircles[0].Radius); Assert.AreEqual("FilledCircle", filledCircles[0].ShapeName); Assert.AreEqual(3, filledCircles[0].Colour); // Test updating shape.ShapeName = "MyShapeChanged"; shape.Save(); circle.ShapeName = "CircleChanged"; circle.Radius = 10; circle.Save(); filledCircle.ShapeName = "FilledCircleChanged"; filledCircle.Radius = 12; filledCircle.Colour = 4; filledCircle.Save(); shapes.LoadAll("ShapeName"); Assert.AreEqual("CircleChanged", shapes[0].ShapeName); Assert.AreEqual("FilledCircleChanged", shapes[1].ShapeName); Assert.AreEqual("MyShapeChanged", shapes[2].ShapeName); circles.LoadAll("ShapeName"); Assert.AreEqual(10, circles[0].Radius); Assert.AreEqual(12, circles[1].Radius); Assert.AreEqual("CircleChanged", circles[0].ShapeName); Assert.AreEqual("FilledCircleChanged", circles[1].ShapeName); filledCircles.LoadAll(); Assert.AreEqual(4, filledCircles[0].Colour); Assert.AreEqual(12, filledCircles[0].Radius); Assert.AreEqual("FilledCircleChanged", filledCircles[0].ShapeName); // Test deleting shape.MarkForDelete(); shape.Save(); circle.MarkForDelete(); circle.Save(); filledCircle.MarkForDelete(); filledCircle.Save(); shapes.LoadAll(); Assert.AreEqual(0, shapes.Count); Assert.AreEqual(0, shapes.PersistedBusinessObjects.Count); Assert.AreEqual(0, shapes.CreatedBusinessObjects.Count); circles.LoadAll(); Assert.AreEqual(0, circles.Count); filledCircles.LoadAll(); Assert.AreEqual(0, filledCircles.Count); }