Как я могу вызвать шаблон события Meteor?
Функциональность: пользователь должен ввести код лекции в поле ввода, чтобы ввести лекцию. На целевой странице, пока пользователь вводит код лекции, я хочу проверить, верен ли этот код, и закрасить зеленый цвет "btn-enter-lecture", если он есть.
'keyup #lecture-code-input' : function() {
var possibleLectureID = $('#lecture-code-input').val();
var possibleLecture = Lectures.findOne({lectureCode: possibleLectureID});
if(possibleLecture){
$('#btn-enter-lecture').addClass('btn-success');
$('#btn-enter-lecture').removeClass('disabled');
}
else {
$('#btn-enter-lecture').removeClass('btn-success');
$('#btn-enter-lecture').addClass('disabled');
}
}
Чтобы проверить эту функциональность с помощью jasmine, я вставляю код лекции в поле ввода и пытаюсь вызвать событие с помощью jquery. Но это не назовет метеорное событие.
describe("'Enter Class' button", function() {
it("turns green when there is a lecture with this lecture code", function(done) {
$('#lecture-code-input').val(lectureCode);
$('#lecture-code-input').trigger('keyup');
var interval = setInterval(function() {
if(!$('button#btn-enter-class').hasClass('disabled')){
clearInterval(interval);
expect($('button#btn-enter-class').hasClass('btn-success')).toBe(true);
done();
}
},5);
});
});
Как я могу запустить это событие шаблона метеора, чтобы проверить, становится ли кнопка зеленым после этого?
Код: https://github.com/minden/rewind/commit/cac61ecc3da3014548ad4ec9d1ceb2fd49bb265c
2 ответа
Вы также можете увидеть пример тестов лидеров.
Вот фрагмент по ссылке
Tinytest.add('Template.leaderboard [click input.inc] event', function (test) {
//updates the player score by 5 when input.inc is clicked
Session.set('selected_player', 1234);
Players.update = function (selector, options) {
test.equal(selector, 1234);
test.equal(options.$inc.score, 5);
};
Template.leaderboard.fireEvent('click input.inc');
});
Проверьте этот учебник: https://doctorllama.wordpress.com/2014/09/22/bullet-proof-internationalised-meteor-applications-with-velocity-unit-testing-integration-testing-and-jasmine/
Пройдите весь путь до: ".registerForTutorial"
Вы должны увидеть это:
var data = new Tutorial();
spyOn(data, "registerStudent");
spyOn(Blaze, "getData").and.returnValue(data);
Template.tutorials.__eventMaps[0]["click .registerForTutorial"].call({templateInstance: function() {}}, {preventDefault : function() {}});
expect(data.registerStudent).toHaveBeenCalled();
});
Я думаю, это то, что вы ищете. Вам необходимо указать шаблон.