2015-01-05 2 views
5

Мне нужно проверить, что данные, которые были возвращены, сортируются по дате. Это, как я пишу это:Транспортир: данные для проверки сортируются по дате

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; 
      } 
     } 
    ) 
}) 

Это возвращает:

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

Что я делаю неправильно? currentUser и lastUser кажутся объектами вместо текста ... но я не уверен, почему.

ответ

7

Получить список всех дат рождения с помощью map(), конвертировать список строк в список дат и сравнить с отсортированного версии одного и того же массива:

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

Я получаю это: TypeError: Object [object Object] не имеет метода 'all' – Jason

+0

@Jason oops, typo, fixed :) – alecxe

+0

Спасибо. Я новичок, поэтому синтаксис для меня важен :) Еще один, получив это сейчас: TypeError: Object [object Object] не имеет метода 'sort' – Jason

1

Я цветовым небольшое исследование этой темы , Мой код:

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);               
    }); 

Здесь мы независимы от типа значения. Мы можем использовать его для числа, строки и даты.

Смежные вопросы