QueryableExtentionsTest.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. private bool CheckExpressionMethod(Expression expression, string methodeName)
  58. {
  59. if (expression.NodeType == ExpressionType.Call)
  60. {
  61. return (expression as MethodCallExpression).Method.Name == methodeName;
  62. }
  63. return false;
  64. }
  65. }
  66. }