Skip to content
This repository has been archived by the owner on Apr 13, 2018. It is now read-only.

📖  Generates a mock Xrm.Page object. Commonly used by xrm-mock to test Dynamics 365 client-side customisations.

Notifications You must be signed in to change notification settings

camelCaseDave/xrm-mock-generator

Repository files navigation

29/03/18 This project is no longer being maintained. It has been merged into xrm-mock.

📖 xrm-mock-generator

Generates a mock Xrm.Page object.

Commonly used by xrm-mock to test Dynamics 365 client-side customisations.

Usage

  • install via npm install xrm-mock-generator

  • import var XrmMockGenerator = require("xrm-mock-generator");

  • initialise a global Xrm object var Xrm = XrmMockGenerator.initialise();

You now have a global Xrm object, as if you had loaded a form in CRM.

Add additional attributes

Create a string attribute and add it to global.Xrm

var stringAttribute = XrmMockGenerator.Attribute.createString("firstname", "Joe");

Boolean Attribute

var boolAttribute = XrmMockGenerator.Attribute.createBool("new_havingFun", true);

Date Attribute

var dateAttribute = XrmMockGenerator.Attribute.createDate("birthdate", new Date(1980, 12, 25));

DateTime Attribute

var dateTimeAttribute = XrmMockGenerator.Attribute.createDateTime("birthdate", new Date(1980, 12, 25));

Number Attribute

var numberAttribute = XrmMockGenerator.Attribute.createNumber("units", 2, 0, 10, 0);

OptionSet Attribute

var optionSetAttribute = XrmMockGenerator.Attribute.createOptionSet("countries", [
    { "Austria" : 0 },
    { "France", : 1 },
    { "Spain", 2 }
]);

Lookup Attribute

var lookupAttribute = XrmMockGenerator.Attribute.createLookup("primarycustomerid", {
  id: "{00000000-0000-0000-0000-000000000000}",
  entityType: "contact",
  name: "Joe Bloggs"
});

Example

This example showcases a contact form that changes the contact's firstname from Joe to Bob when the form is loaded.

src/contact.js

(function () {
    "use strict";
    
    var Contact = () => {  };
    
    Contact.prototype.onLoad = function () {
        Xrm.Page.getAttribute("firstname").setValue("Bob");
    }
    
    // node
    module.exports = new Contact();
    
    // browser
    global.Contact = new Contact();    
}());

test/contact.test.js

describe("Contact Form", () => {
    var XrmMockGenerator = require("xrm-mock-generator");
    var ContactForm = require("../src/contact.js");
    
    beforeEach(() => {
        XrmMockGenerator.initialise();
        XrmMockGenerator.createString("firstname", "Joe");
    });
    
    describe("default", () => {
        expect(Xrm.Page.getAttribute("firstname").getValue()).toBe("Joe"); // true
    });
    
    describe("onLoad", () => {
        Contact.onLoad();        
        expect(Xrm.Page.getAttribute("firstname").getValue()).toBe("Bob"); // true
    });
});

❤️  Roadmap

  • Automatically create attribute metadata from a Dynamics 365 instance
  • Create a d.ts file so that the project is consumable via TypeScript

About

📖  Generates a mock Xrm.Page object. Commonly used by xrm-mock to test Dynamics 365 client-side customisations.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published