PageRenderTime 43ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/src/NHibernate.Test/NHSpecificTest/NH2760/Fixture.cs

https://github.com/cipatom/nhibernate-core
C# | 138 lines | 114 code | 24 blank | 0 comment | 0 complexity | 8676bcfdeb59076f4720d82c01921e76 MD5 | raw file
Possible License(s): Apache-2.0, CC-BY-SA-3.0, GPL-2.0, BSD-3-Clause, LGPL-2.1, MPL-2.0-no-copyleft-exception, LGPL-3.0
  1. using System;
  2. using System.Collections;
  3. using System.Linq;
  4. using NUnit.Framework;
  5. using NHibernate;
  6. using NHibernate.Linq;
  7. using Iesi.Collections.Generic;
  8. namespace NHibernate.Test.NHSpecificTest.NH2760
  9. {
  10. [TestFixture]
  11. public class Fixture : BugTestCase
  12. {
  13. protected override void OnSetUp()
  14. {
  15. base.OnSetUp();
  16. using (ISession session = base.OpenSession())
  17. using (ITransaction transaction = session.BeginTransaction())
  18. {
  19. var group1 = new UserGroup() { Id = 1, Name = "User Group 1" };
  20. var group2 = new UserGroup() { Id = 2, Name = "User Group 2" };
  21. var user1 = new User() { Id = 1, Name = "User 1" };
  22. var user2 = new User() { Id = 2, Name = "User 2" };
  23. user1.UserGroups.Add(group1);
  24. user1.UserGroups.Add(group2);
  25. user2.UserGroups.Add(group1);
  26. session.Save(group1);
  27. session.Save(group2);
  28. session.Save(user1);
  29. session.Save(user2);
  30. transaction.Commit();
  31. }
  32. }
  33. protected override void OnTearDown()
  34. {
  35. using (ISession session = base.OpenSession())
  36. using (ITransaction transaction = session.BeginTransaction())
  37. {
  38. session.Delete("from System.Object");
  39. transaction.Commit();
  40. }
  41. base.OnTearDown();
  42. }
  43. [Test]
  44. public void ShouldBeAbleToSelectUserGroupAndOrderByUserCount()
  45. {
  46. using (ISession session = base.OpenSession())
  47. using (ITransaction transaction = session.BeginTransaction())
  48. {
  49. var query =
  50. from ug in session.Query<UserGroup>()
  51. orderby ug.Users.Count()
  52. select ug;
  53. var queryResults = query.ToList();
  54. Assert.AreEqual(2, queryResults.Count);
  55. Assert.AreEqual(2, queryResults[0].Id);
  56. Assert.AreEqual(1, queryResults[1].Id);
  57. transaction.Commit();
  58. }
  59. }
  60. [Test]
  61. public void ShouldBeAbleToSelectUserGroupWhereUserCount()
  62. {
  63. using (ISession session = base.OpenSession())
  64. using (ITransaction transaction = session.BeginTransaction())
  65. {
  66. var query =
  67. from ug in session.Query<UserGroup>()
  68. where ug.Users.Count() > 1
  69. select ug;
  70. var queryResults = query.ToList();
  71. Assert.AreEqual(1, queryResults.Count);
  72. Assert.AreEqual(1, queryResults[0].Id);
  73. Assert.AreEqual(2, queryResults[0].Users.Count());
  74. transaction.Commit();
  75. }
  76. }
  77. [Test]
  78. public void ShouldBeAbleToSelectUserGroupAndSelectUserIdUserCount()
  79. {
  80. using (ISession session = base.OpenSession())
  81. using (ITransaction transaction = session.BeginTransaction())
  82. {
  83. var query =
  84. from ug in session.Query<UserGroup>()
  85. select new
  86. {
  87. id = ug.Id,
  88. count = ug.Users.Count(),
  89. };
  90. var queryResults = query.ToList();
  91. Assert.AreEqual(2, queryResults.Count);
  92. Assert.AreEqual(1, queryResults[0].id);
  93. Assert.AreEqual(2, queryResults[0].count);
  94. Assert.AreEqual(2, queryResults[1].id);
  95. Assert.AreEqual(1, queryResults[1].count);
  96. transaction.Commit();
  97. }
  98. }
  99. [Test]
  100. public void ShouldBeAbleToSelectUserGroupAndOrderByUserCountWithHql()
  101. {
  102. using (ISession session = base.OpenSession())
  103. using (ITransaction transaction = session.BeginTransaction())
  104. {
  105. var query = session.CreateQuery("select ug from UserGroup ug order by size(ug.Users)");
  106. var queryResults = query.List<UserGroup>();
  107. Assert.AreEqual(2, queryResults.Count);
  108. Assert.AreEqual(2, queryResults[0].Id);
  109. Assert.AreEqual(1, queryResults[1].Id);
  110. transaction.Commit();
  111. }
  112. }
  113. }
  114. }