private void PrepareCloseDrawersForTest(String cSalespoint, String cOperator, Boolean changePreferences = false) { String cSQL = @"IF NOT EXISTS (SELECT 1 FROM dbo.sale_hdr WHERE salespoint = @salespoint AND operator = @operator) UPDATE top (10) dbo.sale_hdr SET closeout = 0 WHERE salespoint = @salespoint AND operator = @operator; "; if (changePreferences) cSQL = "UPDATE dbo.prefs_sl SET closedrwrs=3;" + cSQL; else cSQL = "UPDATE dbo.prefs_sl SET closedrwrs=2;" + cSQL; using (SqlCommand sqlCommand = new SqlCommand(cSQL, middlewareMain.database.sqlConnection)) { sqlCommand.Parameters.Add("@salespoint", System.Data.SqlDbType.Char, 6).Value = cSalespoint; sqlCommand.Parameters.Add("@operator", System.Data.SqlDbType.Char, 6).Value = cOperator; sqlCommand.ExecuteNonQuery(); } } [TestMethod] public void S_CloseDrawerNoClose1() { SalesUnitTest.isClassInitialized = false; // Need to re-initialize SalesUnitTest.ClassInit(null); PrepareCloseDrawersForTest("TICKET", "ADMIN"); String input = @"<FUNC>CloseDrawer</FUNC><TCSALESPOINT>TICKET</TCSALESPOINT><TCOPERATOR>ADMIN</TCOPERATOR> <TCDETAILS><STOCK_T1_S1>2</STOCK_T1_S1><STOCK_T1_E1>37</STOCK_T1_E1></TCDETAILS><tcNoClose>YES</tcNoClose>"; String result = middlewareMain.Invoke(input); String expected = "<ERR>0</ERR><STATUSCODE>0</STATUSCODE><MSG>106 sales to close out</MSG>"; Assert.IsTrue(String.Equals(expected, result, StringComparison.OrdinalIgnoreCase), result); } [TestMethod] public void S_CloseDrawerNoClose2() { SalesUnitTest.isClassInitialized = false; // Need to re-initialize SalesUnitTest.ClassInit(null); PrepareCloseDrawersForTest("TICKET", "ADMIN", true); String input = @"<FUNC>CloseDrawer</FUNC><TCSALESPOINT>TICKET</TCSALESPOINT><TCOPERATOR>ADMIN</TCOPERATOR> <TCDETAILS><STOCK_T1_S1>2</STOCK_T1_S1><STOCK_T1_E1>37</STOCK_T1_E1></TCDETAILS><tcNoClose>YES</tcNoClose>"; String result = middlewareMain.Invoke(input); String expected = "<ERR>0</ERR><STATUSCODE>0</STATUSCODE><MSG>497 sales to close out</MSG>"; Assert.IsTrue(String.Equals(expected, result, StringComparison.OrdinalIgnoreCase), result); }No close parameter means I am not performing the actual closeout but finding how many sales I need to close out.