Skip to content

Commit

Permalink
Agrega paso 4 de la aplicación
Browse files Browse the repository at this point in the history
- Agrega la propiedad `age` a cada teléfono en el modelo de datos.

- Agrega una combo `<select>` para cambiar el orden de la lista de
teléfonos.

- Sobreescribe el valor del orden por defecto en el controlador.

- Agrega pruebas unitarias y e2e tests para esta funcionalidad.
  • Loading branch information
Israel Guzman committed Aug 29, 2014
1 parent 503a992 commit f44d08f
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 11 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Para ver los cambios entre dos lecciones cualquiera usa el comando git diff.

### paso-4

- Agrega la propiedad `edad` a cada teléfono en el modelo de datos.
- Agrega la propiedad `age` a cada teléfono en el modelo de datos.
- Agrega una combo `<select>` para cambiar el orden de la lista de teléfonos.
- Sobreescribe el valor del orden por defecto en el controlador.
- Agrega pruebas unitarias y e2e tests para esta funcionalidad.
Expand Down
8 changes: 6 additions & 2 deletions app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,17 @@
<!--Sidebar content-->

Búsqueda: <input ng-model="query">

Ordenar por:
<select ng-model="ordenProp">
<option value="name">Alfabética</option>
<option value="age">El más nuevo</option>
</select>
</div>
<div class="col-md-10">
<!--Body content-->

<ul class="phones">
<li ng-repeat="telefono in telefonos | filter:query">
<li ng-repeat="telefono in telefonos | filter:query | orderBy:ordenProp">
{{telefono.name}}
<p>{{telefono.snippet}}</p>
</li>
Expand Down
14 changes: 10 additions & 4 deletions app/js/controladores.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,16 @@ var phonecatAp = angular.module('phonecatAp', []);
phonecatAp.controller('ListaTelefonosCtrl', function($scope) {
$scope.telefonos = [
{'name': 'Nexus S',
'snippet': 'Rápido ahora es más rápido con Nexus S.'},
{'name': 'Motorola XOOM™ con Wi-Fi',
'snippet': 'la Siguiente, Siguiente Generación de tableta.'},
'snippet': 'Fast just got faster with Nexus S.',
'age': 1},
{'name': 'Motorola XOOM™ with Wi-Fi',
'snippet': 'The Next, Next Generation tablet with Wi-Fi.',
'age': 2},
{'name': 'MOTOROLA XOOM™',
'snippet': 'la Siguiente, Siguiente Generación de tableta.'}
'snippet': 'The Next, Next Generation tablet.',
'age': 3}
];

$scope.ordenProp = 'age';

});
28 changes: 27 additions & 1 deletion test/e2e/scenarios.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */

describe('my app', function() {
describe('mi ap', function() {

beforeEach(function() {
browser.get('app/index.html');
Expand All @@ -22,4 +22,30 @@ describe('my app', function() {
query.sendKeys('motorola');
expect(listaTelefonos.count()).toBe(2);
});

it('Debe ser posible controlar el orden de los teléfonos via el combo box', function() {

var phoneNameColumn = element.all(by.repeater('telefono in telefonos').column('{{telefono.snippet}}'));
var query = element(by.model('query'));

function getNames() {
return phoneNameColumn.map(function(elm) {
return elm.getText();
});
}

query.sendKeys('tablet'); //let's narrow the dataset to make the test assertions shorter

expect(getNames()).toEqual([
"The Next, Next Generation tablet with Wi-Fi.",
"The Next, Next Generation tablet."
]);

element(by.model('ordenProp')).element(by.css('option[value="name"]')).click();

expect(getNames()).toEqual([
"The Next, Next Generation tablet.",
"The Next, Next Generation tablet with Wi-Fi."
]);
});
});
15 changes: 12 additions & 3 deletions test/unit/controladoresSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,23 @@
/* jasmine specs for controllers go here */

describe('controllers', function() {
var scope, ctrl;

beforeEach(module('phonecatAp'));

it('debe crear el modelo "telefonos" con 3 teléfonos', inject(function($controller) {
var scope = {},
ctrl = $controller('ListaTelefonosCtrl', {$scope:scope});

beforeEach(inject(function($controller) {
scope = {};
ctrl = $controller('ListaTelefonosCtrl', {$scope:scope});
}));

it('debe crear el modelo "telefonos" con 3 teléfonos', inject(function($controller) {
expect(scope.telefonos.length).toBe(3);
}));


it('debe setear el valor por defecto del modelo ordenProp', function() {
expect(scope.ordenProp).toBe('age');
});

});

0 comments on commit f44d08f

Please sign in to comment.