How to use emit method in ng-mocks

Best JavaScript code snippet using ng-mocks

gendoc.es

Source:gendoc.es Github

copy

Full Screen

...56 throw usage()57 }58 return files59 }60 function emit(...args) {61 out.write(args.toString() + "\n")62 }63 function emitHeader() {64 if (bare) {65 return66 }67 emit('<!DOCTYPE html>')68 emit('<html lang="en">')69 emit('<head>')70 emit('<meta charset="utf-8"/>')71 emit('<title>' + title + ' Documentation</title>')72 emit('<link href="api.css" rel="stylesheet" type="text/css" />')73 emit('</head>\n<body>\n')74 emit(' <div class="contents">')75 }76 function emitFooter() {77 if (bare) {78 return79 }80 emit('<div class="footnote">Generated on ' + new Date + '<br/>')81 emit(' Copyright &copy; <a href="http://embedthis.com">Embedthis Software</a> ' + 82 new Date().year + '.')83 emit('</div></div></body></html>')84 }85 /*86 Emit top level navigation87 */88 function emitNavigation() {89 if (bare) {90 return91 }92 emit('<div>')93 result = []94 for each (kind in ["Extensions", "Typedefs", "Functions", "Defines"]) {95 result.append('<a href="#' + kind + '">' + kind + '</a>')96 }97 emit(result.join(" | "))98 emit('</div>')99 }100 /*101 Parse all symbol references and build an index of symbols102 */103 function parseReferences(xml: XML) {104 for each (def in xml) {105 if (def.@kind == "group" || def.@kind == "struct") {106 symbols[def.compoundname] = def.@id107 for each (sect in def.detaileddescription.para.simplesect) {108 if (sect.@kind != "see") {109 continue110 }111 seeAlso[def.compoundname] = sect.para112 }113 }114 }115 var sections: XML = xml.compounddef.sectiondef116 for each (section in sections) {117 var members: XML = section.memberdef118 for each (m in members) {119 if (m.name != "" && m.@id != "") {120 symbols[m.name] = m.@id121 }122 }123 }124 }125 /*126 Emit a reference127 */128 function ref(name: String): String {129 /* Split the core type name off from "*" suffixes */130 parts = name.split(" ")131 typeSpec = parts.slice(0, 1)132 rest = parts.slice(1)133 sym = typeSpec.toString().trim("*")134 let value = symbols[sym]135 if (value) {136 let result137 if (value.toString().contains("#")) {138 result = '<a href="' + symbols[sym] + '" class="ref">' + typeSpec + '</a>'139 } else {140 result = '<a href="#' + symbols[sym] + '" class="ref">' + typeSpec + '</a>'141 }142 if (rest && rest != "") {143 result += " " + rest144 }145 return result146 }147 if (!reserved[sym]) {148 App.log.error("Cannot find link symbol \"" + sym + "\"")149 }150 return name151 }152 function strip(str: String): String {153 if (str == "") {154 return str155 }156 str = str.replace(/<para>|<emphasis>|<title>|<type>|<\/para>|<\/emphasis>|<\/title>|<\/type>/g, "")157 str = str.replace(/<ref refid="[^>]*>/g, '')158 str = str.replace(/<\/ref>/g, '')159 str = str.replace(/ kindref="[^"]*"/g, '')160 str = str.replace(/itemizedlist>/g, '')161 str = str.replace(/listitem>/g, '')162 str = str.replace(/<linebreak\/>/g, '')163 str = str.replace(/bold>/g, '')164 str = str.trim().trim(".").trim().trim(".")165 return str166 }167 /*168 Remove or map XML elements into HTML169 */170 function clean(str: String): String {171 if (str == "") {172 return str173 }174 str = str.replace(/<para>|<emphasis>|<title>|<type>|<\/para>|<\/emphasis>|<\/title>|<\/type>/g, "")175 str = str.replace(/<ref refid="([^"]*#[^"]*)"/g, '<a class="ref" AAA href="$1"')176 str = str.replace(/<ref refid="/g, '<a class="ref" href="#')177 str = str.replace(/<\/ref>/g, '</a>')178 str = str.replace(/ kindref="[^"]*"/g, "")179 str = str.replace(/itemizedlist>/g, 'ul>')180 str = str.replace(/listitem>/g, 'li>')181 str = str.replace(/<linebreak\/>/g, "<br/>")182 str = str.replace(/bold>/g, "b>")183 str = str.replace(/preformatted>/g, "pre>")184 str = str.replace(/<row>/g, "<tr>")185 str = str.replace(/<entry thead="no">/g, "<td>")186 str = str.replace(/<table rows=[^>]*>/g, "<table class='info'>")187 str = str.replace(/<\/entry>/g, "</td>")188 str = str.trim().trim(".").trim().trim(".")189 str = str.replace(/--/g, "&mdash;")190 return str191 }192 /*193 Clean the string of XML elements and append a "."194 */195 function cleanDot(str: String): String {196 s = clean(str)197 if (s == "") {198 return s199 }200 if (!s.endsWith(">")) {201 s = s + "."202 }203 return s204 }205 /*206 Intelligently transform a @return directive207 */208 function cleanReturns(str: String): String {209 str = cleanDot(str)210 str = str.replace(/^Return[s]* the/, "The")211 return str212 }213 /*214 Emit a file level overview215 */216 function emitOverview(xml: XML) {217 emit("<h1>" + title + "</h1>")218 for each (def in xml) {219 if (def.@kind != "file") {220 continue221 }222 name = def.compoundname223 if (!all && def.briefdescription == '' && def.detaileddescription == '') {224 return225 }226 emit('<a name="' + name + '"></a>')227 if (def.briefdescription != "") {228 emit('<p>' + cleanDot(def.briefdescription.para) + '</p>')229 }230 if (def.detaileddescription != "") {231 for each (node in def.detaileddescription.*) {232 str = node.toString()233 str = str.replace(/para>/g, "p>")234 str = str.replace(/title>/g, "h1>")235 str = str.replace(/<linebreak\/>/g, "<br/>")236 str = str.replace(/<sect[^>]*>|<\/sect[0-9]>/g, "")237 str = str.replace(/<simplesect[^>]*>|<\/simplesect>/g, "")238 emit(str)239 }240 }241 }242 }243 /*244 Emit an index of all services245 */246 function emitServiceIndex(def: XML) {247 if (all || def.briefdescription != "" || def.detaileddescription != '') {248 emit('<tr class="apiDef">')249 emit('<td class="apiName"><a href="#' + def.@id + '" class="nameRef">' + def.compoundname + '</a></td>')250 emit('<td class="apiBrief">' + cleanDot(def.briefdescription.para) + '</td></tr>')251 }252 symbols[def.compoundname] = def.@id253 }254 /*255 Generate an index of all functions256 */257 function genFunctionIndex(def: XML, section: XML, index: Object) {258 var members: XML = section.memberdef259 for each (m in members) {260 if (m.@kind == 'function') {261 if (!all && m.briefdescription == '' && m.detaileddescription == '') {262 continue263 }264 if (def.@kind == "file" && m.@id.toString().startsWith("group__")) {265 continue266 }267 let definition = m.definition.toString().split(" ")268 typedef = definition.slice(0, -1).join(" ")269 name = definition.slice(-1)270 let str = '<tr class="apiDef"><td class="apiType">' + ref(typedef) + '</td><td>'271 str += '<a href="#' + m.@id + '" class="nameRef">' + name + '</a>'272 args = m.argsstring.toString().trim('(').split(",")273 if (args.length > 0) {274 result = []275 for (i in args) {276 arg = args[i].trim()277 result.append(ref(arg))278 }279 str += "(" + result.join(", ")280 }281 str += '</td></tr>'282 if (m.briefdescription != "") {283 str += '<tr class="apiBrief"><td>&nbsp;</td><td>' + cleanDot(m.briefdescription.para) + '</td></tr>'284 }285 index[name] = str286 }287 }288 }289 /*290 Emit an index of all #define directives291 */292 function emitDefineIndex(section: XML) {293 var members: XML = section.memberdef294 for each (m in members) {295 if (m.@kind == 'define') {296 if (!all && m.briefdescription == '' && m.detaileddescription == '') {297 continue298 }299 symbols[m.name] = m.@id300 emit('<tr class="apiDef">')301 emit('<td>#define</td><td><a href="#' + m.@id + '" class="nameRef">' + m.name + '</a>' + 302 '&nbsp;&nbsp;&nbsp;' + m.initializer + '</td>')303 emit('</tr>')304 if (m.briefdescription != "") {305 emit('<tr class="apiBrief"><td>&nbsp;</td><td>' + 306 cleanDot(m.briefdescription.para) + '</td></tr>')307 }308 }309 }310 }311 /*312 Emit an index of struct based typedefs313 */314 function emitTypeIndex(def: XML, index: Object) {315 var str316 if (all || def.briefdescription != "" || def.detaileddescription != '') {317 name = def.compoundname318 symbols[name] = def.@id319 str = '<tr class="apiDef">'320 str += '<td class="apiName">'321 str += '<a href="#' + symbols[name] + '" class="nameRef">' + name + '</a></td>'322 str += '<td class="apiBrief">' + cleanDot(def.briefdescription.para) + '</td></tr>'323 index[name] = str324 }325 }326 /*327 Emit an index of all simple (non-struct) typedefs328 */329 function emitStructTypeIndex(section: XML, index: Object) {330 var members: XML = section.memberdef331 var str332 for each (m in members) {333 if (m.@kind == 'typedef') {334 if (!all && m.briefdescription == '' && m.detaileddescription == '') {335 continue336 }337 symbols[m.name] = m.@id338 def = m.definition.toString()339 if (def.contains("(")) {340 /* Parse "typedef void(* MprLogHandler)(cchar *file, ... cchar *msg) */341 name = def.toString().replace(/typedef[^\(]*\([^\w]*([\w]+).*/, "$1")342 } else {343 def = def.toString().split(" ")344 typedef = def.slice(0, -1).join(" ")345 name = def.slice(-1)346 }347 str = '<tr class="apiDef">'348 str += '<td class="apiName">'349 str += '<a href="#' + m.@id + '" class="nameRef">' + name + '</a></td>'350 if (m.briefdescription != "") {351 str += '<td class="apiBrief">' + cleanDot(m.briefdescription.para) + '</td></tr>'352 }353 index[name] = str354 }355 }356 }357 /*358 Get master group references for a given group name359 */360 function getGroupReferences(group: String): Array {361 references = []362 items = seeAlso[group]363 if (items != undefined) {364 for each (see in items.ref.*) {365 references.append(see)366 }367 }368 return references369 }370 /*371 Emit a See Also section. Handle groups/struct @references372 */373 function emitSeeAlso(name: String, node: XML) {374 if (node.para.toString().startsWith('@-')) {375 let name = node.para.toString().slice(2).trim()376 references = getGroupReferences(name)377 } else {378 references = []379 for each (see in node.para.ref.*) {380 references.append(see)381 }382 }383 emitSeeAlsoReferences(name, references)384 }385 function emitSeeAlsoReferences(name: String, references: Array) {386 emit(' <dl><dt>See Also:</dt><dd>')387 references.sort()388 trimmed = []389 for each (see in references) {390 if (see == name) {391 continue392 }393 trimmed.append(ref(see))394 }395 emit(' ' + trimmed.join(", ") + '</dd></dl>')396 }397 function emitSimpleSect(name: String, node: XML) {398 if (node.@kind == "see") {399 emitSeeAlso(name, node)400 } else if (node.@kind == "return") {401 emit(' <dl><dt>Returns:</dt><dd>' + cleanReturns(node.para).toPascal() + '</dd></dl>')402 } else if (node.@kind == "remark") {403 emit(' <dl><dt>Remarks:</dt><dd>' + cleanDot(node.para).toPascal() + '</dd></dl>')404 } else {405 emit(' <dl><dt>' + clean(node.title) + '</dt><dd>' + cleanDot(node.para).toPascal() + '</dd></dl>')406 }407 }408 /*409 Emit function args410 */411 function emitArgs(args: XML) {412 result = []413 for each (p in args.param) {414 if (p.type == "...") {415 result.append("...")416 } else {417 s = ref(strip(p.type)) + " " + p.declname418 s = s.replace(/ ([\*]*) /, " $1")419 result.append(s)420 }421 }422 emit("(" + result.join(", ") + ")")423 }424 /*425 Used for function and simple typedef details426 */427 function emitDetail(def: XML, section: XML) {428 var members: XML = section.memberdef429 if (section.@kind == "func") {430 kind = "function"431 } else if (section.@kind == "typedef") {432 kind = "typedef"433 }434 for each (m in members) {435 if (m.@kind == kind) {436 if (!all && m.briefdescription == '' && m.detaileddescription == '') {437 continue438 }439 if (def.@kind == "file" && m.@id.toString().startsWith("group__")) {440 continue441 }442 emit('<a name="' + m.@id + '"></a>')443 emit('<div class="api">')444 emit(' <div class="prototype">')445 if (kind == "function") {446 emit(' ' + ref(strip(m.type)))447 str = m.definition.toString().split(" ").slice(1).join(" ")448 emit(' ' + clean(str))449 emitArgs(m)450 } else if (kind == "typedef") {451 emit(' ' + cleanDot(m.definition))452 }453 emit(' </div>')454 emit(' <div class="apiDetail">')455 if (m.briefdescription != "") {456 emit('<p>' + cleanDot(m.briefdescription.para) + '</p>')457 }458 seen = false459 for each (n in m.detaileddescription.para.*) {460 if (n.name() == "simplesect") {461 if (n.@kind == "see") {462 seen = true463 }464 emitSimpleSect(m.name, n)465 } else if (n.name() == "parameterlist") {466 /*467 Parameters468 */469 emit(' <dl><dt>Parameters:</dt><dd>')470 emit(' <table class="parameters" title="Parameters">')471 for each (p in n.parameteritem) {472 emit(' <tr><td class="param">' + p.parameternamelist.parametername + '</td><td>' + 473 cleanDot(p.parameterdescription.para) + '</td>')474 }475 emit(' </table></dd></dl>')476 } else {477 emit(clean(n))478 }479 }480 if (!seen && def.@kind == "group") {481 references = getGroupReferences(def.compoundname)482 emitSeeAlsoReferences(m.name, references)483 }484 emit(' </div>')485 emit('</div>')486 }487 }488 }489 function emitFields(name: String, def: XML) {490 let doneHeader = false491 for each (m in def.sectiondef.memberdef) {492 if (!doneHeader) {493 emit(' <dl><dt>Fields:</dt><dd>')494 emit(' <table class="parameters" title="Parameters">')495 doneHeader = true496 }497 if (m.@kind == "variable") {498 field = m.definition.toString().replace(/.*::/, "")499 if (m.briefdescription != "" || m.detaileddescription != "") {500 emit(' <tr><td class="param">' + clean(m.type) + '</td><td><td>' + field + '</td><td>')501 if (m.briefdescription != "") {502 s = cleanDot(m.briefdescription.para)503 if (m.detaileddescription != "") {504 s += " "505 }506 emit(s)507 }508 if (m.detaileddescription != "") {509 s = cleanDot(m.detaileddescription.para)510 emit(s)511 }512 emit('</td>')513 }514 }515 }516 if (doneHeader) {517 emit(' </table></dd></dl>')518 }519 }520 function emitStructDetail(def: XML, fields: XML?) {521 let name = def.compoundname522 if (!all && def.briefdescription == '' && def.detaileddescription == '') {523 return524 }525 emit('<a name="' + symbols[name] + '"></a>')526 emit('<div class="api">')527 emit(' <div class="prototype">' + clean(name) + '</div>')528 emit(' <div class="apiDetail">')529 if (def.briefdescription != "") {530 emit('<p>' + cleanDot(def.briefdescription.para) + '</p>')531 }532 let doneFields = false533 if (def.detaileddescription != "") {534 for each (n in def.detaileddescription.para.*) {535 if (n.name() == "simplesect") {536 emitSimpleSect(name, n)537 if (!doneFields && fields == null) {538 emitFields(name, def)539 doneFields = true540 }541 }542 }543 }544 if (fields) {545 emitFields(name, fields)546 } else if (!doneFields) {547 emitFields(name, def)548 }549 emit(' </div>')550 emit('</div>')551 }552 function emitIndicies(xml: XML) {553 var sections: XML554 /*555 Emit the group indicies556 */557 emit('<a name="Extensions"></a><h1>Extensions</h1>')558 emit(' <table class="apiIndex" title="Extensions">')559 for each (def in xml) {560 if (def.@kind == "group") {561 emitServiceIndex(def)562 }563 }564 emit('</table>')565 /*566 Emit the navigation indicies567 */568 emit('<a name="Functions"></a><h1>Functions</h1>')569 emit(' <table class="apiIndex" title="Functions">')570 let functionIndex = {}571 for each (def in xml) {572 sections = def.sectiondef573 for each (section in sections) {574 if (section.@kind == "func") {575 genFunctionIndex(def, section, functionIndex)576 }577 }578 }579 Object.sortProperties(functionIndex)580 for each (i in functionIndex) {581 emit(i)582 }583 emit('</table>')584 emit('<a name="Typedefs"></a><h1>Typedefs</h1>')585 emit('<table class="apiIndex" title="typedefs">')586 let typeIndex = {}587 for each (def in xml) {588 if (def.@kind == "struct") {589 emitTypeIndex(def, typeIndex)590 } else {591 sections = def.sectiondef592 for each (section in sections) {593 if (section.@kind == "typedef") {594 emitStructTypeIndex(section, typeIndex)595 }596 }597 }598 }599 Object.sortProperties(typeIndex)600 for each (i in typeIndex) {601 emit(i)602 }603 emit('</table>')604 emit('<a name="Defines"></a><h1>Defines</h1>')605 emit('<table class="apiIndex" title="Defines">')606 for each (def in xml) {607 sections = def.sectiondef608 for each (section in sections) {609 if (section.@kind == "define") {610 emitDefineIndex(section)611 }612 }613 }614 emit(" </table>")615 }616 function emitDetails(xml: XML) {617 /*618 Emit groups619 */620 for each (def in xml) {621 if (def.@kind != "group") {622 continue623 }624 emit('<h1>' + def.compoundname + '</h1>')625 let foundStruct = false626 for each (d in xml) {627 if (d.@kind == "struct" && d.compoundname.toString() == def.compoundname.toString()) {628 foundStruct = true629 emitStructDetail(def, d)630 }631 }632 if (!foundStruct) {633 for each (d in xml) {634 if (d.compoundname.toString() == def.compoundname.toString()) {635 emitStructDetail(def, d)636 }637 }638 }639 let sections: XML = def.sectiondef640 for each (section in sections) {641 if (section.@kind == "func") {642 emitDetail(def, section)643 }644 }645 }646 /*647 Emit functions648 */649 emit('<h2>Functions</h2>')650 for each (def in xml) {651 if (def.@kind == "group") {652 continue653 }654 let sections: XML = def.sectiondef655 for each (section in sections) {656 if (section.@kind == "func") {657 emitDetail(def, section)658 }659 }660 }661 emit('<h2>Typedefs</h2>')662 for each (def in xml) {663 if (def.@kind == "struct") {664 emitStructDetail(def, null)665 } else {666 let sections: XML = def.sectiondef667 for each (section in sections) {668 if (section.@kind == "typedef") {669 emitDetail(def, section)670 }671 }672 }673 }674 }675 function parse(xml: XML) {...

Full Screen

Full Screen

ObjectModelSpec.js

Source:ObjectModelSpec.js Github

copy

Full Screen

...38 children: []39 });40 });41 it('should add spec and create describe blocks on SpecBegin event', function() {42 runner.emit('SpecBegin', buildSpec(1, 'test spec', ['describe 2', 'describe 1']));43 expect(model.value.children['describe 1']).toBeDefined();44 expect(model.value.children['describe 1'].children['describe 2']).toBeDefined();45 expect(model.value.children['describe 1'].children['describe 2'].specs['test spec']).toBeDefined();46 });47 it('should set fullDefinitionName on SpecBegin event', function() {48 runner.emit('SpecBegin', buildSpec(1, 'fake spec', ['describe 2']));49 var spec = model.getSpec(1);50 expect(spec.fullDefinitionName).toBeDefined();51 expect(spec.fullDefinitionName).toEqual('describe 2');52 });53 it('should set fullDefinitionName on SpecBegin event (join more names by space)', function() {54 runner.emit('SpecBegin', buildSpec(1, 'fake spec', ['describe 2', 'describe 1']));55 var spec = model.getSpec(1);56 expect(spec.fullDefinitionName).toEqual('describe 1 describe 2');57 });58 it('should add step to spec on StepBegin', function() {59 runner.emit('SpecBegin', spec);60 runner.emit('StepBegin', spec, step);61 runner.emit('StepEnd', spec, step);62 runner.emit('SpecEnd', spec);63 expect(model.value.children['describe 1'].specs['test spec'].steps.length).toEqual(1);64 });65 it('should update spec timer duration on SpecEnd event', function() {66 runner.emit('SpecBegin', spec);67 runner.emit('SpecEnd', spec);68 expect(model.value.children['describe 1'].specs['test spec'].duration).toBeDefined();69 });70 it('should update step timer duration on StepEnd event', function() {71 runner.emit('SpecBegin', spec);72 runner.emit('StepBegin', spec, step);73 runner.emit('StepEnd', spec, step);74 runner.emit('SpecEnd', spec);75 expect(model.value.children['describe 1'].specs['test spec'].steps[0].duration).toBeDefined();76 });77 it('should set spec status on SpecEnd to success if no status set', function() {78 runner.emit('SpecBegin', spec);79 runner.emit('SpecEnd', spec);80 expect(model.value.children['describe 1'].specs['test spec'].status).toEqual('success');81 });82 it('should set status to error after SpecError', function() {83 runner.emit('SpecBegin', spec);84 runner.emit('SpecError', spec, 'error');85 expect(model.value.children['describe 1'].specs['test spec'].status).toEqual('error');86 });87 it('should set spec status to failure if step fails', function() {88 runner.emit('SpecBegin', spec);89 runner.emit('StepBegin', spec, step);90 runner.emit('StepEnd', spec, step);91 runner.emit('StepBegin', spec, step);92 runner.emit('StepFailure', spec, step, 'error');93 runner.emit('StepEnd', spec, step);94 runner.emit('StepBegin', spec, step);95 runner.emit('StepEnd', spec, step);96 runner.emit('SpecEnd', spec);97 expect(model.value.children['describe 1'].specs['test spec'].status).toEqual('failure');98 });99 it('should set spec status to error if step errors', function() {100 runner.emit('SpecBegin', spec);101 runner.emit('StepBegin', spec, step);102 runner.emit('StepError', spec, step, 'error');103 runner.emit('StepEnd', spec, step);104 runner.emit('StepBegin', spec, step);105 runner.emit('StepFailure', spec, step, 'error');106 runner.emit('StepEnd', spec, step);107 runner.emit('SpecEnd', spec);108 expect(model.value.children['describe 1'].specs['test spec'].status).toEqual('error');109 });110 describe('events', function() {111 var Spec = angular.scenario.ObjectModel.Spec,112 Step = angular.scenario.ObjectModel.Step,113 callback;114 beforeEach(function() {115 callback = jasmine.createSpy('listener');116 });117 it('should provide method for registering a listener', function() {118 expect(model.on).toBeDefined();119 expect(model.on instanceof Function).toBe(true);120 });121 it('should forward SpecBegin event', function() {122 model.on('SpecBegin', callback);123 runner.emit('SpecBegin', spec);124 expect(callback).toHaveBeenCalled();125 });126 it('should forward SpecBegin event with ObjectModel.Spec as a param', function() {127 model.on('SpecBegin', callback);128 runner.emit('SpecBegin', spec);129 expect(callback.mostRecentCall.args[0] instanceof Spec).toBe(true);130 expect(callback.mostRecentCall.args[0].name).toEqual(spec.name);131 });132 it('should forward SpecError event', function() {133 model.on('SpecError', callback);134 runner.emit('SpecBegin', spec);135 runner.emit('SpecError', spec, {});136 expect(callback).toHaveBeenCalled();137 });138 it('should forward SpecError event with ObjectModel.Spec and error as a params', function() {139 var error = {};140 model.on('SpecError', callback);141 runner.emit('SpecBegin', spec);142 runner.emit('SpecError', spec, error);143 var param = callback.mostRecentCall.args[0];144 expect(param instanceof Spec).toBe(true);145 expect(param.name).toEqual(spec.name);146 expect(param.status).toEqual('error');147 expect(param.error).toBe(error);148 });149 it('should forward SpecEnd event', function() {150 model.on('SpecEnd', callback);151 runner.emit('SpecBegin', spec);152 runner.emit('SpecEnd', spec);153 expect(callback).toHaveBeenCalled();154 });155 it('should forward SpecEnd event with ObjectModel.Spec as a param', function() {156 model.on('SpecEnd', callback);157 runner.emit('SpecBegin', spec);158 runner.emit('SpecEnd', spec);159 expect(callback.mostRecentCall.args[0] instanceof Spec).toBe(true);160 expect(callback.mostRecentCall.args[0].name).toEqual(spec.name);161 });162 it('should forward StepBegin event', function() {163 model.on('StepBegin', callback);164 runner.emit('SpecBegin', spec);165 runner.emit('StepBegin', spec, step);166 expect(callback).toHaveBeenCalled();167 });168 it('should forward StepBegin event with Spec and Step as params', function() {169 model.on('StepBegin', callback);170 runner.emit('SpecBegin', spec);171 runner.emit('StepBegin', spec, step);172 var params = callback.mostRecentCall.args;173 expect(params[0] instanceof Spec).toBe(true);174 expect(params[0].name).toEqual(spec.name);175 expect(params[1] instanceof Step).toBe(true);176 });177 it('should forward StepError event', function() {178 model.on('StepError', callback);179 runner.emit('SpecBegin', spec);180 runner.emit('StepBegin', spec, step);181 runner.emit('StepError', spec, step, {});182 expect(callback).toHaveBeenCalled();183 });184 it('should forward StepError event with Spec, Step and error as params', function() {185 var error = {};186 model.on('StepError', callback);187 runner.emit('SpecBegin', spec);188 runner.emit('StepBegin', spec, step);189 runner.emit('StepError', spec, step, error);190 var params = callback.mostRecentCall.args;191 expect(params[0] instanceof Spec).toBe(true);192 expect(params[0].name).toEqual(spec.name);193 expect(params[1] instanceof Step).toBe(true);194 expect(params[1].status).toEqual('error');195 expect(params[2]).toBe(error);196 });197 it('should forward StepFailure event', function() {198 model.on('StepFailure', callback);199 runner.emit('SpecBegin', spec);200 runner.emit('StepBegin', spec, step);201 runner.emit('StepFailure', spec, step, {});202 expect(callback).toHaveBeenCalled();203 });204 it('should forward StepFailure event with Spec, Step and error as params', function() {205 var error = {};206 model.on('StepFailure', callback);207 runner.emit('SpecBegin', spec);208 runner.emit('StepBegin', spec, step);209 runner.emit('StepFailure', spec, step, error);210 var params = callback.mostRecentCall.args;211 expect(params[0] instanceof Spec).toBe(true);212 expect(params[0].name).toEqual(spec.name);213 expect(params[1] instanceof Step).toBe(true);214 expect(params[1].status).toEqual('failure');215 expect(params[2]).toBe(error);216 });217 it('should forward StepEnd event', function() {218 model.on('StepEnd', callback);219 runner.emit('SpecBegin', spec);220 runner.emit('StepBegin', spec, step);221 runner.emit('StepEnd', spec, step);222 expect(callback).toHaveBeenCalled();223 });224 it('should forward StepEnd event with Spec and Step as params', function() {225 model.on('StepEnd', callback);226 runner.emit('SpecBegin', spec);227 runner.emit('StepBegin', spec, step);228 runner.emit('StepEnd', spec, step);229 var params = callback.mostRecentCall.args;230 expect(params[0] instanceof Spec).toBe(true);231 expect(params[0].name).toEqual(spec.name);232 expect(params[1] instanceof Step).toBe(true);233 });234 it('should forward RunnerEnd event', function() {235 model.on('RunnerEnd', callback);236 runner.emit('RunnerEnd');237 expect(callback).toHaveBeenCalled();238 });239 it('should set error of first failure', function() {240 var error = 'first-error',241 step2 = buildStep();242 model.on('SpecEnd', function(spec) {243 expect(spec.error).toBeDefined();244 expect(spec.error).toBe(error);245 });246 runner.emit('SpecBegin', spec);247 runner.emit('StepBegin', spec, step);248 runner.emit('StepFailure', spec, step, error);249 runner.emit('StepBegin', spec, step2);250 runner.emit('StepFailure', spec, step2, 'second-error');251 runner.emit('SpecEnd', spec);252 });253 it('should set line number of first failure', function() {254 var step = buildStep('fake', 'first-line'),255 step2 = buildStep('fake2', 'second-line');256 model.on('SpecEnd', function(spec) {257 expect(spec.line).toBeDefined();258 expect(spec.line).toBe('first-line');259 });260 runner.emit('SpecBegin', spec);261 runner.emit('StepBegin', spec, step);262 runner.emit('StepFailure', spec, step, null);263 runner.emit('StepBegin', spec, step2);264 runner.emit('StepFailure', spec, step2, null);265 runner.emit('SpecEnd', spec);266 });267 });...

Full Screen

Full Screen

app.js

Source:app.js Github

copy

Full Screen

...23 ID[username]=id;24 socket.roomid=roomid;25 room[username]=roomid;26 socket.join(roomid);27 socket.emit('notify','You have joined chatroom ' +roomid);28 socket.broadcast.to(socket.roomid).emit('notify',socket.username+' have connected!');29 var local={};30 for(people in Userlist){31 if(room[people]==socket.roomid) local[people]=people;32 }33 io.to(socket.roomid).emit('update',local);34 io.emit('online-update',Userlist);35 io.emit('select',Userlist,socket.username);36 })37 socket.on('sendmes',function(data){38 io.to(socket.roomid).emit('post',socket.username," "+data);39 })40 //disconnect-api41 socket.on('leave-room',function(roomid){42 socket.leave(socket.roomid);43 socket.emit('disconnect');44 socket.roomid=roomid;45 room[socket.username]=socket.roomid;46 Userlist[socket.username]=socket.username;47 socket.join(roomid);48 socket.emit('notify','You have joined chatroom ' +roomid);49 socket.broadcast.to(socket.roomid).emit('notify',socket.username+' have connected!');50 var local={};51 for(people in Userlist){52 if(room[people]==socket.roomid) local[people]=people;53 }54 io.to(socket.roomid).emit('update',local);55 io.emit('online-update',Userlist);56 })57 socket.on('disconnect',function(){58 delete Userlist[socket.username];59 delete room[socket.username];60 io.to(socket.roomid).emit('leave',socket.username+' has left');61 var local={};62 for(people in Userlist){63 if(room[people]==socket.roomid) local[people]=people;64 }65 io.to(socket.roomid).emit('update',local);66 io.emit('online-update',Userlist);67 })68 //private-message-api69 socket.on('private',function(data,id){70 var receive='To '+id;71 var sender ='From '+socket.username;72 socket.emit('post-private',receive,data);73 io.to(ID[id]).emit('post-private',sender,data);74 })75 //add chat member76 socket.on('addchatmember',function(invited,roomname,caller){77 socket.to(ID[invited]).emit('invite',roomname,caller);78 })79 socket.on('refuse',function(caller,refuse_name){80 socket.to(ID[caller]).emit('refused',refuse_name);81 })82 //videocall-api83 socket.on('peer-id',function(data){84 socket.peerid=data;85 })86 socket.on('change-type-private',function(des){87 socket.to(ID[des]).emit('change-type-1');88 })89 socket.on('request',function(calling,stream){90 socket.to(ID[calling]).emit('response',socket.username);91 })92 socket.on('accept',function(data,name){93 socket.to(ID[name]).emit('ok',data);94 })95 socket.on('busy',function(name){96 socket.to(ID[name]).emit('alr-busy');97 })98 socket.on('deny',function(name){99 socket.to(ID[name]).emit('not-ok');100 })101 //change-name-api102 socket.on('change-name',function(newname){103 for(name in Userlist){104 if(name==newname){105 socket.emit('name-invalid');106 return;107 }108 }109 var oldname=socket.username;110 delete Userlist[oldname];111 Userlist[newname]=newname;112 ID[newname]=ID[oldname];113 delete ID[oldname];114 room[newname]=room[oldname];115 delete room[oldname];116 socket.username=newname;117 socket.join(room[newname]);118 socket.emit('notify','You have joined chatroom ' +socket.roomid);119 socket.broadcast.to(socket.roomid).emit('notify',socket.username+' have connected!');120 var local={};121 for(people in Userlist){122 if(room[people]==socket.roomid) local[people]=people;123 }124 io.to(socket.roomid).emit('update',local);125 io.emit('online-update',Userlist);126 io.emit('select',Userlist);127 })128 //a person is typing129 socket.on('typing',function(data,name){130 socket.broadcast.to(socket.roomid).emit('noti-type',data,name);131 })132 socket.on('stop-typing',function(name){133 socket.broadcast.to(socket.roomid).emit('unnoti-type',name);134 })135 //group-video-call-api136 socket.on('group-request',function(list,name){137 socket.to(ID[name]).emit('group-response',list,socket.username);138 })139 socket.on('list-update',function(list,host,name){140 socket.to(ID[host]).emit('host-update',list,name);141 })142 socket.on('member-update',function(memberlist,peerlist){143 for(var index=0;index<memberlist.length;index++){144 socket.to(ID[memberlist[index]]).emit('mem-update',peerlist,memberlist);145 }146 })147 socket.on('group-busy',function(name){148 socket.to(ID[name]).emit('group-alr-busy');149 })150 socket.on('endcall',function(member,id){151 for(var index=0;index<member.length;index++){152 socket.to(ID[member[index]]).emit('closed',member,id);153 }154 })155 socket.on('change-type-group',function(des){156 socket.to(ID[des]).emit('change-type-2');157 })158 //img share159 socket.on('upload',function(data,sender){160 var guess = data.base64.match(/^data:image\/(png|jpeg);base64,/)[1];161 var ext = "";162 switch(guess) {163 case "png" : ext = ".png"; break;164 case "jpeg" : ext = ".jpg"; break;165 default : ext = ".bin"; break;166 }167 var savedFilename = "/upload/"+randomString()+ext;168 fs.writeFile(__dirname+"/public"+savedFilename, getBase64Image(data.base64), 'base64', function(err) {169 if (err !== null)170 console.log(err);171 else172 io.to(socket.roomid).emit('img-share', {path: savedFilename,},sender);173 });174 175 })176})177http.listen(process.env.PORT||3000,function(){178 console.log('Sever is running on port '+3000);179})180function getBase64Image(imgData) {181 return imgData.replace(/^data:image\/(png|jpeg|jpg);base64,/, "");182}183function randomString(){184 return num=Math.floor(Math.random() * 100000).toString();185}186function cleanUpload(){...

Full Screen

Full Screen

events.js

Source:events.js Github

copy

Full Screen

...24 $element.off(event, childSelector);25 };26 // Close the channel since the element doesn't exist.27 if (!$element.length) {28 emit(END);29 return unsubscribe;30 }31 // Setup the subscription.32 $element.onFirst(event, childSelector, (event) => {33 handler(emit, $element, event);34 });35 // Emit the initial value.36 handler(emit, $element);37 return unsubscribe;38 }, buffers.fixed(1));39}40/**41 * Create a channel that will listen for `change` events on selectbox.42 *43 * @param {String} selector44 * @return {Object}45 */46export function createSelectboxChannel(selector) {47 return createChannel(selector, 'change', function(emit, $element) {48 emit({49 value: $element.val(),50 option: $element.find(':selected').first().get(0),51 });52 });53}54/**55 * Create a channel that will listen for `change` events on radio/checkbox inputs.56 *57 * @param {String} selector58 * @return {Object}59 */60export function createCheckableChannel(selector) {61 return createChannel(selector, 'change', (emit, $element) => {62 const elements = $element.find('input:checked').get();63 const values = elements.map(element => element.value);64 emit({65 values,66 elements,67 });68 }, 'input');69}70/**71 * Create a channel that will listen for `change` events on text fields.72 *73 * @param {String} selector74 * @return {Object}75 */76export function createTextChangeChannel(selector) {77 return createChannel(selector, 'change', (emit, $element) => {78 const value = $element.val();79 emit({80 value,81 });82 });83}84/**85 * Create a channel that will listen for `scroll` events.86 *87 * @param {String} selector88 * @return {Object}89 */90export function createScrollChannel(selector) {91 return createChannel(selector, 'scroll', (emit, $element) => {92 emit({93 value: $element.scrollTop()94 });95 });96}97/**98 * Create a channel that will listen for `submit` events.99 *100 * @param {String} selector101 * @param {String} [childSelector]102 * @return {Object}103 */104export function createSubmitChannel(selector, childSelector = null) {105 return createChannel(selector, 'submit', (emit, $element, event) => {106 if (event) {107 emit({108 event,109 });110 }111 }, childSelector);112}113/**114 * Create a channel that will listen for `click` events.115 *116 * @param {String} selector117 * @param {String} [childSelector]118 * @return {Object}119 */120export function createClickChannel(selector, childSelector = null) {121 return createChannel(selector, 'click', (emit, $element, event) => {122 if (event) {123 emit({124 event,125 });126 }127 }, childSelector);128}129/**130 * Create a channel for interaction with the media browser of WordPress.131 *132 * @param {Object} settings133 * @return {Object}134 */135export function createMediaBrowserChannel(settings) {136 return eventChannel((emit) => {137 // Create a new instance of the media browser.138 const browser = window.wp.media(settings);139 let AttachmentLibrary = wp.media.view.Attachment.Library;140 window.wp.media.view.Attachment.Library = AttachmentLibrary.extend({141 render: function () {142 let {143 controller: { options: { selected } }144 } = this;145 selected = isArray(selected) ? selected : [ selected ];146 selected = selected.map(id => parseInt(id, 10));147 const {148 id149 } = this.model;150 if (selected && selected.indexOf(id) !== -1) {151 this.$el.addClass('carbon-selected');152 } else {153 this.$el.removeClass('carbon-selected');154 }155 return AttachmentLibrary.prototype.render.apply( this, arguments );156 },157 });158 // Emit the selection through the channel.159 const onSelect = () => {160 emit({161 selection: browser.state().get('selection').toJSON(),162 });163 };164 // Emit the closing modal through the channel.165 const onClose = () => {166 emit({167 closed: true168 });169 };170 // Cancel the subscription.171 const unsubscribe = () => {172 browser.off('select', onSelect);173 browser.off('close', onClose);174 browser.remove();175 };176 // Setup the subscription.177 browser.on('select', onSelect);178 browser.on('close', onClose);179 // Emit the instance of browser so it can be used by subscribers.180 emit({181 browser,182 });183 return unsubscribe;184 }, buffers.fixed(1));185}186/**187 * Create a channel that will intercept all occurences188 * of the specified AJAX action.189 *190 * @param {String} event191 * @param {String} action192 * @return {Object}193 */194export function createAjaxChannel(event, action) {195 return eventChannel((emit) => {196 // Emit the AJAX event through the channel.197 const handler = (event, xhr, settings, data) => {198 if (isString(settings.data) && settings.data.indexOf(action) > -1) {199 emit({200 event,201 xhr,202 settings,203 data,204 });205 }206 };207 // Cancel the subscription.208 const unsubscribe = () => {209 $(document).off(event, handler);210 };211 // Setup the subscription.212 $(document).on(event, handler);213 return unsubscribe;214 }, buffers.fixed(1));215}216/**217 * Create a channel that will intercept all `widget-added` & `widget-updated` events218 * from `Widgets` page.219 *220 * @return {Object}221 */222export function createWidgetsChannel() {223 return eventChannel((emit) => {224 // Emit the event through the channel.225 const handler = (event, widget) => {226 emit({227 event,228 widget,229 });230 };231 // Cancel the subscription.232 const unsubscribe = () => {233 $(document).off('widget-before-added widget-added widget-updated', handler);234 };235 // Setup the subscription.236 $(document).on('widget-before-added widget-added widget-updated', handler);237 return unsubscribe;238 }, buffers.fixed(1));...

