How to compile the code
Prerequisites
In order to build the TypeScript compiler, ensure that you have Git and Node.js installed.
Steps
First, get the latest version of the code from Github, either using the clone button from the web, or using the command line.
$ git clone https://github.com/crisfervil/DynamicsNode.gitThen, cd into the cloned directory
$ cd DynamicsNodeInstall dependencies using npm
$ npm installRun the build script
$ npm run buildHow to run tests
Use the default npm command for testing.
$  npm testDebug
In order to see debug information in console, type following command:
set DEBUG=dynamicsnodeYou should see debug information like this:
  dynamicsnode Exporting account to accounts.xml +0ms
  dynamicsnode Getting metadata... +0ms
  dynamicsnode Getting data... +1s
  dynamicsnode Saving... +531ms
  dynamicsnode done! +32msIntegration Tests
In order to run the integration tests, first clone and compile the code as described above.
Then, you need create a config.json file in the root of DynamicsNode folder.
The config.json must have the following format:
{
    "connectionStrings":
    {
        "IntegrationTestsOnline":"Url=https://contoso.crm4.dynamics.com; Username=admin@contoso.onmicrosoft.com; Password=YourPassword;"
    }
}You need to create a connection string named "IntegrationTestsXXXX" where XXXX is whatever name you want to use to indentify your connection.
After doing that, just re-run tests script with npm.
$  npm testYou should see something like this:
c:\GitHub\DynamicsNode>npm test
> dynamicsnode@0.0.4 test c:\GitHub\DynamicsNode
> mocha --recursive
  CRMClient
    √ Throws an exception with an invalid connection (169ms)
    √ Tells who I am (148ms)
    √ Creates a record (153ms)
    √ Deletes a record (147ms)
    √ Updates a record (137ms)
    √ Associates two records (169ms)
    √ Disassociates two records (163ms)
    √ Gets entity metadata (153ms)
  DataTable
    √ Initializes from an existing Array
    √ Loads and read JSON data
    √ Loads and reads XML data
  Fetch
    √ Serializes a simple Fetch
    √ Serializes a simple Fetch with conditions
    √ Serializes a complex Fetch
  Guid
    √ Creates an instance of non empty Guid
    √ Creates an instance of empty Guid
    √ Creates an instance from a string
    √ Validates Guid format on creation
    √ Generates new Guids
    √ Compares two different Guids
    √ Compares two equal Guids
    √ Compares a Guid value with a string
  Integration tests: IntegrationTestsOnline
    √ Throws an exception with an invalid connection (169ms)
    √ Creates an account (937ms)
    √ Updates an account (588ms)
    √ Updates an account using a criteria (1740ms)
    √ Knows Who I am (68ms)
    √ Performs a simple retrieve (139ms)
    √ Performs a retrieve that doesnt returns any records (134ms)
    √ Performs a retrieve that doesnt returns any records using a GUID (100ms)
    √ Performs a retrieve with specific columns (139ms)
    √ Performs a retrieve with all columns (131ms)
    √ Performs a "retrieve all" of an entity (134ms)
    √ Performs a simple retrieve multiple (185ms)
    √ Performs a retrieve all (154ms)
    √ Associates and Disassociates a lead and an contact (434ms)
    √ Associates and Disassociates a lead and an contact using a DataTable (440ms)
    √ Gets entity metadata
    - Export and import users to a File
  38 passing (7s)
  1 pending