I completed my Critical Path Training webinar earlier today. All in all, I think it went pretty well. There was a TON of material to cover, and as usual, not enough time to cover it all. I’ve posted the source code I showed to Git (https://github.com/Sector43/CPTJSWebinar) and you can clone it from here: https://github.com/Sector43/CPTJSWebinar.git.
In the webinar I showed a sample application which manipulated Views in SharePoint to show an icon in place of a column value based on the value of that column for the item in the view. It wasn’t a fancy demo, but the code has a lot of good stuff in it – including a full suite of tests, use of the revealing module pattern, IIFEs, defensive coding, dependency injection, etc.
Once you’ve pulled the code down, there are a few steps you’ll need to take to make everything work. As I said in the demo, this is not beginner-level stuff, so I’m assuming you’re familiar with VS, node, NuGet, etc. or can figure out what you need. Here’s a summary of what you need to do
- Install node – www.nodejs.org
- Add an environment variable for CHROME_BIN pointing to the folder where you have Chrome installed. You can also add one for FIREFOX_BIN if you’d like to use Firefox for testing in Karma.
- Add the Karma Visual Studio plugin from here: https://visualstudiogallery.msdn.microsoft.com/bfe6feb7-7ec4-4e8e-9d90-cf6ea2cd2169 (only if you want to see the test results in the VS Test Runner window).
- In Visual Studio, toggle the “Run Tests on Build” option on in the Test Explorer Window
- Restore NuGet packages
- Install node packages (from a command prompt in the root of your project):
- npm install karma-cli
- npm-install karma
- npm install karma-chrome-launcher
- npm install karma-xml-reporter
- npm-install karma-jasmine
- npm-install jasmine-jquery
Karma should now launch in a command window, launch Chrome and then run all of the tests in the project. They should all pass initially.
Feel free to kick the tires on the code and give it all a good workout. If you find bugs, please issue a pull request and I’ll work them back into the repo.
The LogManager and REST utilities are included in here but will eventually be wrapped into the SPClientLib project I’m working on (which will also be released on GitHub).
As I said in the webinar, this is what I would consider “production-ready” code, but PLEASE review it and understand what it is doing before using any piece of it as-is. It is released under the MIT license so you are free to use it for any purpose, but you must keep attributions intact and please share back any improvements.