Ejemplo n.º 1
0
        public void RegistraUnEstudiante()
        {
            Inotech.Edfc.EdfcApp        myApp     = new Inotech.Edfc.EdfcApp();
            Dictionary <string, string> fieldsIn  = new Dictionary <string, string>();
            Dictionary <string, string> fields    = new Dictionary <string, string>();
            Dictionary <string, string> fieldsOut = new Dictionary <string, string>();

            myApp.Initialize();
            ICatEstudiantesView         view         = Substitute.For <ICatEstudiantesView, ICatEstudiantesTestableView>();
            ICatEstudiantesTestableView testableView = (ICatEstudiantesTestableView)view;

            //Pide a la aplicación que cree un nuevo presenter del Catalogo de estudiantes y
            // lo liga a la vista que acabamos de crear
            CatEstudiantesPresenter presenter = myApp.CreateCatEstudiantesPresenter(view);

            //Vamos a establecer el modo de la vista a ALTA asi que preparamos la vista falsa para responder
            // a esta petición
            EEditionMode currentEditionMode = 0;

            view.SetEditionMode(Arg.Do <EEditionMode>(x => currentEditionMode = x));
            testableView.EditionMode.Returns(x => currentEditionMode);

            int messageboxHasBeenShowed = 0;

            view.When(x => x.ShowMessageBox(Arg.Any <string>(), Arg.Any <string>())).Do(x => messageboxHasBeenShowed++);
            // Inicializa la vista y el presentador
            view.Initialize(presenter);

            testableView.When(x => x.ClickOnNewButton()).Do(x => presenter.NewCommand());
            testableView.When(x => x.ClickOnSaveButton()).Do(x => presenter.SaveCommand());
            testableView.When(x => x.ClickOnCloseButton()).Do(x => presenter.CloseCommand());

            //Simula el click sobre el boton "Nuevo"
            testableView.ClickOnNewButton();
            //La vista debe estar en modo de alta
            Assert.AreEqual(messageboxHasBeenShowed, 0);
            Assert.AreEqual(Catalogos.EEditionMode.Alta, currentEditionMode);
            Assert.AreEqual(Catalogos.EEditionMode.Alta, testableView.EditionMode);

            //Despliega datos de cliente simulando que el usuario ha capturado datos
            view.DisplayItemFields(Arg.Do <Dictionary <string, string> >(x => fields = x));
            testableView.ItemFields.Returns(x => fields);

            fieldsIn.Add("Id", "0");
            fieldsIn.Add("Apellido", "Apellido");
            fieldsIn.Add("Nombre", "Nombre");
            fieldsIn.Add("Nacimiento", new DateTime(1969, 08, 15).ToString("yyyy-MM-dd"));
            view.DisplayItemFields(fieldsIn);

            fieldsOut = testableView.ItemFields;
            Assert.IsTrue(fieldsIn.ContainsKey("Id"));
            Assert.IsTrue(fieldsIn.ContainsKey("Apellido"));
            Assert.IsTrue(fieldsIn.ContainsKey("Nombre"));
            Assert.IsTrue(fieldsIn.ContainsKey("Nacimiento"));

            Assert.AreEqual(fieldsIn["Id"], fieldsOut["Id"]);
            Assert.AreEqual(fieldsIn["Apellido"], fieldsOut["Apellido"]);
            Assert.AreEqual(fieldsIn["Nombre"], fieldsOut["Nombre"]);
            Assert.AreEqual(fieldsIn["Nacimiento"], fieldsOut["Nacimiento"]);
            //No debe haber errores de validación
            testableView.Validate();
            Assert.AreEqual(messageboxHasBeenShowed, 0);
            Assert.AreEqual(0, testableView.ValidationErrors.Count);

            //Simulamos el click sobre el botón grabar
            testableView.ClickOnSaveButton();

            Assert.AreEqual(messageboxHasBeenShowed, 0);
            Assert.AreEqual(Catalogos.EEditionMode.Navegacion, currentEditionMode);
            Assert.AreEqual(Catalogos.EEditionMode.Navegacion, testableView.EditionMode);

            //Cerramos el modulo de captura de estudiantes
            testableView.ClickOnCloseButton();

            Assert.AreEqual(messageboxHasBeenShowed, 0);

            //Cerramos la aplicacion
            myApp.End();
        }
Ejemplo n.º 2
0
 public CatEstudiantesPresenter(ICatEstudiantesView view)
 {
     _view = view;
 }