/src/Otis.Tests/MappingPreparerTests.cs

http://otis-lib.googlecode.com/ · C# · 72 lines · 64 code · 8 blank · 0 comment · 0 complexity · 92b6b93ee40e6c8216a1ed29aa62e7cd MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using NUnit.Framework;
  5. using Otis.Tests.Entity;
  6. namespace Otis.Tests
  7. {
  8. [TestFixture]
  9. public class MappingPreparerTests
  10. {
  11. const string errDuplicatePreparer = "Method 'Preparer' on type 'Otis.Tests.MappingPreparerDTO_Duplicate' is marked with [MappingPreparer], but mapping preparer is already set to 'Otis.Tests.Util.Convert'";
  12. const string errPreparerIsPrivate = "Non public method 'Preparer' on type 'Otis.Tests.MappingPreparerDTO_NonPublic'is marked with [MappingPreparer]. Only public methods can be used as preparers";
  13. private User m_user;
  14. [SetUp]
  15. public void SetUp()
  16. {
  17. m_user = new User();
  18. m_user.Id = 77;
  19. m_user.FirstName = "aaa";
  20. m_user.LastName = "bbb";
  21. }
  22. [Test]
  23. [ExpectedException(typeof(OtisException), ExpectedMessage = errDuplicatePreparer)]
  24. public void Configuration_Throws_With_Duplicate_Preparers()
  25. {
  26. ConfigureType<MappingPreparerDTO_Duplicate>();
  27. }
  28. [Test]
  29. [ExpectedException(typeof(OtisException), ExpectedMessage = errPreparerIsPrivate)]
  30. public void Configuration_Throws_With_NonPublic_Preparers()
  31. {
  32. ConfigureType<MappingPreparerDTO_NonPublic>();
  33. }
  34. [Test]
  35. public void Non_Static_Preparer()
  36. {
  37. IAssembler<MappingPreparerDTO_InstancePreparer, User> asm = ConfigureType<MappingPreparerDTO_InstancePreparer>();
  38. MappingPreparerDTO_InstancePreparer dto = asm.AssembleFrom(m_user);
  39. Assert.AreEqual(77, dto.Id);
  40. Assert.AreEqual("custom_mapping_InstancePreparer", dto.FullName);
  41. }
  42. [Test]
  43. public void Preparer_Is_Called_Before_Transformation()
  44. {
  45. IAssembler<MappingPreparerDTO_CheckOrder, User> asm = ConfigureType<MappingPreparerDTO_CheckOrder>();
  46. MappingPreparerDTO_CheckOrder dto = asm.AssembleFrom(m_user);
  47. Assert.AreEqual(77, dto.Id); // check it is not -1
  48. }
  49. [Test]
  50. public void Static_Preparer()
  51. {
  52. IAssembler<MappingPreparerDTO_StaticPreparer, User> asm = ConfigureType<MappingPreparerDTO_StaticPreparer>();
  53. MappingPreparerDTO_StaticPreparer dto = asm.AssembleFrom(m_user);
  54. Assert.AreEqual(77, dto.Id);
  55. Assert.AreEqual("custom_mapping_StaticPreparer", dto.FullName);
  56. }
  57. IAssembler<T, User> ConfigureType<T>()
  58. {
  59. Configuration cfg = new Configuration();
  60. cfg.AddType(typeof(T));
  61. return cfg.GetAssembler<T, User>();
  62. }
  63. }
  64. }