Full Screen

Full Screen

socket.spec.js

Source:socket.spec.js Github

copy

Full Screen

...25 }));26 describe('#on', function () {27 it('should apply asynchronously', function () {28 socket.on('event', spy);29 mockIoSocket.emit('event');30 expect(spy).not.toHaveBeenCalled();31 $timeout.flush();32 expect(spy).toHaveBeenCalled();33 });34 });35 describe('#disconnect', function () {36 it('should call the underlying socket.disconnect', function () {37 mockIoSocket.disconnect = spy;38 socket.disconnect();39 expect(spy).toHaveBeenCalled();40 });41 });42 describe('#connect', function () {43 it('should call the underlying socket.connect', function () {44 mockIoSocket.connect = spy;45 socket.connect();46 expect(spy).toHaveBeenCalled();47 });48 });49 describe('#once', function () {50 it('should apply asynchronously', function () {51 socket.once('event', spy);52 mockIoSocket.emit('event');53 expect(spy).not.toHaveBeenCalled();54 $timeout.flush();55 expect(spy).toHaveBeenCalled();56 });57 it('should only run once', function () {58 var counter = 0;59 socket.once('event', function () {60 counter += 1;61 });62 mockIoSocket.emit('event');63 mockIoSocket.emit('event');64 $timeout.flush();65 expect(counter).toBe(1);66 });67 });68 describe('#emit', function () {69 it('should call the delegate socket\'s emit', function () {70 spyOn(mockIoSocket, 'emit');71 socket.emit('event', {foo: 'bar'});72 expect(mockIoSocket.emit).toHaveBeenCalled();73 });74 it('should allow multiple data arguments', function () {75 spyOn(mockIoSocket, 'emit');76 socket.emit('event', 'x', 'y');77 expect(mockIoSocket.emit).toHaveBeenCalledWith('event', 'x', 'y');78 });79 it('should wrap the callback with multiple data arguments', function () {80 spyOn(mockIoSocket, 'emit');81 socket.emit('event', 'x', 'y', spy);82 expect(mockIoSocket.emit.mostRecentCall.args[3]).toNotBe(spy);83 mockIoSocket.emit.mostRecentCall.args[3]();84 expect(spy).not.toHaveBeenCalled();85 $timeout.flush();86 expect(spy).toHaveBeenCalled();87 });88 });89 describe('#removeListener', function () {90 it('should not call after removing an event', function () {91 socket.on('event', spy);92 socket.removeListener('event', spy);93 mockIoSocket.emit('event');94 expect($browser.deferredFns.length).toBe(0);95 });96 });97 describe('#removeAllListeners', function () {98 it('should not call after removing listeners for an event', function () {99 socket.on('event', spy);100 socket.removeAllListeners('event');101 mockIoSocket.emit('event');102 expect($browser.deferredFns.length).toBe(0);103 });104 it('should not call after removing all listeners', function () {105 socket.on('event', spy);106 socket.on('event2', spy);107 socket.removeAllListeners();108 mockIoSocket.emit('event');109 mockIoSocket.emit('event2');110 expect($browser.deferredFns.length).toBe(0);111 });112 });113 describe('#forward', function () {114 it('should forward events', function () {115 socket.forward('event');116 scope.$on('socket:event', spy);117 mockIoSocket.emit('event');118 $timeout.flush();119 expect(spy).toHaveBeenCalled();120 });121 it('should forward an array of events', function () {122 socket.forward(['e1', 'e2']);123 scope.$on('socket:e1', spy);124 scope.$on('socket:e2', spy);125 mockIoSocket.emit('e1');126 mockIoSocket.emit('e2');127 $timeout.flush();128 expect(spy.callCount).toBe(2);129 });130 it('should remove watchers when the scope is removed', function () {131 socket.forward('event');132 scope.$on('socket:event', spy);133 mockIoSocket.emit('event');134 $timeout.flush();135 expect(spy).toHaveBeenCalled();136 scope.$destroy();137 spy.reset();138 mockIoSocket.emit('event');139 expect(spy).not.toHaveBeenCalled();140 });141 it('should use the specified prefix', inject(function (socketFactory) {142 var socket = socketFactory({143 ioSocket: mockIoSocket,144 scope: scope,145 prefix: 'custom:'146 });147 socket.forward('event');148 scope.$on('custom:event', spy);149 mockIoSocket.emit('event');150 $timeout.flush();151 expect(spy).toHaveBeenCalled();152 }));153 it('should use an empty prefix if specified', inject(function (socketFactory) {154 var socket = socketFactory({155 ioSocket: mockIoSocket,156 scope: scope,157 prefix: ''158 });159 socket.forward('event');160 scope.$on('event', spy);161 mockIoSocket.emit('event');162 $timeout.flush();163 expect(spy).toHaveBeenCalled();164 }));165 it('should forward to the specified scope when one is provided', function () {166 var child = scope.$new();167 spyOn(child, '$broadcast');168 socket.forward('event', child);169 scope.$on('socket:event', spy);170 mockIoSocket.emit('event');171 $timeout.flush();172 expect(child.$broadcast).toHaveBeenCalled();173 });174 it('should pass all arguments to scope.$on', function () {175 socket.forward('event');176 scope.$on('socket:event', spy);177 mockIoSocket.emit('event', 1, 2, 3);178 $timeout.flush();179 expect(spy.calls[0].args.slice(1)).toEqual([1, 2, 3]);180 });181 });...

