diff options
author | Alexandre Pretto Nunes <anunes@thoughtworks.com> | 2014-11-20 15:09:49 -0200 |
---|---|---|
committer | Alexandre Pretto Nunes <anunes@thoughtworks.com> | 2014-11-20 15:10:09 -0200 |
commit | da0a8e77d19f5dffff3021d0f6ff4b2d10b97a31 (patch) | |
tree | c765afb66618d83ebe1436651db835dcc56c8b22 /web-ui/test/custom_matchers.js | |
parent | feab7da9b4dad9ae0aa86ab3f6c06f9f943e9c0c (diff) |
Create custom matcher for jasmine unit tests
Diffstat (limited to 'web-ui/test/custom_matchers.js')
-rw-r--r-- | web-ui/test/custom_matchers.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/web-ui/test/custom_matchers.js b/web-ui/test/custom_matchers.js new file mode 100644 index 00000000..6643a3c6 --- /dev/null +++ b/web-ui/test/custom_matchers.js @@ -0,0 +1,82 @@ +define([], function() { + 'use strict'; + function toBeRenderedInMatcher () { + return { + compare: function (mail, node) { + var result = {}, subject, tags, from, date, messages = [], notMessages = []; + + subject = node.find('#mail-' + mail.ident + ' .subject-and-tags')[0]; + tags = _.map(node.find('#mail-' + mail.ident + ' .subject-and-tags .tag'), function (tag) { return tag.textContent; }); + date = node.find('#mail-' + mail.ident + ' .received-date'); + from = node.find('#mail-' + mail.ident + ' .from'); + + if (subject && subject.textContent.trim() === mail.header.subject) { + result.pass = true; + notMessages.push('not to be rendered with subject ' + mail.header.subject); + } else { + result.pass = false; + messages.push('to be rendered with subject ' + mail.header.subject + ', but was rendered with subject ' + subject.textContent.trim()); + } + + if (tags && tags.join(', ') === mail.tags.join(', ')) { + result.pass &= true; + notMessages.push('not to be rendered with tags ' + mail.tags.join(', ')); + } else { + result.pass |= false; + messages.push('to be rendered with tags ' + mail.tags.join(', ') + ', but was rendered with subject ' + tags.join(', ')); + } + + if (date && date.text().trim() === mail.header.date.split('T')[0]) { + result.pass &= true; + notMessages.push('not to be rendered with date ' + mail.header.date.split('T')[0]); + } else { + result.pass |= false; + messages.push('to be rendered with date ' + mail.header.date.split('T')[0] + ', but was rendered with date ' + date.text().trim()); + } + + if (from && from.text().trim() === mail.header.from) { + result.pass &= true; + notMessages.push('not to be rendered with from ' + mail.header.from); + } else { + result.pass |= false; + messages.push('to be rendered with from ' + mail.header.from + ', but was rendered with from ' + from.text().trim()); + } + + if (result.pass) { + result.message = 'Expected mail ' + mail.ident + ' ' + notMessages.join(', '); + } else { + result.message = 'Expected mail ' + mail.ident + ' ' + messages.join(', '); + } + + return result; + } + }; + } + + function toBeRenderedSelectedInMatcher () { + return { + compare: function (mail, node) { + var result = {}, toBeRendered, mailNode; + + toBeRendered = toBeRenderedInMatcher().compare(mail, node); + + mailNode = node.find('#mail-' + mail.ident); + result.pass = toBeRendered.pass && mailNode.hasClass('selected'); + + if (result.pass) { + result.message = toBeRendered.message + '\nExpected mail ' + mail.ident + ' to not be selected in ' + mailNode.html(); + } else { + result.message = toBeRendered.message + '\nExpected mail ' + mail.ident + ' to be selected in ' + mailNode.html(); + } + + return result; + } + }; + } + + return { + toBeRenderedIn: toBeRenderedInMatcher, + toBeRenderedSelectedIn: toBeRenderedSelectedInMatcher + }; +}); + |