2015-01-05 5 views
5

Ich muss überprüfen, die Daten zurückgegeben wird nach Datum sortiert. Dies ist, wie ich es hier schreibe:Winkelmesser: Überprüfung der Daten ist nach Datum sortiert

it('should be sorted by date', function() { 
    element.all(by.repeater('users in group.users')).then(
     function(users) { 
      var lastUser = users[0].element(by.id('birth-date')).getText(); 
      for (var i = 1; i < users.length; ++i) { 
       var currentUser = users[i].element(by.id('birth-date')).getText(); 
       expect(moment(currentApplication).format('MMM d, YYYY HH:mm')).toBeGreaterThan(moment(lastApplication).format('MMM d, YYYY HH:mm')); 
       lastUser = currentUser; 
      } 
     } 
    ) 
}) 

Das gibt:

Expected 'Jan 1, 2015 00:00' to be greater than 'Jan 1, 2015 00:00'. 

Was mache ich falsch? currentUser und lastUser scheinen Objekte anstelle von Text zu sein ... aber ich bin mir nicht sicher warum.

Antwort

7

dir die Liste aller Geburtsdatum map() verwenden, konvertieren Sie die Liste von Strings in der Liste der Daten und mit einer sortierten Version des gleichen Array:

element.all(by.id('birth-date')).map(function (elm) { 
    return elm.getText().then(function (text) { 
     return new Date(text); 
    }); 
}).then(function (birthDates) { 
    // get a copy of the array and sort it by date (reversed) 
    var sortedBirthDates = birthDates.slice(); 
    sortedBirthDates = sortedBirthDates.sort(function(date1, date2) { 
     return date2.getTime() - date1.getTime() 
    }); 

    expect(birthDates).toEqual(sortedBirthDates); 
}); 
+0

Ich bekomme das: TypeError: Objekt [Objekt Objekt] hat keine Methode 'alle' – Jason

+0

@Jason oops, Tippfehler, behoben :) – alecxe

+0

Danke. Ich bin neu, also Syntax ist wichtig für mich :) Noch eine, jetzt bekommen: TypeError: Object [object Object] hat keine Methode 'sort' – Jason

1

maked ich eine kleine Forschung zu diesem Thema . Mein Code ist:

element.all(by.id('birth-date')).map(function (elm) { 
    return elm.getText(); 
}).then(function (birthDates) { 
       var sortedbirthDates = birthDates.slice();             
       sortedbirthDates = sortedbirthDates.sort(function compareNumbers(a, b) {      
                   if (a > b) { 
                    return 1; 
                   } }); 
     expect(birthDates).toEqual(sortedbirthDates);               
    }); 

Hier sind wir unabhängig von Werttyp. Wir können es für Nummer, String und Datum verwenden.