Adding Font Awesome to ASP.NET Core Angular 2 Applications in Visual Studio 2017

If you're using Visual Studio 2017's SPA templates for Angular, no doubt you've wanted to add third-party libraries such as Font Awesome.  You could reference these dependencies in the index.html, but it would be better for performance if they were included in the webpack bundle.  If you've never worked with webpack before, this could initially be a little confusing.  But, don't worry as it's actually pretty simple.

Read more


Angular2+ SafeUrl Pipe

Instead of adding a function to the JavaScript of each of your components to properly display HTML links, use an Angular2 pipe.

Create a pipe service called safe-url.pipe.ts and add the following:

import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@Pipe({
  name: 'safeUrl'
})
export class SafeUrlPipe implements PipeTransform {
  constructor(private domSanitizer: DomSanitizer) {}
  transform(url) {
    return this.domSanitizer.bypassSecurityTrustResourceUrl(url);
  }
}

Next, inject the pipe service in your app.module.ts:

import { SafeUrlPipe } from './pipes/safe-url.pipe'; //make sure your safe-url.pipe.ts file path is matching.

And, in your Angular module declarations section:

@NgModule({ declarations: [SafeUrlPipe],...});

Now, to use in your view:

<div>
    <span>Skype: <a [href]="'sip:<johndoe@contoso.com>' | safeUrl">johndoe@contoso.com</a></span>
</div>

Adding Skype and Skype for Business HTML Links

Have you ever needed to add links into a web page that enabled a visitor to click to begin a chat or phone call with a Skype or Skype for business user? If you have the necessary plug-ins enabled in the browser, a phone number may be recognized automatically, but that can't always be guaranteed. There are native URI's to ensure that, if a site visitor has Skype or Skype for Business installed, a chat or phone call will be initialized.

Read more


Two Ways to Mock System.Web.HttpContext

The other day I was writing some unit tests for testing my MVC application's forms authentication classes.  I needed to Mock the System.Web.HttpContext object.  There are a couple of ways to do this depending on the version of Visual Studio you are using (i.e. Professional, Premium/Ultimate/Enterprise) and how deep you wish to provide some default data.   One takes a little more leg work and requires some manual data setting, but gives you greater control.  While the other requires less coding for simple basic use.

Read more


Fakes Issue with System.Web

The other day I was writing some unit tests on an MVC project.  I needed to mock (fake) an HttpRequest object using the System.Web assembly.  However, there was a strange issue in creating the fakes assembly and adding it to my Visual Studio solution.  Namely, it didn't show up.Read more


Automation Testing with SeleniumHQ

In an earlier post, I provided step-by-step instructions in how to perform Behavior Driven Development using Visual Studio, SpecFlow, WatiN and DryRunner.  However, I've had a lot of students and blog readers ask me about Selenium, a more-common browser automation tool.  So, I'm writing this post to show how to accomplish BDD and automated test driven development (ATDD) using Selenium.Read more


Behavior Driven Development with SpecFlow + WatiN + DryRunner

In the previous post, we examined some of the principles behind BDD.  If you read it, I'm sure you're thinking, "Wow! That's great! But, how do I accomplish this in Visual Studio?"  There are a myriad of posts on the Internet that demonstrate different components.  However, there's not really a single post with all of the information compiled.  For that reason, I'm going to provide a step-by-step tutorial on how to perform BDD with Visual Studio. Additionally, I will show you how to perform automated testing using your Gherkin scripts.

Read more


Using OLEDB with SQL Native Client

This week, while moving a client's VM to Windows Azure, I was also required to upgrade their database from SQL 2005 to SQL Azure.  While not extremely difficult, there were a few gotcha's along the way.  These "gotacha's" were primarily features that had been deprecated.  Those deprecated features aren't the purpose of blog post, however.  This post is addressing a connection string issue.

Read more


Why Unit Test?

As a Microsoft Certified Trainer over the past 2 years, I've had the opportunity of teaching hundreds of professionals how to properly engage in unit testing.  Amazingly enough, even though unit testing has been around quite a while, it is still a concept that is very infantile in the corporate arena.  Most developers who have adopted unit testing are those who work for start-ups or the few companies who've started to embrace agile methodologies executing test-driven development (TDD).

Read more


Custom Validation Errors in MVC

There are times where you may want to display custom validation error messages in MVC.  As for me, I'm not a huge fan of the classic ValidationSummary HTML helper.  I will still annotate my data model, but I want the errors to have a better presentation in the UI. Occasionally, I may want to display one error at a time.  In order to do all of this, there's a few steps that need to be implemented.

Read more