Files
side-by-side/source/documents/tests/services/transformer.js.coffee
T
2014-10-12 17:27:25 +02:00

145 lines
3.1 KiB
CoffeeScript

transformer = {}
english = {}
czech = {}
polish = {}
expected = {}
module "transformer", {
setup: () ->
transformer = injector.get "transformer"
english = {
meta: {
Title: "Ten Commandments"
Author: "God knows"
}
content: [{
section: "1"
text: "Thou shalt have no other gods before me"
}, {
section: "2"
text: "Thou shalt not take the name of the Lord thy God in vain"
}, {
section: "3"
text: "Remember the sabbath day, to keep it holy"
}]
}
czech = {
meta: {
Title: "Desatero"
Author: "Ví bůh"
}
content: [{
section: "1"
text: "V jednoho Boha věřiti budeš."
}, {
section: "2"
text: "Nevezmeš jména Božího nadarmo."
}, {
section: "3"
text: "Pomni, abys den sváteční světil."
}]
}
polish = {
meta: {
Title: "Dekalog"
Author: "Bóg wie"
}
content: [{
section: "1"
text: "Nie będziesz miał bogów cudzych przede mną."
}, {
section: "2"
text: "Nie będziesz wzywał imienia Boga twego nadaremno."
}, {
section: "3"
text: "Pamiętaj, abyś dzień święty święcił."
}]
}
expected = {
meta: [{
Title: "Ten Commandments"
Author: "God knows"
}, {
Title: "Desatero"
Author: "Ví bůh"
}, {
Title: "Dekalog"
Author: "Bóg wie"
}]
verses: [[{
section: "1"
text: "Thou shalt have no other gods before me"
}, {
section: "1"
text: "V jednoho Boha věřiti budeš."
}, {
section: "1"
text: "Nie będziesz miał bogów cudzych przede mną."
}], [{
section: "2"
text: "Thou shalt not take the name of the Lord thy God in vain"
}, {
section: "2"
text: "Nevezmeš jména Božího nadarmo."
}, {
section: "2"
text: "Nie będziesz wzywał imienia Boga twego nadaremno."
}], [{
section: "3"
text: "Remember the sabbath day, to keep it holy"
}, {
section: "3"
text: "Pomni, abys den sváteční světil."
}, {
section: "3"
text: "Pamiętaj, abyś dzień święty święcił."
}]]
}
}
test "transforms", () ->
deepEqual transformer([english, czech, polish]), expected
test "transforms with 2 items", () ->
expected.meta = expected.meta.slice(0, 2)
expected.verses = _.map(expected.verses, (translations) ->
return translations.slice(0, 2)
)
deepEqual transformer([english, czech]), expected
test "throws error on no param", () ->
throws () ->
transformer()
, /no poems found/i
test "throws error on empty array", () ->
throws () ->
transformer []
, /no poems found/i
test "throws error on poem being too short", () ->
czech.content.pop()
throws () ->
transformer [english, czech, polish]
, /missing.*nevezmeš jména/i
test "throws error on poem being too long", () ->
czech.content.pop()
polish.content.pop()
throws () ->
transformer [english, czech, polish]
, /superfluous.*sabbath/i
test "throws error on poems too short plus different lengths", () ->
czech.content.pop()
polish.content.pop()
polish.content.pop()
throws () ->
transformer [english, czech, polish]
, /missing.*bogów cudzych.*nevezmeš/i