QueryableExtentionsTest.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using Masuit.Tools.Mapping;
  2. using Masuit.Tools.Mapping.Extensions;
  3. using Masuit.Tools.UnitTest.Mapping.ClassTests;
  4. using Microsoft.VisualStudio.TestTools.UnitTesting;
  5. using System;
  6. using System.Linq;
  7. using System.Linq.Expressions;
  8. namespace Masuit.Tools.UnitTest.Mapping.Extentions
  9. {
  10. [TestClass]
  11. public class QueryableExtentionsTest
  12. {
  13. [ClassInitialize]
  14. public static void Init(TestContext context)
  15. {
  16. Clean();
  17. ExpressionMapper.CreateMap<ClassSource, ClassDest>().ForMember(s => s.PropString1, d => d.PropString2).ReverseMap();
  18. ExpressionMapper.Initialize();
  19. }
  20. [ClassCleanup]
  21. public static void Clean()
  22. {
  23. ExpressionMapper.Reset();
  24. }
  25. [TestMethod, TestCategory("Extentions")]
  26. public void OrderBy_Success()
  27. {
  28. Init(null);
  29. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  30. IQueryable<ClassSource> actual = expected.OrderBy<ClassSource, ClassDest>("PropInt1");
  31. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.OrderBy)));
  32. }
  33. [TestMethod, TestCategory("Extentions")]
  34. public void OrderByDescending_Success()
  35. {
  36. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  37. IQueryable<ClassSource> actual = expected.OrderByDescending<ClassSource, ClassDest>("PropInt1");
  38. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.OrderByDescending)));
  39. }
  40. [TestMethod, TestCategory("Extentions")]
  41. public void ThenBy_Success()
  42. {
  43. ExpressionMapper.CreateMap<ClassSource, ClassDest>().ForMember(s => s.PropString1, d => d.PropString2);
  44. ExpressionMapper.Initialize();
  45. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  46. IQueryable<ClassSource> actual = expected.OrderByDescending<ClassSource, ClassDest>("PropInt1").ThenBy<ClassSource, ClassDest>("PropInt1");
  47. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.ThenBy)));
  48. }
  49. [TestMethod, TestCategory("Extentions")]
  50. public void ThenByDescending_Success()
  51. {
  52. Init(null);
  53. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  54. IQueryable<ClassSource> actual = expected.OrderByDescending<ClassSource, ClassDest>("PropInt1").ThenByDescending<ClassSource, ClassDest>("PropInt1");
  55. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.ThenByDescending)));
  56. }
  57. [TestMethod, TestCategory("Extentions")]
  58. public void Select_Success()
  59. {
  60. Init(null);
  61. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  62. var actual = expected.Select<ClassSource, ClassDest>();
  63. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.Select)));
  64. }
  65. [TestMethod, TestCategory("Extentions")]
  66. public void Where_Success()
  67. {
  68. QueryableImplTest<ClassDest> expected = new QueryableImplTest<ClassDest>();
  69. Expression<Func<ClassSource, bool>> criterias = x => x.PropInt1 == 1;
  70. var actual = expected.Where(criterias);
  71. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.Where)));
  72. }
  73. private bool CheckExpressionMethod(Expression expression, string methodeName)
  74. {
  75. if (expression.NodeType == ExpressionType.Call)
  76. {
  77. return (expression as MethodCallExpression).Method.Name == methodeName;
  78. }
  79. return false;
  80. }
  81. }
  82. }