QueryableExtentionsTest.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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.Linq;
  6. using System.Linq.Expressions;
  7. namespace Masuit.Tools.UnitTest.Mapping.Extentions
  8. {
  9. [TestClass]
  10. public class QueryableExtentionsTest
  11. {
  12. [ClassInitialize]
  13. public static void Init(TestContext context)
  14. {
  15. Clean();
  16. ExpressionMapper.CreateMap<ClassSource, ClassDest>().ForMember(s => s.PropString1, d => d.PropString2).ReverseMap();
  17. ExpressionMapper.Initialize();
  18. }
  19. [ClassCleanup]
  20. public static void Clean()
  21. {
  22. ExpressionMapper.Reset();
  23. }
  24. [TestMethod, TestCategory("Extentions")]
  25. public void OrderBy_Success()
  26. {
  27. Init(null);
  28. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  29. IQueryable<ClassSource> actual = expected.OrderBy<ClassSource, ClassDest>("PropInt1");
  30. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.OrderBy)));
  31. }
  32. [TestMethod, TestCategory("Extentions")]
  33. public void OrderByDescending_Success()
  34. {
  35. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  36. IQueryable<ClassSource> actual = expected.OrderByDescending<ClassSource, ClassDest>("PropInt1");
  37. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.OrderByDescending)));
  38. }
  39. [TestMethod, TestCategory("Extentions")]
  40. public void ThenBy_Success()
  41. {
  42. ExpressionMapper.CreateMap<ClassSource, ClassDest>().ForMember(s => s.PropString1, d => d.PropString2);
  43. ExpressionMapper.Initialize();
  44. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  45. IQueryable<ClassSource> actual = expected.OrderByDescending<ClassSource, ClassDest>("PropInt1").ThenBy<ClassSource, ClassDest>("PropInt1");
  46. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.ThenBy)));
  47. }
  48. [TestMethod, TestCategory("Extentions")]
  49. public void ThenByDescending_Success()
  50. {
  51. Init(null);
  52. QueryableImplTest<ClassSource> expected = new QueryableImplTest<ClassSource>();
  53. IQueryable<ClassSource> actual = expected.OrderByDescending<ClassSource, ClassDest>("PropInt1").ThenByDescending<ClassSource, ClassDest>("PropInt1");
  54. Assert.IsTrue(CheckExpressionMethod(actual.Expression, nameof(QueryableExtentions.ThenByDescending)));
  55. }
  56. private bool CheckExpressionMethod(Expression expression, string methodeName)
  57. {
  58. if (expression.NodeType == ExpressionType.Call)
  59. {
  60. return (expression as MethodCallExpression).Method.Name == methodeName;
  61. }
  62. return false;
  63. }
  64. }
  65. }