Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.23 KB | None | 0 0
  1. internal class ImportAcquisitionDataDAO : IImportAcquisitionDataDAO
  2. {
  3. private static Logger log = LogManager.GetCurrentClassLogger();
  4.  
  5. private readonly IDbConnection connection;
  6.  
  7. internal ImportAcquisitionDataDAO(IDbConnection connection)
  8. {
  9. this.connection = connection;
  10. }
  11.  
  12. internal List<DefinitionEntry> GetDefinitions()
  13. {
  14. log.Debug("Getting definitions from database.");
  15.  
  16. var definitions = new List<DefinitionEntry>();
  17.  
  18. using (connection)
  19. {
  20. connection.Open();
  21. log.Trace("Database connection opened");
  22.  
  23. IDbCommand command = connection.CreateCommand();
  24. command.CommandText = @"SELECT *
  25. FROM MAPPING";
  26.  
  27. IDataReader reader = command.ExecuteReader();
  28. log.Trace("Command executed:n{0}", command.CommandText);
  29.  
  30. definitions = GetMeterEntries(reader);
  31. }
  32.  
  33. log.Debug("Obtained {0} definitions.", definitions.Count);
  34. return definitions;
  35. }
  36.  
  37. private List<DefinitionEntry> GetMeterEntries(IDataReader reader)
  38. {
  39. log.Trace("Parsing definitions from response");
  40.  
  41. var result = new List<DefinitionEntry>();
  42.  
  43. while (reader.Read())
  44. {
  45. var definition = new DefinitionEntry(
  46. reader.GetString(0),
  47. reader.GetString(1),
  48. reader.GetString(2),
  49. reader.IsDBNull(3) ? null : reader.GetString(3),
  50. reader.IsDBNull(4) ? null : reader.GetString(4),
  51. reader.IsDBNull(5) ? null : reader.GetString(5),
  52. reader.IsDBNull(6) ? null : reader.GetString(6)
  53. );
  54.  
  55. log.Trace(definition.ToString());
  56. result.Add(definition);
  57. }
  58.  
  59. return result;
  60. }
  61. }
  62.  
  63. public class DefinitionEntry
  64. {
  65. public string MeterSN { get; private set; }
  66. public string MATNR { get; private set; }
  67. public string IpAddress { get; private set; }
  68. public string SIM { get; private set; }
  69. public string ModulID { get; private set; }
  70. public string SIMUser { get; private set; }
  71. public string SIMPassword { get; private set; }
  72.  
  73. public DefinitionEntry(string meterSN, string matnr, string ipAddress, string sim, string modulId, string simUser, string simPassword)
  74. {
  75. MeterSN = meterSN;
  76. MATNR = matnr;
  77. IpAddress = ipAddress;
  78. SIM = sim;
  79. ModulID = modulId;
  80. SIMUser = simUser;
  81. SIMPassword = simPassword;
  82. }
  83. }
  84.  
  85. [TestFixture]
  86. public class ImportAcquisitionDataDAOTests
  87. {
  88. private IDbConnection mockConnection;
  89. private IDbCommand mockCommand;
  90. private IDataReader mockReader;
  91. private ImportAcquisitionDataDAO dao;
  92.  
  93. [SetUp]
  94. public void SetUp()
  95. {
  96. mockConnection = Substitute.For<IDbConnection>();
  97. mockCommand = Substitute.For<IDbCommand>();
  98. mockReader = Substitute.For<IDataReader>();
  99. dao = new ImportAcquisitionDataDAO(mockConnection);
  100.  
  101. mockConnection.CreateCommand().Returns(mockCommand);
  102. mockCommand.ExecuteReader().Returns(mockReader);
  103. }
  104.  
  105. [Test]
  106. public void TestGetDefinitions()
  107. {
  108. // mock
  109. var databaseDefinitionFirst = new DefinitionEntry("11111", "AS3000-5/100-400-P", "10.42.42.26", "SIM-001", "12345lkj", "alibaba", "abrakadabra");
  110. var databaseDefinitionSecond = new DefinitionEntry("22222", "AS3000-5/100-400-Q", "10.42.42.158", null, null, null, null);
  111.  
  112. mockReader.Read().Returns(true, true, false);
  113. mockReader.GetString(Arg.Is<int>(0)).Returns(databaseDefinitionFirst.MeterSN, databaseDefinitionSecond.MeterSN);
  114. mockReader.GetString(Arg.Is<int>(1)).Returns(databaseDefinitionFirst.MATNR, databaseDefinitionSecond.MATNR);
  115. mockReader.GetString(Arg.Is<int>(2)).Returns(databaseDefinitionFirst.IpAddress, databaseDefinitionSecond.IpAddress);
  116. mockReader.IsDBNull(Arg.Is<int>(3)).Returns(false, true);
  117. mockReader.GetString(Arg.Is<int>(3)).Returns(databaseDefinitionFirst.SIM);
  118. mockReader.IsDBNull(Arg.Is<int>(4)).Returns(false, true);
  119. mockReader.GetString(Arg.Is<int>(4)).Returns(databaseDefinitionFirst.ModulID);
  120. mockReader.IsDBNull(Arg.Is<int>(5)).Returns(false, true);
  121. mockReader.GetString(Arg.Is<int>(5)).Returns(databaseDefinitionFirst.SIMUser);
  122. mockReader.IsDBNull(Arg.Is<int>(6)).Returns(false, true);
  123. mockReader.GetString(Arg.Is<int>(6)).Returns(databaseDefinitionFirst.SIMPassword);
  124.  
  125. // use
  126. List<DefinitionEntry> tested = dao.GetDefinitions();
  127.  
  128. // verify
  129. Assert.AreEqual(2, tested.Count);
  130. AssertDefinitionEntry(databaseDefinitionFirst, tested.First());
  131. AssertDefinitionEntry(databaseDefinitionSecond, tested.Last());
  132. }
  133.  
  134. private void AssertDefinitionEntry(DefinitionEntry expected, DefinitionEntry tested)
  135. {
  136. Assert.AreEqual(expected.MeterSN, tested.MeterSN);
  137. Assert.AreEqual(expected.MATNR, tested.MATNR);
  138. Assert.AreEqual(expected.IpAddress, tested.IpAddress);
  139. Assert.AreEqual(expected.SIM, tested.SIM);
  140. Assert.AreEqual(expected.ModulID, tested.ModulID);
  141. Assert.AreEqual(expected.SIMUser, tested.SIMUser);
  142. Assert.AreEqual(expected.SIMPassword, tested.SIMPassword);
  143. }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement