Best JavaScript code snippet using ng-mocks
slide.js
Source:slide.js  
1export const X = 'X';2export const Y = 'Y';3/**4 * @options keys5 * ---------------------6 * @key {element} el7 * @key {'X'|'Y'} axis8 * @key {fn} onStart9 * @key {fn} onMove10 * @key {fn} onEnd11 *12 * */13const defaultOptions = {14  el: null,15  onStart: () => null,16  onMove: () => null,17  onEnd: () => null,18};19// const div = document.body.appendChild(document.createElement('div'))20// div.setAttribute('style', 'position:fixed;bottom:0;right:0;z-index: 999999;background:#ccc;color:#000;overflow:scroll')21class Slide {22  constructor(options) {23    if (!options.el) {24      return;25    }26    this.el = options.el;27    this.options = Object.assign({}, defaultOptions, options);28    this.touches = [];29    this.multiple = {};30    this.touchMap = {};31    this.touchStart = this.touchStart.bind(this);32    this.touchMove = this.touchMove.bind(this);33    this.touchEnd = this.touchEnd.bind(this);34    this.init();35    return this.detachEvent.bind(this);36  }37  init() {38    addEvent(this.el, 'touchstart', this.touchStart);39    addEvent(this.el, 'touchmove', this.touchMove);40    addEvent(this.el, 'touchend', this.touchEnd);41  }42  detachEvent() {43    detachEvent(this.el, 'touchstart', this.touchStart);44    detachEvent(this.el, 'touchmove', this.touchMove);45    detachEvent(this.el, 'touchend', this.touchEnd);46  }47  /**48   * @function - 代çtouchStart49   * */50  touchStart(e) {51    const { changedTouches } = e; // æ°å¢ç触ç¹52    const changedLen = changedTouches.length; // æ°å¢çè§¦ç¹æ°é53    const oldTouchesLen = this.touches.length; // ä¹åçè§¦ç¹æ°é54    let touch = null;55    let i = 0;56    do {57      touch = changedTouches[i];58      this.touchMap[touch.identifier] = this.touches.length;59      this.touches.push({60        startX: touch.clientX,61        startY: touch.clientY,62        startTimestamp: Number(new Date()),63        identifier: touch.identifier,64      });65    } while (++i < changedLen);66    // ä»åæåæå¤æ67    const isSingleToMultiple = oldTouchesLen === 1;68    // ç´æ¥å¤æè§¦æ¸69    const directlyMultiple = changedLen >= 2 && oldTouchesLen === 0;70    if (this.touches.length >= 2) {71      const obj = formatMultiple(this.touches, 'start');72      this.multiple = {73        startX: obj.currentX,74        startY: obj.currentY,75        startSpaceBetween: obj.spaceBetween,76        startDegree: obj.degree,77      };78    }79    this.options.onStart(80      {81        touches: this.touches,82        multiple: this.multiple,83        numberOfTouches: this.touches.length,84        isSingleToMultiple,85        directlyMultiple,86      },87      e,88    );89    this.isOn = true;90  }91  /**92   * @function - 代çtouchMove93   *94   * */95  touchMove(e) {96    const { touches } = this;97    if (touches.length === 0) {98      this.isOn = false;99    }100    if (!this.isOn) {101      return;102    }103    const { axis } = this.touches[0];104    if (this.options.axis && axis && axis !== this.options.axis) {105      return;106    }107    const { changedTouches } = e;108    let changeTouch = null;109    let isFirstTwo = false;110    let i = 0;111    do {112      changeTouch = changedTouches[i];113      const index = this.touchMap[changeTouch.identifier];114      if (index > 1) {115        continue;116      }117      isFirstTwo = true;118      const item = this.touches[index];119      this.touches.splice(120        index,121        1,122        Object.assign(123          {},124          item,125          compute(item, {126            currentX: changeTouch.clientX,127            currentY: changeTouch.clientY,128          }),129        ),130      );131    } while (++i < changedTouches.length);132    if (isFirstTwo && this.touches.length >= 2) {133      const result = formatMultiple(this.touches, 'move');134      const cache = this.multiple;135      const moveResult = compute(cache, {136        currentX: result.currentX,137        currentY: result.currentY,138      });139      this.multiple = Object.assign({}, cache, moveResult, {140        currentSpaceBetween: result.spaceBetween,141        diffSpaceBetween: result.spaceBetween - cache.startSpaceBetween,142        diffDegree: result.degree - cache.startDegree,143      });144    }145    this.options.onMove(146      {147        touches: this.touches,148        multiple: this.multiple,149        numberOfTouches: this.touches.length,150      },151      e,152    );153  }154  /**155   * @function - touchEnd触å156   *157   * */158  touchEnd(e) {159    if (!this.isOn) {160      return;161    }162    const prevMultipleCache = this.multiple;163    const prevTouches = this.touches;164    const currentTouches = e.touches;165    const currentExactTouches = [];166    const newMap = {};167    for (let i = 0, len = currentTouches.length; i < len; i++) {168      const id = currentTouches[i].identifier;169      const index = this.touchMap[id];170      if (typeof index === 'undefined') {171        continue;172      }173      newMap[id] = currentExactTouches.length;174      currentExactTouches.push(this.touches[index]);175    }176    //  div.innerHTML = (177    //   `178    //   <p style='width:100%;word-break:break-all;'>䏿¬¡çï¼${JSON.stringify(prevTouches)}</p>179    //   <p style='width:100%;word-break:break-all;'>è¿æ¬¡çï¼${JSON.stringify(currentExactTouches)}</p>180    //   <p style='width:100%;word-break:break-all;'>䏿¬¡çï¼${JSON.stringify(this.touchMap)}</p>181    //   <p style='width:100%;word-break:break-all;'>è¿æ¬¡çï¼${JSON.stringify(newMap)}</p>182    //   `183    // )184    // æ´æ°åç触ç¹185    this.touches = currentExactTouches;186    this.touchMap = newMap;187    // å½åå®é
è§¦ç¹æ°é188    const currentTouchesNumber = currentExactTouches.length;189    // ææå
¨é¨ç¦»å¼190    if (currentTouchesNumber === 0) {191      this.isOn = false; // ç»ææµç¨192      this.multiple = {};193      this.touchMap = {};194      this.touches = [];195    }196    // å¤ä¸ªè§¦ç¹197    else {198      // åªå©ä¸ä¸ªè§¦ç¹çæ¶å199      if (currentTouchesNumber === 1) {200        this.multiple = {};201      }202    }203    this.options.onEnd(204      {205        touches: this.touches, // å½å触ç¹206        multiple: this.multiple, // å¤è§¦ç¹çæ°æ®207        prevTouches, // 触ç¹åååæè¿ä¸æ¬¡ç触ç¹208        prevMultiple: prevMultipleCache, // ä¸ä¸æ¥çå¤è§¦ç¹æ°æ®209        endTimestamp: Number(new Date()),210        numberOfTouches: this.touches.length,211        numberOfChanged: prevTouches.length - this.touches.length,212      },213      e,214    );215  }216}217// æå夿æä½çæ°æ®218function formatMultiple(touches) {219  const fT = touches[0];220  const sT = touches[1];221  const fX = fT.currentX || fT.startX;222  const fY = fT.currentY || fT.startY;223  const x = (sT.currentX || sT.startX) - fX;224  const y = (sT.currentY || sT.startY) - fY;225  const spaceBetween = Math.sqrt(Math.abs(x * x) + Math.abs(y * y));226  const sin = -y / spaceBetween;227  return {228    spaceBetween,229    degree: Math.asin(sin) / ((2 * Math.PI) / 360),230    currentX: x / 2 + fX,231    currentY: y / 2 + fY,232  };233}234// è§èåæ°æ®235function compute(cache, current) {236  const { currentX } = current;237  const { currentY } = current;238  const diffX = Math.abs(currentX - cache.startX);239  const diffY = Math.abs(currentY - cache.startY);240  const directionX = currentX >= cache.startX ? 1 : -1;241  const directionY = currentY >= cache.startY ? 1 : -1;242  const cdX = currentX >= (cache.currentX || cache.startX) ? 1 : -1;243  const cdY = currentY >= (cache.currentY || cache.startY) ? 1 : -1;244  // å°½æ©çå¤æåºæ»å¨ç轴线;245  const axis = cache.axis || (diffX > diffY ? X : Y);246  return {247    axis,248    // åè½´æ¹åçç§»å¨è·ç¦»249    diffX,250    diffY,251    diff: Math.sqrt(diffX * diffX + diffY * diffY),252    // æ»ä½çç§»å¨æ¹åï¼ Xè½´åä¸çç§»å¨æ¹å  Yè½´åä¸çç§»å¨æ¹å253    directionX,254    directionY,255    direction: axis === X ? directionX : directionY,256    // å½åæ»å¨æ¹åï¼ Xè½´åä¸çå½åç§»å¨æ¹å  Yè½´åä¸å½åç§»å¨æ¹å257    currentDirectionX: cdX,258    currentDirectionY: cdY,259    currentDirection: axis === X ? cdX : cdY,260    // 䏿¬¡è§¦ç¹ä½ç½®261    currentX,262    currentY,263  };264}265function addEvent(el, eventName, fn, useCapture = false) {266  el.addEventListener(eventName, fn, useCapture);267}268function detachEvent(el, eventName, fn) {269  el.removeEventListener(eventName, fn);270}271function createSlide(options) {272  return new Slide(options);273}...slidedelete.js
Source:slidedelete.js  
1/**2 * Created by sunrain117 on 2016/5/11.3**/4var sliderdelete=(function(){5    var config={};6    config.btnW=75;7    config.sliderItem=".slide-delete>a";8    /*æ§è¡ç§»å¨äºä»¶*/9    var reg= /translateX\(([+-]?\d+(.\d+)?)px\)/i;10    var getTransLate=function(){11        /*è·å项çåç§»é*/12        var transL=this.style.webkitTransform;13        transL= transL.indexOf("translate")!=-1?parseFloat(transL.match(reg)[1]):0;14        return transL;15    };16    var removeTransition=function(){17        /*ç§»é¤transitonå¨ç»*/18        this.style.webkitTransition="none";19    }20    var addTranstion=function(){21        /*æ·»å transitonå¨ç»*/22        this.style.webkitTransition="transform 0.2s";23    }24    var addOpenClass=function(){25        //å½åæ»å¨å
ç´ å¤äºåç§»ç¶æï¼slider-open表示å½åç¶æ  为äºéç½®æ¹ä¾¿26        this.classList.contains("slider-open")?null:this.classList.add("slider-open");27    }28    var removeOpenClass=function(){29        //å½åæ»å¨å
ç´ å¤äºåç§»ç¶æï¼slider-open表示å½åç¶æ  为äºéç½®æ¹ä¾¿30        this.classList.contains("slider-open")?this.classList.remove("slider-open"):null;31    }32    var resetHoming=function(){33        var allOpenItem=document.querySelectorAll(".slide-delete>a.slider-open");34        for(var i=0;i<allOpenItem.length;i++){35            allOpenItem[i].style.webkitTransform="translatex(0px)";36            removeOpenClass.call(allOpenItem[i]);37        }38    }39    function _start(e){40        resetHoming();41        this.allowMove=true;42        var startTran=getTransLate.call(this);43        if(startTran){44            e.preventDefault();45            this.style.webkitTransform="translatex(0px)";46            this.allowMove=false;47        }48        var changeTouch= e.changedTouches[0];49        this.startX=changeTouch.pageX;50        this.startY=changeTouch.pageY;51    };52    function _move(e){53        if(!this.allowMove){54            return;55        }56        removeTransition.call(this);57        var changeTouch= e.changedTouches[0];58        var curX=changeTouch.pageX,curY=changeTouch.pageY;59        var stepX=this.startX-curX,stepY=this.startY-curY;60        if(Math.abs(stepX)>Math.abs(stepY)){61            e.preventDefault();62        }63        if(stepX>20&&Math.abs(stepX)>Math.abs(stepY)){64            this.style.webkitTransform="translatex("+-stepX+"px)";65            addOpenClass.call(this);66        }67        else if(stepY>20&&Math.abs(stepY)>Math.abs(stepX)){//yè½´ç§»å¨68           /* this.style.webkitTransform="translatex("+-stepX+"px)";69            console.log(stepX);*/70        }71    };72    function _end(e){73        var btnW=config.btnW;74        addTranstion.call(this);75        var changeTouch= e.changedTouches[0];76        var transL=getTransLate.call(this);77       if(transL>0){78           this.style.webkitTransform="translatex(0px)";79       }80        if(transL<0&&(Math.abs(transL)>btnW||Math.abs(transL)>btnW/2)){81            this.style.webkitTransform="translatex("+-btnW+"px)";82            addOpenClass.call(this);83        }else{84            this.style.webkitTransform="translatex(0px)";85        }86    };87    config.init=function(){88        if(!config.sliderItem) {89            console.log("请设置æ»å¨é¡¹");90            return;91        }92        var allCon=document.querySelectorAll(config.sliderItem);93        for(var i=0;i<allCon.length;i++){94            allCon[i].addEventListener("touchstart",_start,false);95            allCon[i].addEventListener("touchmove",_move,false);96            allCon[i].addEventListener("touchend",_end,false);97            allCon[i].addEventListener("transitionend",function(){98                /* addTranstion.call(this);99                 this.isTransition=true;*/100            },false)101        }102    }103    return config;104})();105sliderdelete.sliderItem=".slide-delete>a";106sliderdelete.init();107/*$(function(){108    var btnW=75;109    var allCon=document.querySelectorAll(".slide-delete>a");110    for(var i=0;i<allCon.length;i++){111        allCon[i].addEventListener("touchstart",_start,false);112        allCon[i].addEventListener("touchmove",_move,false);113        allCon[i].addEventListener("touchend",_end,false);114        /!* allCon[i].addEventListener("transitionend",function(){115         },false)*!/116    }117    var getTransLate=function(){118        var trans = $(this).css("transform");119        var transL = trans == "none" ? 0 : trans.split(',')[4];120        return parseFloat(transL);121    };122    var removeTransition=function(){123        $(this).css("transition","none");124    }125    var addTranstion=function(){126        $(this).css("transition","transform 0.2s");127    }128    var resetHoming=function(){129        $(this).parent().siblings("section").children("a").css("transform","translate(0px)");130    }131    function _start(e){132        resetHoming.call(this);133        this.allowMove=true;134        var startTran=getTransLate.call(this);135        if(startTran){136            e.preventDefault();137            this.allowMove=false;138        }139        var changeTouch= e.changedTouches[0];140        this.startX=changeTouch.pageX;141        this.startY=changeTouch.pageY;142    };143    function _move(e){144        if(!this.allowMove){145            $(this).css("transform","translate(0px)");146            return;147        }148        removeTransition.call(this);149        var changeTouch= e.changedTouches[0];150        var curX=changeTouch.pageX,curY=changeTouch.pageY;151        var stepX=this.startX-curX,stepY=this.startY-curY;152        console.log(stepX);153        if(Math.abs(stepX)>Math.abs(stepY)){154            e.preventDefault();155        }156        if(stepX>20&&Math.abs(stepX)>Math.abs(stepY)){157            $(this).css("transform","translate("+(-stepX)+"px)");158        }159        else if(stepY>20&&Math.abs(stepY)>Math.abs(stepX)){//yè½´ç§»å¨160        }161    };162    function _end(e){163        addTranstion.call(this);164        var changeTouch= e.changedTouches[0];165        var transL=getTransLate.call(this);166        if(transL>0){167            $(this).css("transform","translate(0px)");168        }169        if(transL<0&&(Math.abs(transL)>btnW||Math.abs(transL)>btnW/2)){170            $(this).css("transform","translate("+(-btnW)+"px)");171        }else{172            $(this).css("transform","translate(0px)");173        }174    }...freedomdraw.js
Source:freedomdraw.js  
1// pages/freedomdraw/freedomdraw.js2Page({3  isClear: false,4  /**5   * 页é¢çåå§æ°æ®6   */7  data: {8    pen: 5,9    color: '#ff0000'10  },11  /**12   * çå½å¨æå½æ°--çå¬é¡µé¢å è½½13   */14  onLoad: function(options) {15    this.ctx = wx.createCanvasContext('myCanvas', this)16    console.log(this.ctx)17  },18  touchStart: function(e) {19   20    this.x1 = e.changedTouches[0].x;21    this.y1 = e.changedTouches[0].y;22    console.log(this.x1)23    var ctxx = this.ctx;24    if (this.isClear) {25      ctxx.setStrokeStyle('#FFFFFF');26      ctxx.setLineCap('round');27      ctxx.setLineJoin('round');28      ctxx.setLineWidth(20);29      ctxx.beginPath();30    } else {31      ctxx.setStrokeStyle(this.data.color);32      ctxx.setLineWidth(this.data.pen);33      ctxx.setLineCap('round');34      ctxx.beginPath();35    }36  },37  touchMove: function(e) {38    var changeTouch = e.changedTouches[0];39    var x2 = changeTouch.x;40    var y2 = changeTouch.y;41    var cts = this.ctx;42    if (this.isClear) {43      cts.moveTo(this.x1, this.y1);44      cts.lineTo(x2, y2);45    } else {46      cts.moveTo(this.x1, this.y1)47      cts.lineTo(x2, y2)48    }49    cts.stroke();50    this.x1 = x2;51    this.y1 = y2;52    cts.draw(true);53  },54  touchEnd: function() {55  },56  penSelect: function(e) {57    this.setData({58      pen: parseInt(e.currentTarget.dataset.param)59    })60    this.isClear = false61  },62  colorSelect: function(e) {63    this.setData({64      color: e.currentTarget.dataset.param //æ ¹æ®data-param设置penå¼65    })66    this.isClear = false;67  },68  clear: function() {69    this.isClear = true;70  },71clearAll:function(){72  this.setData({73    pen:5,74    color:'#000000'75  })76  this.ctx.draw();77},78  /**79   * çå½å¨æå½æ°--çå¬é¡µé¢å次渲æå®æ80   */81  onReady: function() {82  },83  /**84   * çå½å¨æå½æ°--çå¬é¡µé¢æ¾ç¤º85   */86  onShow: function() {87  },88  /**89   * çå½å¨æå½æ°--çå¬é¡µé¢éè90   */91  onHide: function() {92  },93  /**94   * çå½å¨æå½æ°--çå¬é¡µé¢å¸è½½95   */96  onUnload: function() {97  },98  /**99   * 页é¢ç¸å
³äºä»¶å¤ç彿°--çå¬ç¨æ·ä¸æå¨ä½100   */101  onPullDownRefresh: function() {102  },103  /**104   * 页é¢ä¸æè§¦åºäºä»¶çå¤ç彿°105   */106  onReachBottom: function() {107  },108  /**109   * ç¨æ·ç¹å»å³ä¸è§å享110   */111  onShareAppMessage: function() {112  }...Using AI Code Generation
1import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';2import { AppModule } from './app.module';3import { AppComponent } from './app.component';4describe('AppComponent', () => {5  beforeEach(() => MockBuilder(AppComponent, AppModule));6  it('should create the app', () => {7    const fixture = MockRender(AppComponent);8    const app = fixture.point.componentInstance;9    expect(app).toBeTruthy();10  });11  it('should change the value of input', () => {12    const fixture = MockRender(AppComponent);13    const app = fixture.point.componentInstance;14    ngMocks.changeTouch(fixture.point.query('input'), 'test');15    expect(app.inputValue).toBe('test');16  });17});18import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';19import { AppModule } from './app.module';20import { AppComponent } from './app.component';21describe('AppComponent', () => {22  beforeEach(() => MockBuilder(AppComponent, AppModule));23  it('should create the app', () => {24    const fixture = MockRender(AppComponent);25    const app = fixture.point.componentInstance;26    expect(app).toBeTruthy();27  });28  it('should change the value of input', () => {29    const fixture = MockRender(AppComponent);30    const app = fixture.point.componentInstance;31    ngMocks.changeTouch(fixture.point.query('input'), 'test');32    expect(app.inputValue).toBe('test');33  });34});35import { Component, OnInit } from '@angular/core';36import { FormControl, Validators } from '@angular/forms';37@Component({38})39export class AppComponent implements OnInit {40  inputValue: string = '';41  control = new FormControl('', Validators.required);42  ngOnInit() {43    this.control.valueChanges.subscribe((value) => {44      this.inputValue = value;45    });46  }47}48input {Using AI Code Generation
1import { MockBuilder, MockRender } from 'ng-mocks';2import { AppModule } from './app.module';3import { AppComponent } from './app.component';4describe('AppComponent', () => {5  beforeEach(() => MockBuilder(AppComponent, AppModule));6  it('should create the app', () => {7    const fixture = MockRender(AppComponent);8    const app = fixture.debugElement.componentInstance;9    expect(app).toBeTruthy();10  });11  it('should change the value of touch', () => {12    const fixture = MockRender(AppComponent);13    const app = fixture.debugElement.componentInstance;14    app.changeTouch();15    expect(app.touch).toEqual(true);16  });17});18import { MockBuilder, MockRender } from 'ng-mocks';19import { AppModule } from './app.module';20import { AppComponent } from './app.component';21describe('AppComponent', () => {22  beforeEach(() => MockBuilder(AppComponent, AppModule));23  it('should create the app', () => {24    const fixture = MockRender(AppComponent);25    const app = fixture.debugElement.componentInstance;26    expect(app).toBeTruthy();27  });28  it('should change the value of touch', () => {29    const fixture = MockRender(AppComponent);30    const app = fixture.debugElement.componentInstance;31    app.changeTouch();32    expect(app.touch).toEqual(true);33  });34});35import { Component } from '@angular/core';36@Component({37})38export class AppComponent {39  title = 'ng-mocks';40  touch = false;41  changeTouch() {42    this.touch = true;43  }44}45      <h2>Touch screen: {{touch}}</h2>46      <button (click)="changeTouch()">Touch</button>47import { BrowserModule } from '@angular/platform-browser';48import { NgModule } from '@angular/core';49import { AppComponent } from './app.component';50@NgModule({51  imports: [Using AI Code Generation
1import { TestBed } from '@angular/core/testing';2import { MockBuilder, MockRender, ngMocks } from 'ng-mocks';3import { AppComponent } from './app.component';4describe('AppComponent', () => {5  beforeEach(() => MockBuilder(AppComponent));6  it('should create the app', () => {7    const fixture = MockRender(AppComponent);8    const app = fixture.point.componentInstance;9    expect(app).toBeTruthy();10  });11  it(`should have as title 'ng-mocks'`, () => {12    const fixture = MockRender(AppComponent);13    const app = fixture.point.componentInstance;14    expect(app.title).toEqual('ng-mocks');15  });16  it('should render title', () => {17    const fixture = MockRender(AppComponent);18    expect(fixture.point.nativeElement.querySelector('h1').textContent).toContain(19    );20  });21  it('should render title', () => {22    const fixture = MockRender(AppComponent);23    ngMocks.changeTouch(fixture.point.nativeElement.querySelector('input'));24    expect(fixture.point.nativeElement.querySelector('h1').textContent).toContain(25    );26  });27});28import { Component } from '@angular/core';29@Component({30})31export class AppComponent {32  title = 'ng-mocks';33  title2 = 'ng-mocks';34  title3 = 'ng-mocks';35  title4 = 'ng-mocks';36  title5 = 'ng-mocks';37  title6 = 'ng-mocks';38  title7 = 'ng-mocks';39  title8 = 'ng-mocks';40  title9 = 'ng-mocks';41  title10 = 'ng-mocks';42  title11 = 'ng-mocks';43  title12 = 'ng-mocks';44  title13 = 'ng-mocks';45  title14 = 'ng-mocks';46  title15 = 'ng-mocks';47  title16 = 'ng-mocks';48  title17 = 'ng-mocks';49  title18 = 'ng-mocks';50  title19 = 'ng-mocks';51  title20 = 'ng-mocks';52  title21 = 'ng-mocks';53  title22 = 'ng-mocks';Using AI Code Generation
1const { changeTouch } = require('ng-mocks');2const { changeValue } = require('ng-mocks');3const { createComponent } = require('ng-mocks');4const { findInstance } = require('ng-mocks');5const { findInstances } = require('ng-mocks');6const { findInput } = require('ng-mocks');7const { findOutputs } = require('ng-mocks');8const { findOutput } = require('ng-mocks');9const { findComponent } = require('ng-mocks');10const { findComponents } = require('ng-mocks');11const { findDebugElement } = require('ng-mocks');12const { findDebugElements } = require('ng-mocks');13const { findDirective } = require('ng-mocks');14const { findDirectives } = require('ng-mocks');15const { findPipe } = require('ng-mocks');16const { findPipes } = require('ng-mocks');17const { findService } = require('ng-mocks');18const { findServices } = require('ng-mocks');19const { findChild } = require('ng-mocks');20const { findChildren } = require('ng-mocks');21const { findContent } = require('ng-mocksUsing AI Code Generation
1import { TestModuleMetadata } from '@angular/core/testing';2import { MockBuilder, MockRender } from 'ng-mocks';3import { AppModule } from './app.module';4import { AppComponent } from './app.component';5import { NgMocks } from 'ng-mocks';6describe('AppComponent', () => {7  let component: AppComponent;8  beforeEach(() => MockBuilder(AppComponent, AppModule));9  beforeEach(() => {10    const fixture = MockRender(AppComponent);11    component = fixture.point.componentInstance;12  });13  it('should create the app', () => {14    expect(component).toBeTruthy();15  });16  it('should have as title `ng-mocks`', () => {17    expect(component.title).toEqual('ng-mocks');18  });19  it('should render title', () => {20    const element = NgMocks.find('h1').nativeElement;21    expect(element.textContent).toContain('Welcome to ng-mocks!');22  });23  it('should render title', () => {24    const element = NgMocks.find('h1').nativeElement;25    NgMocks.changeTouch(element);26    expect(element.textContent).toContain('Welcome to ng-mocks!');27  });28});29import { NgModule } from '@angular/core';30import { BrowserModule } from '@angular/platform-browser';31import { FormsModule } from '@angular/forms';32import { AppComponent } from './app.component';33@NgModule({34  imports: [BrowserModule, FormsModule],35})36export class AppModule {}37import { Component } from '@angular/core';38@Component({39    <h1>Welcome to {{ title }}!</h1>40    <input type="text" [(ngModel)]="title" />41})42export class AppComponent {43  title = 'ng-mocks';44}45import { TestBed, async } from '@angular/core/testing';46import { FormsModule } from '@angular/forms';47import { AppComponent } from './app.component';48describe('AppComponent', () => {49  beforeEach(async(() => {50    TestBed.configureTestingModule({51      imports: [FormsModule],52    }).compileComponents();53  }));54  it('should create the app', () => {55    const fixture = TestBed.createComponent(AppComponent);56    const app = fixture.debugElement.componentInstance;57    expect(app).toBeTruthy();58  });59  it('shouldUsing AI Code Generation
1import { changeTouch } from 'ng-mocks';2import { changeValue } from 'ng-mocks';3import { clearInput } from 'ng-mocks';4import { render } from 'ng-mocks';5import { findInstance } from 'ng-mocks';6import { findComponent } from 'ng-mocks';7import { findDirective } from 'ng-mocks';8import { findPipe } from 'ng-mocks';9import { findInput } from 'ng-mocks';10import { findOutput } from 'ng-mocks';11import { findHost } from 'ng-mocks';12import { findHostInstance } from 'ng-mocks';13import { findHostComponent } from 'ng-mocks';14import { findHostDirective } from 'ng-mocks';15import { findHostPipe } from 'ng-mocks';16import { findHostInput } from 'ng-mocks';17import { findHostOutput } from 'ng-mocks';18import { findInstance } from 'ng-mocks';19import { findComponent } from 'ng-mocks';20import { findDirective } from 'ng-mocks';21import { findPipe } from 'ng-mocks';22import { findInput } fromUsing AI Code Generation
1import { changeTouch } from 'ng-mocks';2import { createComponent, find } from 'ng-mocks';3import { findInstance } from 'ng-mocks';4import { findRenderedComponent } from 'ng-mocks';5import { findRenderedDirective } from 'ng-mocks';6import { findRenderedElement } from 'ng-mocks';7import { findRenderedText } from 'ng-mocks';8import { findRenderedNodes } from 'ng-mocks';9import { findRenderedComponent } from 'ng-mocks';10import { findRenderedDirective } from 'ng-mocks';11import { findRenderedElement } from 'ng-mocks';12import { findRenderedText } from 'ng-mocks';13import { findRenderedNodes } from 'ng-mocks';14import { getDebugNode } from 'ng-mocks';15import { getDirectiveInstance } from 'ng-mocks';16import { getHostComponent } from 'ng-mocks';17import { getHostDirective } from 'ng-mocks';18import { getHostElement } from 'ng-mocks';19import { getHostInput } from 'ng-mocks';20import { getHostOutputUsing AI Code Generation
1import { changeTouch } from 'ng-mocks';2import { FormControl } from '@angular/forms';3const control = new FormControl();4changeTouch(control, true);5import { changeValue } from 'ng-mocks';6import { FormControl } from '@angular/forms';7const control = new FormControl();8changeValue(control, 'test');9import { createComponent } from 'ng-mocks';10import { MyComponent } from './my.component';11const fixture = createComponent(MyComponent);12import { createDirective } from 'ng-mocks';13import { MyDirective } from './my.directive';14const fixture = createDirective(MyDirective);15import { createHostComponent } from 'ng-mocks';16import { MyComponent } from './my.component';17const fixture = createHostComponent(MyComponent);18import { createHostFactory } from 'ng-mocks';19import { MyComponent } from './my.component';20const fixture = createHostFactory(MyComponent);21import { createHostFactory } from 'ng-mocks';22import { MyComponent } from './my.component';23const fixture = createHostFactory(MyComponent);24import { createHostFactory } from 'ng-mocks';25import { MyComponent } from './my.component';26const fixture = createHostFactory(MyComponent);27import { createHostFactory } from 'ng-mocks';28import { MyComponent } from './my.component';29const fixture = createHostFactory(MyUsing AI Code Generation
1var changeTouch = ngMocks.default.changeTouch;2var fixture = ngMocks.default.initTest(TestComponent);3var inputEl = fixture.debugElement.query(By.css('.input')).nativeElement;4changeTouch(inputEl, 'touchstart');5inputEl.value = 'my input value';6changeTouch(inputEl, 'touchend');7changeTouch(inputEl, 'touchcancel');8changeTouch(inputEl, 'touchmove');9changeTouch(inputEl, 'touchleave');10changeTouch(inputEl, 'touchenter');11changeTouch(inputEl, 'touchstart');12changeTouch(inputEl, 'touchend');13changeTouch(inputEl, 'touchcancel');14changeTouch(inputEl, 'touchmove');15changeTouch(inputEl, 'touchleave');16changeTouch(inputEl, 'touchenter');17var inputEl = fixture.debugElement.query(By.css('.input')).nativeElement;18changeTouch(inputEl, 'touchstart');19inputEl.value = 'my input value';20changeTouch(inputEl, 'touchend');21changeTouch(inputEl, 'touchcancel');22changeTouch(inputEl, 'touchLearn 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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
