1 using Microsoft.VisualStudio.TestTools.UnitTesting;
9 using System.Collections.Generic;
13 using System.Threading.Tasks;
19 namespace Sage.
ES.S50.UnitTest
24 private TestContext testContextInstance;
26 protected static string AnyOriginal {
get;
set; }
28 protected static string AnyActual {
get;
set; }
30 protected static string AnySiguiente {
get;
set; }
32 protected List<Tuple<string, string>> CodigosMante =
new List<Tuple<string, string>>();
38 public TestContext TestContext
42 return testContextInstance;
46 testContextInstance = value;
50 [ClassInitialize(), DoNotParallelize()]
54 testContext.__Test_LoadRandomConfig();
56 AnyOriginal = DB.Ejercicio_EW;
62 [TestInitialize(), DoNotParallelize()]
67 if (!EstablecePenultimoEjercicio()) Assert.Fail(
"No se puede estableer el penultimo ejercicio");
71 [TestCleanup(), DoNotParallelize()]
74 EstablecePenultimoEjercicio();
77 CleanMantes(CodigosMante);
78 CleanPersonalize(DB.Ejercicio_EW);
80 FUNCTIONS.CambiarEjercicio(DB.Ejercicio_EW, AnySiguiente);
83 CleanMantes(CodigosMante);
84 CleanPersonalize(DB.Ejercicio_EW);
94 private void CleanMantes(List<Tuple<string, string>> toCodigosMante)
98 toCodigosMante.ForEach(f =>
100 loMante = GetMante(f.Item1);
124 [ClassCleanup(), DoNotParallelize()]
128 FUNCTIONS.CambiarEjercicio(DB.Ejercicio_EW, AnyOriginal);
138 protected void CheckCodigo(
string tcAnySiguiente,
string tcTabla,
string tcCodigo,
string tcNombre)
140 CheckCodigo(tcAnySiguiente,
new List<string>() { tcTabla }, tcCodigo, tcNombre);
150 protected void CheckCodigo(
string tcAny, List<string> toTabla,
string tcCodigo,
string tcNombre)
153 loDt = GetDataCheckCodigo(tcAny, toTabla, tcCodigo, tcNombre);
155 Assert.IsTrue(loDt.Rows.Count == toTabla.Count, $
"El codigo {tcCodigo} no existe en alguna de las tablas ({string.Join(",
", toTabla)}) del ejercicio siguiente.");
165 protected void CheckNoCodigo(
string tcAny, List<string> toTabla,
string tcCodigo,
string tcNombre)
168 loDt = GetDataCheckCodigo(tcAny, toTabla, tcCodigo, tcNombre);
170 Assert.IsTrue(loDt.Rows.Count == 0, $
"El codigo {tcCodigo} existe en alguna de las tablas ({string.Join(",
", toTabla)}) del ejercicio siguiente.");
173 private DataTable GetDataCheckCodigo(
string tcAny, List<string> toTabla,
string tcCodigo,
string tcNombre)
175 DataTable loDt =
new DataTable();
176 List<string> loSql =
new List<string>();
180 loSql.Add($
"SELECT '{f}' as TABLA, CODIGO FROM {DB.SQLDatabase(tcAny, f)} WHERE CODIGO = {DB.SQLString(tcCodigo)} AND RTRIM(NOMBRE) = {DB.SQLString(tcNombre)} ");
183 DB.SQLExec(
string.Join(
" UNION ", loSql), ref loDt);
197 string lcSQL, lcCodigo =
"";
198 DataTable loDt =
new DataTable();
200 while (
string.IsNullOrEmpty(lcCodigo) || loDt.Rows.Count > 0)
202 lcCodigo =
string.IsNullOrEmpty(lcCodigo) ? tcCodigoInicial : Convert.ToString(Convert.ToInt32(lcCodigo) + tnIncremento);
204 lcSQL = $
@"SELECT CODIGO FROM {DB.SQLDatabase(AnyActual, tcTabla)} WHERE CODIGO = {DB.SQLString(lcCodigo)} " +
206 $
@"SELECT CODIGO FROM {DB.SQLDatabase(AnySiguiente, tcTabla)} WHERE CODIGO = {DB.SQLString(lcCodigo)} ";
208 if (!DB.SQLExec(lcSQL, ref loDt)) Assert.Fail($
"Error al ejecutar SQL {DB.Error_Message}");
211 if (!CodigosMante.Any(f => f.Item1 == tcTabla && f.Item2 == lcCodigo)) CodigosMante.Add(
new Tuple<string, string>(tcTabla, lcCodigo));
224 DataTable loDt =
new DataTable();
226 lcSQL = $
@"SELECT TOP 1 t.CODIGO FROM {DB.SQLDatabase(AnyActual, tcTabla)} t " +
227 $
@"INNER JOIN {DB.SQLDatabase(AnySiguiente, tcTabla)} i ON t.CODIGO = i.CODIGO ";
229 return DB.SQLExec(lcSQL, ref loDt) && loDt.Rows.Count > 0 ? Convert.ToString(loDt.Rows[0][
"CODIGO"]) :
string.Empty;
241 if (DB._oAliasDBEjer.Count > 1)
243 AnyActual = DB.Ejercicio_EW;
244 AnySiguiente = Convert.ToString(Convert.ToInt32(DB.Ejercicio_EW) + 1);
247 if (!DB._EsPenultimoEjercicio())
249 loList = DB._oAliasDBEjer.ToList().Select(f => f.Key).OrderByDescending(f => Convert.ToInt32(f)).ToList();
251 AnyActual = loList.Skip(1).First();
252 AnySiguiente = loList.First();
254 FUNCTIONS.CambiarEjercicio(DB.Ejercicio_EW, AnyActual);
259 return DB._EsPenultimoEjercicio();
void CheckCodigo(string tcAny, List< string > toTabla, string tcCodigo, string tcNombre)
Checkea si un codigo + nombre existe en el ejercicio siguiente
static bool EstablecePenultimoEjercicio()
Establece el penúltimo ejercicio
virtual void MyTestCleanup()
Clase de negocio base para mantenimientos
string _GetCodigoExisteDosEjercicios(string tcTabla)
Obtiene un codigo que exista en los dos ejercicios
virtual ewMante GetMante(string tcTabla)
Obtener el ewMante
static void MyClassInitialize(TestContext testContext)
static void Clean()
Dejar el ejercio que estaba inicialmente
string _GetCodigoNoExisteDosEjercicios(string tcTabla, string tcCodigoInicial, int tnIncremento)
Obtiene un codigo que no exista en los dos ejercicios
virtual string _Codigo
Valor del campo clave que
void CheckNoCodigo(string tcAny, List< string > toTabla, string tcCodigo, string tcNombre)
Checkea si un codigo + nombre no existe en el ejercicio
virtual void CleanPersonalize(string ejercicio_EW)
void _Load(string tcGuid_Id)
Aquest mètode ens carregarà el registre que tingui associat aquest Guid
override bool _Delete()
Elimina el registro actual
void MyTestInitialize()
Use TestInitialize para ejecutar código antes de ejecutar cada prueba
void CheckCodigo(string tcAnySiguiente, string tcTabla, string tcCodigo, string tcNombre)
Checkea si un codigo + nombre existe en el ejercicio siguiente