codecombat/app/views/editor/verifier/VerifierView.coffee

42 lines
2.3 KiB
CoffeeScript
Raw Normal View History

RootView = require 'views/core/RootView'
template = require 'templates/editor/verifier/verifier-view'
VerifierTest = require './VerifierTest'
module.exports = class VerifierView extends RootView
className: 'style-flat'
template: template
id: 'verifier-view'
constructor: (options, @levelID) ->
super options
# TODO: rework to handle N at a time instead of all at once
# TODO: sort tests by unexpected result first
@passed = 0
@failed = 0
testLevels = ["dungeons-of-kithgard", "gems-in-the-deep", "shadow-guard", "kounter-kithwise", "crawlways-of-kithgard", "enemy-mine", "illusory-interruption", "forgetful-gemsmith", "signs-and-portents", "favorable-odds", "true-names", "the-prisoner", "banefire", "the-raised-sword", "kithgard-librarian", "fire-dancing", "loop-da-loop", "haunted-kithmaze", "riddling-kithmaze", "descending-further", "the-second-kithmaze", "dread-door", "cupboards-of-kithgard", "hack-and-dash", "known-enemy", "master-of-names", "lowly-kithmen", "closing-the-distance", "tactical-strike", "the-skeleton", "a-mayhem-of-munchkins", "the-final-kithmaze", "the-gauntlet", "radiant-aura", "kithgard-gates", "destroying-angel", "deadly-dungeon-rescue", "kithgard-brawl", "cavern-survival", "breakout", "attack-wisely", "kithgard-mastery", "kithgard-apprentice", "robot-ragnarok", "defense-of-plainswood", "peasant-protection", "forest-fire-dancing"]
#testLevels = testLevels.slice 0, 15
@levelIDs = if @levelID then [@levelID] else testLevels
@testCount = @levelIDs.length * 2 #One per langauge
#supermodel = if @levelID then @supermodel else undefined
@tests = []
async.eachSeries @levelIDs, (levelID, lnext) =>
async.eachSeries ['python','javascript'], (lang, next) =>
test = new VerifierTest levelID, (e) =>
@update(e)
if e.state in ['complete', 'error']
if test.isSucessful()
++@passed
else
++@failed
next()
, @supermodel, lang
@tests.unshift test
, -> lnext()
, () => @render()
update: (event) =>
# TODO: show unworkable tests instead of hiding them
# TODO: destroy them Tests after or something
console.log 'got event', event, 'on some test'
@tests = _.filter @tests, (test) -> test.state isnt 'error'
@render()