Full Screen

Full Screen

identity.js

Source:identity.js Github

copy

Full Screen

...40/**41 * Visit comment node.42 */43Compiler.prototype.comment = function( node ) {44 return this.emit( this.indent() + '/*' + node.comment + '*/', node.position );45};46/**47 * Visit import node.48 */49Compiler.prototype.import = function( node ) {50 return this.emit( '@import ' + node.import + ';', node.position );51};52/**53 * Visit media node.54 */55Compiler.prototype.media = function( node ) {56 return (57 this.emit( '@media ' + node.media, node.position ) +58 this.emit(59 ' {\n' + this.indent( 1 )60 ) +61 this.mapVisit( node.rules, '\n\n' ) +62 this.emit(63 this.indent( -1 ) +64 '\n}'65 )66 );67};68/**69 * Visit document node.70 */71Compiler.prototype.document = function( node ) {72 const doc = '@' + ( node.vendor || '' ) + 'document ' + node.document;73 return (74 this.emit( doc, node.position ) +75 this.emit(76 ' ' +77 ' {\n' +78 this.indent( 1 )79 ) +80 this.mapVisit( node.rules, '\n\n' ) +81 this.emit(82 this.indent( -1 ) +83 '\n}'84 )85 );86};87/**88 * Visit charset node.89 */90Compiler.prototype.charset = function( node ) {91 return this.emit( '@charset ' + node.charset + ';', node.position );92};93/**94 * Visit namespace node.95 */96Compiler.prototype.namespace = function( node ) {97 return this.emit( '@namespace ' + node.namespace + ';', node.position );98};99/**100 * Visit supports node.101 */102Compiler.prototype.supports = function( node ) {103 return (104 this.emit( '@supports ' + node.supports, node.position ) +105 this.emit(106 ' {\n' +107 this.indent( 1 )108 ) +109 this.mapVisit( node.rules, '\n\n' ) +110 this.emit(111 this.indent( -1 ) +112 '\n}'113 )114 );115};116/**117 * Visit keyframes node.118 */119Compiler.prototype.keyframes = function( node ) {120 return (121 this.emit( '@' + ( node.vendor || '' ) + 'keyframes ' + node.name, node.position ) +122 this.emit(123 ' {\n' +124 this.indent( 1 )125 ) +126 this.mapVisit( node.keyframes, '\n' ) +127 this.emit(128 this.indent( -1 ) +129 '}'130 )131 );132};133/**134 * Visit keyframe node.135 */136Compiler.prototype.keyframe = function( node ) {137 const decls = node.declarations;138 return (139 this.emit( this.indent() ) +140 this.emit( node.values.join( ', ' ), node.position ) +141 this.emit(142 ' {\n' +143 this.indent( 1 )144 ) +145 this.mapVisit( decls, '\n' ) +146 this.emit(147 this.indent( -1 ) +148 '\n' +149 this.indent() + '}\n'150 )151 );152};153/**154 * Visit page node.155 */156Compiler.prototype.page = function( node ) {157 const sel = node.selectors.length ?158 node.selectors.join( ', ' ) + ' ' :159 '';160 return this.emit( '@page ' + sel, node.position ) +161 this.emit( '{\n' ) +162 this.emit( this.indent( 1 ) ) +163 this.mapVisit( node.declarations, '\n' ) +164 this.emit( this.indent( -1 ) ) +165 this.emit( '\n}' );166};167/**168 * Visit font-face node.169 */170Compiler.prototype[ 'font-face' ] = function( node ) {171 return this.emit( '@font-face ', node.position ) +172 this.emit( '{\n' ) +173 this.emit( this.indent( 1 ) ) +174 this.mapVisit( node.declarations, '\n' ) +175 this.emit( this.indent( -1 ) ) +176 this.emit( '\n}' );177};178/**179 * Visit host node.180 */181Compiler.prototype.host = function( node ) {182 return (183 this.emit( '@host', node.position ) +184 this.emit(185 ' {\n' +186 this.indent( 1 )187 ) +188 this.mapVisit( node.rules, '\n\n' ) +189 this.emit(190 this.indent( -1 ) +191 '\n}'192 )193 );194};195/**196 * Visit custom-media node.197 */198Compiler.prototype[ 'custom-media' ] = function( node ) {199 return this.emit( '@custom-media ' + node.name + ' ' + node.media + ';', node.position );200};201/**202 * Visit rule node.203 */204Compiler.prototype.rule = function( node ) {205 const indent = this.indent();206 const decls = node.declarations;207 if ( ! decls.length ) {208 return '';209 }210 return this.emit( node.selectors.map( function( s ) {211 return indent + s;212 } ).join( ',\n' ), node.position ) +213 this.emit( ' {\n' ) +214 this.emit( this.indent( 1 ) ) +215 this.mapVisit( decls, '\n' ) +216 this.emit( this.indent( -1 ) ) +217 this.emit( '\n' + this.indent() + '}' );218};219/**220 * Visit declaration node.221 */222Compiler.prototype.declaration = function( node ) {223 return this.emit( this.indent() ) +224 this.emit( node.property + ': ' + node.value, node.position ) +225 this.emit( ';' );226};227/**228 * Increase, decrease or return current indentation.229 */230Compiler.prototype.indent = function( level ) {231 this.level = this.level || 1;232 if ( null !== level ) {233 this.level += level;234 return '';235 }236 return Array( this.level ).join( this.indentation || ' ' );...

Full Screen

Full Screen

HtmlSpec.js

Source:HtmlSpec.js Github

copy

Full Screen

...25 context = _jQuery("<div></div>");26 ui = angular.scenario.output.html(context, runner, model);27 });28 it('should create nested describe context', function() {29 runner.emit('SpecBegin', spec);30 expect(context.find('#describe-20 #describe-10 > h2').text()).31 toEqual('describe: child');32 expect(context.find('#describe-20 > h2').text()).toEqual('describe: parent');33 expect(context.find('#describe-10 .tests > li .test-info .test-name').text()).34 toEqual('test spec');35 expect(context.find('#describe-10 .tests > li').hasClass('status-pending')).36 toBeTruthy();37 });38 it('should add link on InteractivePause', function() {39 runner.emit('SpecBegin', spec);40 runner.emit('StepBegin', spec, step);41 runner.emit('StepEnd', spec, step);42 runner.emit('StepBegin', spec, step);43 runner.emit('InteractivePause', spec, step);44 expect(context.find('.test-actions .test-title:first').text()).toEqual('some step');45 expect(lowercase(context.find('.test-actions .test-title:last').html())).toEqual(46 'paused... <a href="javascript:resume()">resume</a> when ready.'47 );48 });49 it('should update totals when steps complete', function() {50 // Failure51 for (var i=0; i < 3; ++i) {52 runner.emit('SpecBegin', spec);53 runner.emit('StepBegin', spec, step);54 runner.emit('StepFailure', spec, step, 'error');55 runner.emit('StepEnd', spec, step);56 runner.emit('SpecEnd', spec);57 }58 // Error59 runner.emit('SpecBegin', spec);60 runner.emit('SpecError', spec, 'error');61 runner.emit('SpecEnd', spec);62 // Error63 runner.emit('SpecBegin', spec);64 runner.emit('StepBegin', spec, step);65 runner.emit('StepError', spec, step, 'error');66 runner.emit('StepEnd', spec, step);67 runner.emit('SpecEnd', spec);68 // Success69 runner.emit('SpecBegin', spec);70 runner.emit('StepBegin', spec, step);71 runner.emit('StepEnd', spec, step);72 runner.emit('SpecEnd', spec);73 expect(parseInt(context.find('#status-legend .status-failure').text(), 10)).74 toEqual(3);75 expect(parseInt(context.find('#status-legend .status-error').text(), 10)).76 toEqual(2);77 expect(parseInt(context.find('#status-legend .status-success').text(), 10)).78 toEqual(1);79 });80 it('should update timer when test completes', function() {81 // Success82 runner.emit('SpecBegin', spec);83 runner.emit('StepBegin', spec, step);84 runner.emit('StepEnd', spec, step);85 runner.emit('SpecEnd', spec);86 // Failure87 runner.emit('SpecBegin', spec);88 runner.emit('StepBegin', spec, step);89 runner.emit('StepFailure', spec, step, 'error');90 runner.emit('StepEnd', spec, step);91 runner.emit('SpecEnd', spec);92 // Error93 runner.emit('SpecBegin', spec);94 runner.emit('SpecError', spec, 'error');95 runner.emit('SpecEnd', spec);96 context.find('#describe-10 .tests > li .test-info .timer-result').97 each(function(index, timer) {98 expect(timer.innerHTML).toMatch(/ms$/);99 }100 );101 });102 it('should include line if provided', function() {103 runner.emit('SpecBegin', spec);104 runner.emit('StepBegin', spec, step);105 runner.emit('StepFailure', spec, step, 'error');106 runner.emit('StepEnd', spec, step);107 runner.emit('SpecEnd', spec);108 var errorHtml = context.find('#describe-10 .tests li pre').html();109 expect(errorHtml.indexOf('unknown:-1')).toEqual(0);110 });...

Full Screen

Full Screen

compress.js

Source:compress.js Github

copy

Full Screen

...33/**34 * Visit comment node.35 */36Compiler.prototype.comment = function( node ) {37 return this.emit( '', node.position );38};39/**40 * Visit import node.41 */42Compiler.prototype.import = function( node ) {43 return this.emit( '@import ' + node.import + ';', node.position );44};45/**46 * Visit media node.47 */48Compiler.prototype.media = function( node ) {49 return this.emit( '@media ' + node.media, node.position ) +50 this.emit( '{' ) +51 this.mapVisit( node.rules ) +52 this.emit( '}' );53};54/**55 * Visit document node.56 */57Compiler.prototype.document = function( node ) {58 const doc = '@' + ( node.vendor || '' ) + 'document ' + node.document;59 return this.emit( doc, node.position ) +60 this.emit( '{' ) +61 this.mapVisit( node.rules ) +62 this.emit( '}' );63};64/**65 * Visit charset node.66 */67Compiler.prototype.charset = function( node ) {68 return this.emit( '@charset ' + node.charset + ';', node.position );69};70/**71 * Visit namespace node.72 */73Compiler.prototype.namespace = function( node ) {74 return this.emit( '@namespace ' + node.namespace + ';', node.position );75};76/**77 * Visit supports node.78 */79Compiler.prototype.supports = function( node ) {80 return this.emit( '@supports ' + node.supports, node.position ) +81 this.emit( '{' ) +82 this.mapVisit( node.rules ) +83 this.emit( '}' );84};85/**86 * Visit keyframes node.87 */88Compiler.prototype.keyframes = function( node ) {89 return this.emit( '@' +90 ( node.vendor || '' ) +91 'keyframes ' +92 node.name, node.position ) +93 this.emit( '{' ) +94 this.mapVisit( node.keyframes ) +95 this.emit( '}' );96};97/**98 * Visit keyframe node.99 */100Compiler.prototype.keyframe = function( node ) {101 const decls = node.declarations;102 return this.emit( node.values.join( ',' ), node.position ) +103 this.emit( '{' ) +104 this.mapVisit( decls ) +105 this.emit( '}' );106};107/**108 * Visit page node.109 */110Compiler.prototype.page = function( node ) {111 const sel = node.selectors.length ?112 node.selectors.join( ', ' ) :113 '';114 return this.emit( '@page ' + sel, node.position ) +115 this.emit( '{' ) +116 this.mapVisit( node.declarations ) +117 this.emit( '}' );118};119/**120 * Visit font-face node.121 */122Compiler.prototype[ 'font-face' ] = function( node ) {123 return this.emit( '@font-face', node.position ) +124 this.emit( '{' ) +125 this.mapVisit( node.declarations ) +126 this.emit( '}' );127};128/**129 * Visit host node.130 */131Compiler.prototype.host = function( node ) {132 return this.emit( '@host', node.position ) +133 this.emit( '{' ) +134 this.mapVisit( node.rules ) +135 this.emit( '}' );136};137/**138 * Visit custom-media node.139 */140Compiler.prototype[ 'custom-media' ] = function( node ) {141 return this.emit( '@custom-media ' + node.name + ' ' + node.media + ';', node.position );142};143/**144 * Visit rule node.145 */146Compiler.prototype.rule = function( node ) {147 const decls = node.declarations;148 if ( ! decls.length ) {149 return '';150 }151 return this.emit( node.selectors.join( ',' ), node.position ) +152 this.emit( '{' ) +153 this.mapVisit( decls ) +154 this.emit( '}' );155};156/**157 * Visit declaration node.158 */159Compiler.prototype.declaration = function( node ) {160 return this.emit( node.property + ':' + node.value, node.position ) + this.emit( ';' );...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';2import { AppComponent } from './app.component';3import { AppModule } from './app.module';4describe('AppComponent', () => {5 beforeEach(() => MockBuilder(AppComponent, AppModule));6 it('should create', () => {7 const fixture = MockRender(AppComponent);8 const component = ngMocks.findInstance(AppComponent);9 component.clicked.emit();10 expect(ngMocks.input(component.clicked)).toHaveBeenCalled();11 });12});

Full Screen

Using AI Code Generation

copy

Full Screen

1import { Component, EventEmitter, Input, Output } from '@angular/core';2@Component({3 <button (click)="onClick()">Click</button>4})5export class TestComponent {6 @Output() clickEvent = new EventEmitter<string>();7 onClick() {8 this.clickEvent.emit('Hello');9 }10}11import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';12import { TestComponent } from './test';13describe('TestComponent', () => {14 beforeEach(() => MockBuilder(TestComponent));15 it('should emit an event', () => {16 const fixture = MockRender(TestComponent);17 const component = ngMocks.findInstance(TestComponent);18 spyOn(component.clickEvent, 'emit');19 ngMocks.click('button');20 expect(component.clickEvent.emit).toHaveBeenCalled();21 });22});

Full Screen

Using AI Code Generation

copy

Full Screen

1import { MockBuilder, MockInstance, MockRender, ngMocks } from 'ng-mocks';2import { AppComponent } from './app.component';3import { AppComponentService } from './app.component.service';4describe('AppComponent', () => {5 beforeEach(() => MockInstance(AppComponentService, 'get', 'value'));6 beforeEach(() => MockBuilder(AppComponent));7 beforeEach(() => MockRender(AppComponent));8 it('should call emit on click', () => {9 const component = ngMocks.find(AppComponent);10 const button = ngMocks.find('button');11 const spy = spyOn(component, 'emit');12 button.click();13 expect(spy).toHaveBeenCalled();14 });15});16import { Component, EventEmitter, Output } from '@angular/core';17import { AppComponentService } from './app.component.service';18@Component({19})20export class AppComponent {21 @Output() public output = new EventEmitter<string>();22 constructor(private service: AppComponentService) {}23 public emit() {24 this.output.emit(this.service.get());25 }26}27import { Injectable } from '@angular/core';28@Injectable()29export class AppComponentService {30 public get() {31 return 'value';32 }33}34<button (click)="emit()">Click</button>35button {36 background-color: #4CAF50;37 border: none;38 color: white;39 padding: 15px 32px;40 text-align: center;41 text-decoration: none;42 display: inline-block;43 font-size: 16px;44 margin: 4px 2px;45 cursor: pointer;46}47import { MockBuilder, MockRender } from 'ng-mocks';48import { AppComponent } from './app.component';49import { AppComponentService } from './app.component.service';50describe('AppComponent', () => {51 beforeEach(() => MockInstance(AppComponentService, 'get', '

Full Screen

Using AI Code Generation

copy

Full Screen

1import { emit, mockComponent } from 'ng-mocks';2import { MyComponent } from './my-component';3describe('MyComponent', () => {4 it('should emit event', () => {5 const component = mockComponent(MyComponent);6 emit(component, 'myEvent', 'hello world');7 expect(component.myEvent.emit).toHaveBeenCalledWith('hello world');8 });9});10import { Component, EventEmitter, Output } from '@angular/core';11@Component({12})13export class MyComponent {14 @Output() public myEvent = new EventEmitter<string>();15}

Full Screen

Using AI Code Generation

copy

Full Screen

1import { emit } from 'ng-mocks';2import { Component } from '@angular/core';3import { TestComponent } from './test.component';4@Component({5 template: `<div (click)="onClick()" [class.active]="active">test</div>`6})7class TestWrapperComponent {8 active = false;9 onClick() {10 this.active = !this.active;11 }12}13describe('TestComponent', () => {14 let component: TestComponent;15 let wrapper: TestWrapperComponent;16 beforeEach(() => {17 wrapper = new TestWrapperComponent();18 component = new TestComponent();19 });20 it('should create', () => {21 expect(component).toBeTruthy();22 });23 it('should emit', () => {24 emit(wrapper, 'click');25 expect(wrapper.active).toBeTruthy();26 });27});

Full Screen

Using AI Code Generation

copy

Full Screen

1const ngMocks = require('ng-mocks');2const mock = ngMocks.mock('test');3mock.emit('myEvent', 'hello world');4import { EventEmitter } from '@angular/core';5import { TestBed } from '@angular/core/testing';6import { NgMocks } from 'ng-mocks';7describe('test', () => {8 let component;9 beforeEach(() => {10 TestBed.configureTestingModule({11 });12 component = NgMocks.findInstance(TestComponent);13 });14 it('should emit event', () => {15 const spy = spyOn(component.myEvent, 'emit');16 component.emitEvent();17 expect(spy).toHaveBeenCalledWith('hello world');18 });19});20import { Component, EventEmitter, Output } from '@angular/core';21@Component({22})23export class TestComponent {24 @Output() myEvent = new EventEmitter();25 emitEvent() {26 this.myEvent.emit('hello world');27 }28}29Using NgMocks.findInstance() method30const ngMocks = require('ng-mocks');31const mock = ngMocks.mock('test');32mock.findInstance('test');33import { TestBed } from '@angular/core/testing';34import { NgMocks } from 'ng-mocks';35import { TestComponent } from './test.component';36describe('test', () => {37 let component;38 beforeEach(() => {39 TestBed.configureTestingModule({40 });41 component = NgMocks.findInstance(TestComponent);42 });43 it('should find instance', () => {44 expect(component).toBeTruthy();45 });46});47import { Component } from '@angular/core';48@Component({49})50export class TestComponent {}51Using NgMocks.findInstances() method52The NgMocks.findInstances() method is used to find all the instances of a component or directive from the TestBed. This method returns all the instances of the component or directive that are

Full Screen

Using AI Code Generation

copy

Full Screen

1ngMocks.triggerEventHandler(2 fixture.debugElement.query(By.css('button')),3 {}4);5fixture.detectChanges();6expect(spy).toHaveBeenCalledWith('button clicked');

Full Screen

Using AI Code Generation

copy

Full Screen

1export class AppComponent {2 @Output() public show = new EventEmitter<string>();3}4import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';5import { AppComponent } from './app.component';6beforeEach(() => MockBuilder(AppComponent));7it('emits', () => {8 const fixture = MockRender(AppComponent);9 const component = ngMocks.find(AppComponent);10 const spy = spyOn(component.show, 'emit');11 expect(spy).toHaveBeenCalledWith('value');12});13export class AppDirective {14 @Output() public show = new EventEmitter<string>();15}16import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';17import { AppDirective } from './app.directive';18beforeEach(() => MockBuilder(AppDirective));19it('emits', () => {20 const fixture = MockRender(AppDirective);21 const component = ngMocks.find(AppDirective);22 const spy = spyOn(component.show, 'emit');23 expect(spy).toHaveBeenCalledWith('value');24});25export class AppPipe implements PipeTransform {26 transform(value: string) {27 return value;28 }29}30import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';31import { AppPipe } from './app.pipe';32beforeEach(() => MockBuilder(AppPipe));33it('emits', () => {34 const fixture = MockRender(AppPipe);35 const component = ngMocks.find(AppPipe);36 const spy = spyOn(component.transform, 'emit');37 expect(spy).toHaveBeenCalledWith('value');38});39export class AppService {40 @Output() public show = new EventEmitter<string>();41}42import { MockBuilder, MockRender, ngMocks } from

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run ng-mocks automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful