Best JavaScript code snippet using ng-mocks
LinkModel.ts
Source:LinkModel.ts
1import {ParamsContainer, Terminus, WidgetModel} from './WidgetModel';2import {EditModePipelineModel} from './EditModePipelineModel';3import {action, observable, computed} from 'mobx';4import uuidv1 from 'uuid/v1';5import {ILinkParamDef, IPipelineLink, IPipelineTerminusLink} from '../PipelineTools/PipelineEditor/interfaces';6import {EditModeCanvasStore} from '../PipelineTools/PipelineEditor/stores/EditModeCanvasStore';7import {isFieldEmpty} from '../PipelineTools/PipelineEditor/EditCanvasUtils';8/**9 * 两个èç¹é´å¯è½A->Bï¼ä¹å¯è½B->Aï¼å 为æ们è¦ç»è®¡AåBä¹é´ä¸å
±æå¤å°æ¡ååè·¯å¾ï¼10 * å³è®¤å®ä»ä¸ºæ åå¾ï¼ç»§èå¯ä»¥ç®åºæ¯æ¡æ²çº¿ç弧度11 */12export class PairedLink {13 @observable public links: PipelineLink[] = [];14 private constructor(public node1: WidgetModel, public node2: WidgetModel) {15 }16 public isSelfLink() {17 return this.node1 === this.node2;18 }19 public static newPair(link: PipelineLink) {20 const n1 = link.input;21 const n2 = link.output;22 if (n1.id < n2.id) {23 return new PairedLink(n1, n2);24 } else {25 return new PairedLink(n2, n1);26 }27 }28 public static compoundId(n1: WidgetModel, n2: WidgetModel) {29 if (n1.id < n2.id) {30 return n1.id + ':' + n2.id;31 } else {32 return n2.id + ':' + n1.id;33 }34 }35 public addLink(link: PipelineLink) {36 this.links.push(link);37 }38}39export class TerminusLink {40 public static UNKNOWN_ID = 'unknown_terminus_link';41 public id: string;42 public input: Terminus;43 public output: WidgetModel;44 public params: ParamsContainer = new ParamsContainer();45 private constructor() {46 }47 public static newTerminusLink(input: Terminus, output: WidgetModel) {48 const ret = new TerminusLink();49 ret.input = input;50 ret.output = output;51 ret.id = uuidv1();52 return ret;53 }54 public getValue(str: string) {55 return this.params.getValue(str);56 }57 toJson(): IPipelineTerminusLink {58 return {59 id: this.id,60 from_node_id: this.output.id,61 to_terminus_id: this.input.id,62 params: this.params.toJson(),63 };64 }65 toSimpleJson() {66 return {67 id: this.id,68 from_node_id: this.output.id,69 to_terminus_id: this.input.id,70 };71 }72 static fromJson(pipelineModel: EditModePipelineModel, json: IPipelineTerminusLink) {73 const ret = new TerminusLink();74 ret.id = json.id;75 if (!ret.id || ret.id === TerminusLink.UNKNOWN_ID) {76 ret.id = uuidv1();77 }78 ret.input = pipelineModel.terminusArray.find(t => t.id === json.to_terminus_id)!;79 ret.output = pipelineModel.widgets.find(w => w.id === json.from_node_id)!;80 ret.params = ParamsContainer.fromJson(json.params);81 return ret;82 }83}84// apiè¿åçpipelineçä¸æ¡è¿æ¥85export class PipelineLink {86 public input: WidgetModel;87 public output: WidgetModel;88 public id: string;89 public createTime: number;90 @observable public name: string = '';91 public params: ParamsContainer = new ParamsContainer();92 @observable public checkFormFailed: boolean = false;93 constructor(public store: EditModeCanvasStore) {94 }95 @computed96 get linkParamDefs() {97 if (this.store!.parent.canvasConfig.callbacks.getLinkParamDefs) {98 return this.store!.parent.canvasConfig.callbacks.getLinkParamDefs(this.store, this);99 }100 return null;101 }102 @action103 public fromJson(json: IPipelineLink, skipDef: boolean) {104 const paramsMap = json.params || {};105 this.params.initWith(paramsMap);106 this.name = json.name || '';107 this.id = json.link_id || uuidv1();108 this.createTime = json.create_time || +new Date();109 if (this.linkParamDefs && !skipDef) {110 const paramDefs = this.linkParamDefs;111 // å¦æapiç»è¿æ¥å®ä¹äºæ°å±æ§ï¼ä½æ¯æ°æ®åºçèæ°æ®éè¯å®æ²¡æè¿ä¸ªå¼ï¼å¨è¿éå¡«ä¸112 for (const param of paramDefs) {113 const key = param.name || '';114 if (!this.params.has(key)) {115 this.params.setValue(key, param.value_default);116 }117 }118 }119 return this;120 }121 @action122 public setCheckFormFailed(val: boolean) {123 this.checkFormFailed = val;124 }125 public checkForm() {126 if (isFieldEmpty(this.name) || isFieldEmpty(this.id)) {127 this.setCheckFormFailed(true);128 return false;129 }130 // æ£æ¥æ¯ä¸ªå¿
å¡«åæ°æ¯å¦å¡«åäº131 const linkParams = this.linkParamDefs || [];132 for (const def of linkParams) {133 const value = this.params.getValue(def.name || '');134 if (def.required && isFieldEmpty(value)) {135 this.setCheckFormFailed(true);136 return false;137 }138 }139 return true;140 }141 @action142 public setName(val: string) {143 this.name = val;144 }145 public getValue(str: string, raw = false) {146 if (str === 'name') {147 return this.name;148 } else if (str === 'id') {149 return this.id;150 } else {151 return raw ? this.params.getRawValue(str) : this.params.getValue(str);152 }153 }154 @action155 public initInputsOutPuts(pipeline: EditModePipelineModel, json: IPipelineLink) {156 this.output = pipeline.widgets.find((w) => w.id === json.from_node_id)!;157 this.input = pipeline.widgets.find((w) => w.id === json.to_node_id)!;158 // inputæè
outputç±äºwidgetDefä¸åå¨è¢«è¿æ»¤ï¼æè
from_node_idåto_node_idä¸åæ³æ¶159 if (!this.output.isNodeTypeExist() || !this.input.isNodeTypeExist()) {160 this.store!.definitionMissing = true;161 return null;162 }163 return this;164 }165 @action166 public fromParamDefs(def: ILinkParamDef[]) {167 for (const paramDef of def) {168 if (paramDef.name) {169 this.params.setValue(paramDef.name, paramDef.value_default);170 }171 }172 return this;173 }174 public static newPipelineLink(store: EditModeCanvasStore, input: WidgetModel, output: WidgetModel) {175 const ret = new PipelineLink(store);176 ret.input = input;177 ret.output = output;178 ret.id = uuidv1();179 return ret;180 }181 public toJson() {182 const fromId = this.output ? this.output.id : '';183 const toId = this.input ? this.input.id : '';184 // apiè¿åçæ°æ®éå¯è½ä¸æ¡è¿æ¥çinputæè
outputä¸åå¨ï¼è¿ç§è¿æ¥éè¦è¿æ»¤å¹¶ä¸ç»åºè¦å185 if (!fromId || !toId) {186 console.warn(`Link ${name} does not have its input(${fromId}) or output(${toId})`);187 }188 return {189 from_node_id: fromId,190 to_node_id: toId,191 link_id: this.id,192 name: this.name,193 create_time: this.createTime,194 params: this.params.toJson(),195 checkFormFailed: this.checkFormFailed,196 };197 }198 public toSimpleJson() {199 const fromId = this.output ? this.output.id : '';200 const toId = this.input ? this.input.id : '';201 return {202 from_node_id: fromId,203 to_node_id: toId,204 link_id: this.id,205 name: this.name,206 checkFormFailed: this.checkFormFailed,207 };208 }...
mock-helper.guts.ts
Source:mock-helper.guts.ts
...83 }84 data.imports.push(data.keep.has(def.ngModule) ? def : MockModule(def));85};86const handleDeclaration = (data: Data, def: any, callback: any, bucket: any[]): void => {87 if (skipDef(def, data.skip, data.exclude)) {88 return;89 }90 bucket.push(data.keep.has(def) ? def : callback(def));91};92const handleDestructuring = (data: Data, def: any, callback: any): void => {93 if (skipDef(def, data.skip, data.exclude)) {94 return;95 }96 const meta = coreReflectModuleResolve(def);97 for (const toMock of flatten([meta.declarations, meta.imports])) {98 callback(data, toMock);99 }100 for (const toMock of meta.providers ? flatten(meta.providers) : []) {101 resolveProvider(data, toMock);102 }103};104const resolveProvider = ({ skip, keep, providers, exclude }: Data, def: any): void => {105 const provider = funcGetProvider(def);106 skip.add(provider);107 if (exclude.has(provider)) {...
ModelHandler.ts
Source:ModelHandler.ts
1import { FieldValue } from '@google-cloud/firestore';2import { Collection } from '../Collection';3import { Storage } from '../Metadata';4import { Constructor, ModelConstructor, ModelData } from '../types';5import { constructorName, isSubModelInstance } from '../utils';6import { Model } from './Model';7export const ModelHandler = {8 get(obj: Model, prop: string): unknown {9 if (typeof prop === 'string' && obj[prop] && obj[Symbol.for('tracking')] &&10 (obj[prop].constructor === Object || isSubModelInstance(obj[prop]))11 ) {12 if (!obj[prop][Symbol.for('model')]) {13 Object.defineProperty(obj[prop], Symbol.for('model'), {14 value: obj,15 writable: true,16 });17 Object.defineProperty(obj[prop], Symbol.for('prop'), {18 value: prop,19 writable: true,20 });21 }22 return new Proxy(obj[prop], ObjectWatcher);23 }24 return obj[prop];25 },26 set(obj: Model, prop: string, value: unknown): boolean {27 // Prevent from overwriting methods.28 if (typeof obj[prop] === 'function') {29 return true;30 }31 if (typeof prop === 'string') {32 // Skip the Model default values already assigned by the parent the constructor.33 if (obj[Symbol.for('skipDef')] && obj[Symbol.for('skipDef')][prop] !== undefined) {34 delete obj[Symbol.for('skipDef')][prop];35 return true;36 }37 // TODO: Implement nested conversion for Object (this will be done later).38 if (value && ['Array', 'Number', 'String', 'Object'].includes(value.constructor.name)) {39 const schema = (obj.constructor as ModelConstructor).getSchema();40 if (schema[prop]) {41 const rules = schema[prop];42 // Single Reference.43 if (rules.type === 'Reference') {44 if (typeof value === 'string') {45 value = (rules.model as ModelConstructor).ref(value);46 } else if (value.constructor === Object) {47 value = new rules.model(value);48 }49 }50 // Sub model.51 else if (rules.type === 'SubModel') {52 if (value && value.constructor === Object) {53 value = instantiateSchema(rules.model, value);54 }55 }56 // Array of references.57 else if (rules.type === 'Array' && rules.of === 'Reference' && value instanceof Array) {58 value.forEach((item, i) => {59 if (typeof item === 'string') {60 value[i] = (rules.model as ModelConstructor).ref(item);61 } else if (item && item.constructor === Object) {62 value[i] = new rules.model(item);63 }64 });65 }66 // Date.67 else if (rules.type === 'Date' && (typeof value === 'string' || typeof value === 'number')) {68 const date = new Date(value);69 value = isNaN(date.getTime()) ? value : date;70 }71 // Sub-collection72 else if (rules.type === 'Collection' && constructorName(value) !== 'Collection' && Array.isArray(value)) {73 value = new Collection((rules.model as ModelConstructor), null, value);74 }75 }76 }77 // Keep track of changes.78 if (obj[Symbol.for('tracking')]) {79 obj[Symbol.for('changes')][prop] = value;80 }81 }82 obj[prop] = value;83 return true;84 },85 deleteProperty(obj: Model, prop: string): boolean {86 if (prop in obj) {87 if (obj[Symbol.for('tracking')]) {88 obj[Symbol.for('changes')][prop] = FieldValue.delete();89 }90 delete obj[prop];91 }92 return true;93 },94};95/**96 * Keep track of changes recursively.97 */98const ObjectWatcher = {99 get(obj: Record<symbol, unknown>, prop: string) {100 if (typeof prop === 'string' && obj[prop] &&101 (obj[prop].constructor === Object || isSubModelInstance(obj[prop]))102 ) {103 Object.defineProperty(obj[prop], Symbol.for('model'), {104 value: obj[Symbol.for('model')],105 writable: true, 106 });107 Object.defineProperty(obj[prop], Symbol.for('prop'), {108 value: obj[Symbol.for('prop')],109 writable: true,110 });111 return new Proxy(obj[prop], ObjectWatcher);112 }113 return obj[prop];114 },115 set(obj: Record<symbol, unknown>, prop: string, value: unknown) {116 this.recordChange(obj);117 obj[prop] = value;118 return true;119 },120 deleteProperty(obj: Record<string, unknown>, prop: string) {121 if (prop in obj) {122 this.recordChange(obj);123 }124 delete obj[prop];125 return true;126 },127 recordChange(obj: Record<symbol, unknown>) {128 const model = obj[Symbol.for('model')];129 model[Symbol.for('changes')][obj[Symbol.for('prop')]] = model[obj[Symbol.for('prop')]];130 },131};132/**133 * Instantiate sub-models recursively134 */135const instantiateSchema = (model: Constructor, value: ModelData): InstanceType<Constructor> => {136 const schema = Storage.getModelSchema(model);137 const instance = new model();138 Object.keys(value).forEach(key => {139 if (value && value.constructor === Object && schema && schema[key] && schema[key].type === 'SubModel') {140 instance[key] = instantiateSchema(schema[key].model, value[key]);141 } else {142 instance[key] = value[key];143 }144 });145 return instance;...
Using AI Code Generation
1import { skipDef } from 'ng-mocks';2import { MockBuilder } from 'ng-mocks';3import { MockRender } from 'ng-mocks';4import { MockInstance } from 'ng-mocks';5import { MockProvider } from 'ng-mocks';6import { MockRender } from 'ng-mocks';7import { MockRender } from 'ng-mocks';8import { MockRender } from 'ng-mocks';9import { skipDef } from 'ng-mocks';10import { MockBuilder } from 'ng-mocks';11import { MockRender } from 'ng-mocks';12import { MockInstance } from 'ng-mocks';13import { MockProvider } from 'ng-mocks';14import { MockRender } from 'ng-mocks';15import { MockRender } from 'ng-mocks';16import { MockRender } from 'ng-mocks';17import { skipDef } from 'ng-mocks';18import { MockBuilder } from 'ng-mocks';19import { MockRender } from 'ng-mocks';20import { MockInstance } from 'ng-mocks';21import { MockProvider } from 'ng-mocks';22import { MockRender
Using AI Code Generation
1import { skipDef } from 'ng-mocks';2skipDef('my-component');3import { skipDef } from 'ng-mocks';4skipDef('my-component');5skipDef('my-component');6skipDef(['my-component', 'my-second-component']);7skipComponentDeclaration('my-component');8skipComponentDeclaration(['my-component', 'my-second-component']);9skipComponentDeclaration('my-component');10skipComponentDeclaration(['my-component', 'my-second-component']);
Using AI Code Generation
1import { skipDef } from 'ng-mocks';2const skip = skipDef;3import { skipDef } from 'ng-mocks';4const skip = skipDef;5import { skipDef } from 'ng-mocks';6const skip = skipDef;7import { skipDef } from 'ng-mocks';8const skip = skipDef;9import { skipDef } from 'ng-mocks';10const skip = skipDef;11import { skipDef } from 'ng-mocks';12const skip = skipDef;13import { skipDef } from 'ng-mocks';14const skip = skipDef;15import { skipDef } from 'ng-mocks';16const skip = skipDef;17import { skipDef } from 'ng-mocks';18const skip = skipDef;19import { skipDef } from 'ng-mocks';20const skip = skipDef;21import { skipDef } from 'ng-mocks';22const skip = skipDef;23import { skipDef } from 'ng-mocks';24const skip = skipDef;25import { skipDef } from 'ng-mocks';26const skip = skipDef;27import { skipDef } from 'ng-mocks';28const skip = skipDef;29import { skipDef } from 'ng-mocks';30const skip = skipDef;31import { skipDef } from 'ng-mocks';32const skip = skipDef;
Using AI Code Generation
1import { skipDef } from 'ng-mocks';2describe('skipDef', () => {3 it('should skip the definition of the component', () => {4 const component = skipDef(TestComponent);5 expect(component).toBeTruthy();6 });7});
Using AI Code Generation
1import { skipDef } from 'ng-mocks';2class MockClass {3 public mockMethod() {4 return 'mock';5 }6}7const mock = new MockClass();8skipDef(mock, 'mockMethod');9console.log(mock.mockMethod());10import { MockInstance } from 'ng-mocks';11class MockClass {12 public mockMethod() {13 return 'mock';14 }15}16const mock = MockInstance(MockClass);17console.log(mock.mockMethod());18import { MockInstance } from 'ng-mocks';19class MockClass {20 public mockMethod() {21 return 'mock';22 }23}24const mock = MockInstance(MockClass, 'mockMethod');25console.log(mock.mockMethod());26import { MockInstance } from 'ng-mocks';27class MockClass {28 public mockMethod() {29 return 'mock';30 }31}32const mock = MockInstance(MockClass, 'mockMethod', 'mock');33console.log(mock.mockMethod());34import { MockInstance } from 'ng-mocks';35class MockClass {36 public mockMethod() {37 return 'mock';38 }39}40const mock = MockInstance(MockClass, {41 mockMethod: () => 'mock',42});43console.log(mock.mockMethod());44import { MockInstance } from 'ng-mocks';45class MockClass {46 public mockMethod() {47 return 'mock';48 }49}50const mock = MockInstance(MockClass, {51 mockMethod: () => 'mock',52}, 'mock');53console.log(mock.mockMethod());54import { MockInstance } from 'ng-mocks';55class MockClass {56 public mockMethod() {57 return 'mock';58 }59}60const mock = MockInstance(MockClass, {61 mockMethod: () => 'mock',62}, 'mock', 'mock');63console.log(mock.mockMethod());64import { MockInstance }
Using AI Code Generation
1import { skipDef } from 'ng-mocks';2skipDef(true);3import { MockBuilder, MockRender } from 'ng-mocks';4import { AppModule } from './app.module';5import { AppComponent } from './app.component';6beforeEach(() => MockBuilder(AppComponent, AppModule));7it('should create the app', () => {8 const fixture = MockRender(AppComponent);9 const app = fixture.debugElement.componentInstance;10 expect(app).toBeTruthy();11});12it(`should have as title 'ng-mocks'`, () => {13 const fixture = MockRender(AppComponent);14 const app = fixture.debugElement.componentInstance;15 expect(app.title).toEqual('ng-mocks');16});17it('should render title', () => {18 const fixture = MockRender(AppComponent);19 fixture.detectChanges();20 const compiled = fixture.debugElement.nativeElement;21 expect(compiled.querySelector('.content span').textContent).toContain('ng-mocks app is running!');22});23it('should render title', () => {24 const fixture = MockRender(AppComponent);25 fixture.detectChanges();26 const compiled = fixture.debugElement.nativeElement;27 expect(compiled.querySelector('.content span').textContent).toContain('ng-mocks app is running!');28});29it('should render title', () => {30 const fixture = MockRender(AppComponent);31 fixture.detectChanges();32 const compiled = fixture.debugElement.nativeElement;33 expect(compiled.querySelector('.content span').textContent).toContain('ng-mocks app is running!');34});35it('should render title', () => {36 const fixture = MockRender(AppComponent);37 fixture.detectChanges();38 const compiled = fixture.debugElement.nativeElement;39 expect(compiled.querySelector('.content span').textContent).toContain('ng-mocks app is running!');40});41it('should render title', () => {42 const fixture = MockRender(AppComponent);43 fixture.detectChanges();44 const compiled = fixture.debugElement.nativeElement;45 expect(compiled.querySelector('.content span').textContent).toContain('ng-mocks app is
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.
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!!