Tutorial 4 - phuocle/Dynamics-Crm-DevKit GitHub Wiki
Task
- Create Javascript Unit Test WebResource
Prerequisites
- Finish Tutorial 1: Plugin
- Finish Tutorial 2: Unit Test Plugin
- Finish Tutorial 3: WebResource
Coding
- Add
New Item09. JavaScript Testtotestfolder ofPaz.LuckeyMonkey.WebResourceproject- A popup form
Add new Js Test Classopened - Click button
><to create/select a Dynamics 365 connection - After connected
PL.DynamicsCrm.DevKitloaded all entities and bind to dropdownEntity - Select
Leadin theEntity - Click
OK
- A popup form
PL.DynamicsCrm.DevKitcreatedLead.test.jsfile under foldertest- Rebuild solution to restore
NuGetpackages - Make sure you have
node_modulesin the projectPaz.LuckeyMonkey.WebResource, ifNOTyou should runnpm installin theCommand Windows Promtof the project folderPaz.LuckeyMonkey.WebResource - Back to the
Lead.jsfile and edit the return value of variableformLeadlike bellow
return {
OnLoad: onLoad,
OnSave: onSave,
__SubjectAddOnChange__: SubjectAddOnChange,
__PhoneAddOnChange__: PhoneAddOnChange
};
- Edit the
Lead.test.js
///<reference path="../entities/Lead.intellisense.js" />
///<reference path="mock.intellisense.js" />
define(['xrm-mock', 'sinon'], function (xrm_mock, sinon) {
var mock = new DevKitXrmMock(xrm_mock, "lead");
var server = new DevKitServerMock(sinon);
describe('Lead.js Test', function () {
it("OnLoad - FormCreate", function () {
//setup
mock.FormType = OptionSet.FormType.Create;
mock.Field("subject", "hello");
mock.Field("telephone1", "123");
mock.Field("mobilephone", "456");
//execute
formLead.OnLoad();
formLead.__SubjectAddOnChange__();
formLead.__PhoneAddOnChange__();
//result
var form = new LuckeyMonkey.FormLead();
expect(form.Body.Subject.Disabled).toBe(false);
expect(form.Body.Subject.Value).toBe("HELLO");
expect(form.Body.Telephone1.RequiredLevel).toBe(OptionSet.FieldRequiredLevel.Required);
expect(form.Body.MobilePhone.RequiredLevel).toBe(OptionSet.FieldRequiredLevel.Required);
//setup again
form.Body.Telephone1.Value = null;
form.Body.MobilePhone.Value = null;
//run again
formLead.__PhoneAddOnChange__();
//result again
expect(form.Body.Telephone1.RequiredLevel).toBe(OptionSet.FieldRequiredLevel.None);
expect(form.Body.MobilePhone.RequiredLevel).toBe(OptionSet.FieldRequiredLevel.None);
});
it("OnLoad - FormEdit", function () {
//setup
mock.Field("subject", "hello");
mock.FormType = OptionSet.FormType.Update;
//execute
formLead.OnLoad();
//result
var form = new LuckeyMonkey.FormLead();
expect(form.Body.Subject.Disabled).toBe(true);
});
});
});
- Please
DON'Tcopy/paste code. Trytypingto getintellisensethatPL.DynamicsCrm.DevKitsupport - Right-click on code window
Lead.test.jsand selectRun JS Testsmenu of theChutzpah Extensionsand you get the result below
------ Test started: File: C:\src\github\Dynamics-Crm-DevKit\tutorials\Paz.LuckeyMonkey.WebResource\test\Lead.test.js ------
2 passed, 0 failed, 2 total (chutzpah).
========== Total Tests: 2 passed, 0 failed, 2 total ==========
- You can run view the
code coverageby select menuRun Chutzpah With>Coverage - Check-in all files to your source control
- You finished this tutorial
Summary
This tutorial, you know howto