/**
  * Insertamos un usuario en la base de datos
  *
  * @return void
  * @group insert
  */
 public function testInsertUser()
 {
     $this->notSeeInDatabase('users', ['email' => '*****@*****.**']);
     $userModel = new UserModel();
     $traveler = new Traveler();
     $traveler->setEmail('*****@*****.**');
     $traveler->setAdmin(false);
     $traveler->setPassword('123456');
     $traveler->setName('Javier');
     $traveler->setOwner(false);
     $traveler->setPhone('654321987');
     $traveler->setSurname('Comino');
     $userModel->createUser($traveler);
     $this->seeInDatabase('users', ['email' => '*****@*****.**']);
     $traveler2 = new Traveler();
     $traveler2->setEmail('*****@*****.**');
     $traveler2->setAdmin(false);
     $traveler2->setPassword('123456');
     $traveler2->setName('Javi Missed');
     $traveler2->setOwner(false);
     $traveler2->setPhone('654321987');
     $traveler2->setSurname('Vera');
     $userModel->createUser($traveler2);
     $this->notSeeInDatabase('users', ['name' => 'Javi Missed']);
 }
Example #2
0
 /**
  * Creates a new user.
  *
  * If creation is successful, the browser will be redirected to the 'index' page.
  *
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new UserModel(['scenario' => 'createUser']);
     if ($model->load(Yii::$app->request->post())) {
         if ($model->createUser()) {
             Yii::$app->session->setFlash('success', Yii::t('user', 'User has been created.'));
             return $this->redirect(['index']);
         }
     }
     return $this->render('create', ['model' => $model]);
 }
 /**
  * Escenario: Insertar un nuevo alojamiento campo imagen principal no válido
  * Dado que soy un usuario del tipo Propietario y me he logueado correctamente
  * Cuando relleno el formulario para insertar un nuevo alojamiento
  * Y el campo imagen principal no corresponde con una imagen en formato correcto
  * Si hago click en el botón 'Anunciar'
  * Entonces debe aparecer un mensaje de "El archivo debe ser una imagen (jpeg, png, bmp, gif, or jpg)"
  *
  * @return void
  * @group accommAcceptance2
  * @test
  */
 public function inserting_new_accommodation_main_invalid()
 {
     $userModel = new UserModel();
     $owner = new Owner();
     $owner->setEmail('*****@*****.**');
     $owner->setAdmin(false);
     $owner->setPassword('123456');
     $owner->setName('Owner');
     $owner->setOwner(true);
     $owner->setPhone('654321987');
     $owner->setSurname('Apellido');
     $userModel->createUser($owner);
     $this->visit('/login')->type('*****@*****.**', 'email')->type('123456', 'password')->press('btn-login')->seePageIs('/manage/owner')->see("Alojamientos");
     $this->visit("/manage/owner#newAccom")->see("Nuevo Alojamiento")->type("Alojamiento", "new-accom-title")->type("Alicante", "new-accom-city")->select("Alicante", "new-accom-province")->type("150", "new-accom-price")->type("Esto es la descripción del anuncio", "new-accom-desc")->attach(base_path() . "/resources/assets/img/img_test/falloFormato.txt", "new-accom-main-img")->press("Anunciar")->see("Nuevo Alojamiento");
 }
 /**
  * Escenario: Login ya realizado
  * Dado que soy un usuario del sistema y ya estoy logueado
  * Cuando intento acceder de nuevo a la página del login
  * Entonces debo ser redireccionado a la página Home
  *
  * @return void
  * @group userAcceptance
  * @test
  */
 public function try_visit_login_page_once_authenticated()
 {
     $userModel = new UserModel();
     $traveler = new Traveler();
     $traveler->setEmail('*****@*****.**');
     $traveler->setAdmin(false);
     $traveler->setPassword('123456');
     $traveler->setName('Traveler');
     $traveler->setOwner(false);
     $traveler->setPhone('654321987');
     $traveler->setSurname('Apellido2');
     $userModel->createUser($traveler);
     $this->visit('/login')->type('*****@*****.**', 'email')->type('123456', 'password')->press('btn-login')->seePageIs('/manage/traveler')->visit('login')->seePageIs('/home');
 }
 /**
  * Escenario: Buscar los alojamientos de una ciudad que sí tiene resultados desde página de búsqueda
  * Dado que soy un usuario del sistema y pretendo buscar los alojamientos de una determinada ciudad desde la página de búsqueda
  * Si escribo dicha ciudad en el buscador y sí se encuentran resultados
  * El sistema deberá redireccionar a la dirección 'search/accommodations/City/page/1'
  * Y mostrar los alojamientos disponibles
  *
  * @return void
  * @group searchAcceptance
  * @test
  */
 public function try_search()
 {
     $am = new AccommodationModel();
     $a1 = new Accommodation();
     $p1 = new Photo();
     $p2 = new Photo();
     $owner = new Owner();
     $um = new UserModel();
     $arrayPhoto = [];
     $owner->setName("Norman");
     $owner->setEmail("*****@*****.**");
     $owner->setSurname("Coloma");
     $owner->setPhone("654987321");
     $owner->setPassword("prueba");
     $um->createUser($owner);
     $p1->setUrl('url/photo1');
     $p1->setMain(1);
     $p2->setUrl('url/photo2');
     $p2->setMain(0);
     $arrayPhoto[] = $p1;
     $arrayPhoto[] = $p2;
     $a1->setBaths(2);
     $a1->setBeds(3);
     $a1->setCapacity(5);
     $a1->setCity('Madrid');
     $a1->setDesc('Alojamiento de lujo.');
     $a1->setInside('Descripción del interior del alojamiento.');
     $a1->setOutside('Descripción del exterior del alojamiento.');
     $a1->setPhotos($arrayPhoto);
     $a1->setPrice(50);
     $a1->setProvince('Madrid');
     $a1->setTitle('Casa rural');
     $am->createAccom($a1, $um->getID($owner->getEmail()));
     $this->visit('/')->see('Destacados')->type('Elche', 'city')->press('BUSCAR')->seePageIs('search/accommodations/Elche/page/1')->see('No hay resultados para la búsqueda introducida!')->type('Madrid', 'city')->press('Buscar')->seePageIs('/search/accommodations/Madrid/page/1')->see('Madrid');
 }
 /**
  * Recuperamos los alojamientos que tiene un owner de la base de datos
  *
  * @return void
  * @group getAccommByOwner
  */
 public function testGetAccommByOwnerID()
 {
     $am = new AccommodationModel();
     $a1 = new Accommodation();
     $a2 = new Accommodation();
     $p1 = new Photo();
     $p2 = new Photo();
     $p3 = new Photo();
     $p4 = new Photo();
     $owner = new Owner();
     $um = new UserModel();
     $arrayPhoto = [];
     $arrayPhoto2 = [];
     $owner->setName("Norman");
     $owner->setEmail("*****@*****.**");
     $owner->setSurname("Coloma");
     $owner->setPhone("654987321");
     $owner->setPassword("prueba");
     $um->createUser($owner);
     $p1->setUrl('url/photo1');
     $p1->setMain(1);
     $p2->setUrl('url/photo2');
     $p2->setMain(0);
     $p3->setUrl('url/photo3');
     $p3->setMain(1);
     $p4->setUrl('url/photo4');
     $p4->setMain(0);
     $arrayPhoto[] = $p1;
     $arrayPhoto[] = $p2;
     $arrayPhoto2[] = $p3;
     $arrayPhoto2[] = $p4;
     $a1->setBaths(2);
     $a1->setBeds(3);
     $a1->setCapacity(5);
     $a1->setCity('Elche');
     $a1->setDesc('Alojamiento de lujo.');
     $a1->setInside('Descripción del interior del alojamiento.');
     $a1->setOutside('Descripción del exterior del alojamiento.');
     $a1->setPhotos($arrayPhoto);
     $a1->setPrice(number_format((double) 50, 2, '.', ''));
     $a1->setProvince('Alicante');
     $a1->setTitle('Casa rural');
     $a1->setInitialDesc($a1->getDesc());
     $a2->setBaths(1);
     $a2->setBeds(2);
     $a2->setCapacity(3);
     $a2->setCity('Murcia');
     $a2->setDesc('Alojamiento de calidad media.');
     $a2->setInside('Descripción del interior del alojamiento.');
     $a2->setOutside('Descripción del exterior del alojamiento.');
     $a2->setPhotos($arrayPhoto2);
     $a2->setPrice(number_format((double) 20, 2, '.', ''));
     $a2->setProvince('Murcia');
     $a2->setTitle('Casa en la ciudad');
     $a2->setInitialDesc($a2->getDesc());
     $prueba1 = $am->createAccom($a1, $um->getID($owner->getEmail()));
     $prueba2 = $am->createAccom($a2, $um->getID($owner->getEmail()));
     $a1->setID($prueba1['id']);
     $a2->setID($prueba2['id']);
     $resultado = [];
     $resultado[] = $a1;
     $resultado[] = $a2;
     $this->assertEquals($resultado, $am->accommodationByOwner($um->getID($owner->getEmail())));
 }
 /**
  * Recuperamos los alojamientos de una determinada ciudad de la BD
  *
  * @return void
  * @group getAccomByCity
  */
 public function testgetAllAccommByCity()
 {
     $this->notSeeInDatabase('accommodations', ['title' => 'Casa rural']);
     $am = new AccommodationModel();
     $a1 = new Accommodation();
     $a2 = new Accommodation();
     $p1 = new Photo();
     $p3 = new Photo();
     $p2 = new Photo();
     $p4 = new Photo();
     $owner = new Owner();
     $owner2 = new Owner();
     $um = new UserModel();
     $sm = new \App\Models\SystemModel();
     $arrayPhoto = [];
     $arrayPhoto2 = [];
     $arrayAcomm = [];
     $owner->setName("Norman");
     $owner->setEmail("*****@*****.**");
     $owner->setSurname("Coloma");
     $owner->setPhone("654987321");
     $owner->setPassword("prueba");
     $owner2->setName("Norman");
     $owner2->setEmail("*****@*****.**");
     $owner2->setSurname("Coloma");
     $owner2->setPhone("654987321");
     $owner2->setPassword("prueba");
     $um->createUser($owner);
     $um->createUser($owner2);
     $p1->setUrl('url/photo1');
     $p1->setMain(1);
     $p2->setUrl('url/photo2');
     $p2->setMain(0);
     $p3->setUrl('url/photo3');
     $p3->setMain(1);
     $p4->setUrl('url/photo4');
     $p4->setMain(0);
     $arrayPhoto[] = $p1;
     $arrayPhoto[] = $p2;
     $arrayPhoto2[] = $p3;
     $arrayPhoto2[] = $p4;
     $a1->setBaths(2);
     $a1->setBeds(3);
     $a1->setCapacity(5);
     $a1->setCity('Elche');
     $a1->setDesc('Alojamiento de lujo.');
     $a1->setInside('Descripción del interior del alojamiento.');
     $a1->setOutside('Descripción del exterior del alojamiento.');
     $a1->setPhotos($arrayPhoto);
     $a1->setPrice(number_format((double) 50, 2, '.', ''));
     $a1->setProvince('Alicante');
     $a1->setTitle('Casa rural');
     $a1->setInitialDesc($a1->getDesc());
     $a2->setBaths(4);
     $a2->setBeds(5);
     $a2->setCapacity(20);
     $a2->setCity('Elche');
     $a2->setDesc('Alojamiento de caca.');
     $a2->setInside('Descripción del interior del alojamiento2.');
     $a2->setOutside('Descripción del exterior del alojamiento2.');
     $a2->setPhotos($arrayPhoto2);
     $a2->setPrice(number_format((double) 150, 2, '.', ''));
     $a2->setProvince('Alicante');
     $a2->setTitle('Casa rural2');
     $a2->setInitialDesc($a2->getDesc());
     $accom = $am->createAccom($a1, $um->getID($owner->getEmail()));
     $accom2 = $am->createAccom($a2, $um->getID($owner2->getEmail()));
     $a1->setID($accom['id']);
     $a2->setID($accom2['id']);
     $arrayAcomm[] = $a1;
     $arrayAcomm[] = $a2;
     $this->SeeInDatabase('accommodations', ['title' => 'Casa rural']);
     $this->SeeInDatabase('photos', ['url' => 'url/photo1']);
     $this->SeeInDatabase('photos', ['url' => 'url/photo2']);
     $this->SeeInDatabase('accommodations', ['title' => 'Casa rural2']);
     $this->SeeInDatabase('photos', ['url' => 'url/photo3']);
     $this->SeeInDatabase('photos', ['url' => 'url/photo4']);
     //Testeamos el método allAccomByCity
     $this->assertEquals($arrayAcomm, $sm->allAcomByCity("Elche"));
 }
 /**
  *Recibe los campos del usuario por parámetro y los valida. Si la validación es incorrecta, le redirige a la página
  * de registro indicándole los errores pertinente. Si es válida, intenta registrar al usuario. Si el email introducido ya
  * existe, se le vuelve a redirigir a la página de registro. En caso contrario, se inserta al usuario y se le loguea.
  *
  * @param  Request $request
  * @return Response
  */
 public function register(Request $request)
 {
     $messages = ['email.required' => 'El email es obligatorio', 'name.required' => 'El nombre es obligatorio', 'surname.required' => 'Los apellidos son obligatorios', 'password.required' => 'La contraseña es obligatoria', 'phone.required' => 'El teléfono es obligatorio', 'email.email' => 'El email introducido no es correcto', 'password.regex' => 'La contraseña introducida no es correcta. Debe tener un mínimo de 6 caractares, y un máximo de 15. Debe empezar por una letra, y solo puede ser alfanumérica', 'name.regex' => 'El nombre solo puede contener letras', 'surname.regex' => 'Los apellidos solo puede contener letras', 'digits' => 'El teléfono solo puede contener números, y debe ser correcto'];
     $validator = Validator::make($request->all(), ['name' => 'required|regex:/^[A-Z]+[a-zA-ZÁÉÍÓÚáéíóuñÑ\\s\']+$/', 'surname' => 'required|regex:/^[A-Z]+[a-zA-ZÁÉÍÓÚáéíóuñÑ\\s\']+$/', 'email' => 'required|email', 'password' => 'required|regex:[^[a-zA-Z]\\w{5,14}$]', 'phone' => 'required|digits:9'], $messages);
     if ($validator->fails()) {
         return redirect('/register')->withErrors($validator)->withInput();
     } else {
         $user = null;
         if ($request->input('owner')) {
             $user = new Owner();
         } else {
             $user = new Traveler();
         }
         $user->setName($request->input('name'));
         $user->setSurname($request->input('surname'));
         $user->setEmail($request->input('email'));
         $user->setPassword($request->input('password'));
         $user->setPhone($request->input('phone'));
         if ($request->input('owner') != null) {
             $user->setOwner($request->input('owner'));
         }
         $uModel = new UserModel();
         $uCreated = $uModel->createUser($user);
         if ($uCreated != null) {
             Auth::login($uCreated);
             flash()->overlay('Su cuenta en Alojarural ha sido creada correctamente..', 'Bienvenido');
             if (!Auth::user()->admin && !Auth::user()->owner) {
                 return redirect()->intended('/manage/traveler');
             } else {
                 return redirect()->intended('/manage/owner');
             }
         }
         return redirect('/register')->withErrors(['email' => 'El email introducido ya se encuentra registrado'])->withInput();
     }
 }
Example #9
0
 /**
  * A basic functional test example.
  *
  * @return void
  * @group modelo
  */
 public function testCreate()
 {
     $userModel = new UserModel();
     $admin = new Admin();
     $traveler = new Traveler();
     $owner = new Owner();
     $admin->setName('Admin');
     $admin->setEmail('*****@*****.**');
     $admin->setPassword("123456");
     $owner->setEmail('*****@*****.**');
     $owner->setAdmin(false);
     $owner->setPassword('123456');
     $owner->setName('Owner');
     $owner->setOwner(true);
     $owner->setPhone('654321987');
     $owner->setSurname('Apellido');
     $traveler->setEmail('*****@*****.**');
     $traveler->setAdmin(false);
     $traveler->setPassword('123456');
     $traveler->setName('Traveler');
     $traveler->setOwner(false);
     $traveler->setPhone('654321987');
     $traveler->setSurname('Apellido2');
     //$ok= $userModel->createUser($admin);
     $this->assertNotEquals(null, $userModel->createUser($admin));
     $this->assertEquals(null, $userModel->createUser($admin));
     $this->assertNotEquals(null, $userModel->createUser($traveler));
     $this->assertEquals(null, $userModel->createUser($traveler));
     $this->assertNotEquals(null, $userModel->createUser($owner));
     $this->assertEquals(null, $userModel->createUser($owner));
 }