Moretesting

Wrote some tests to deal with non-typed and empty string phone numbers.  I tried testing for vars.lead.phone_1 != '' but for whatever it didn't handle that as expected, so I changed to testing for the min length of a phone number that might possibly make sense.  
Here's the summary, of what you want to accomplish, as I understand it. Please let me know if I'm misunderstanding something.

* You don't want to assign CellPhone or HomePhone an empty string
* You test this by providing an empty string for `phone_2`, and asserting that the value of CellPhone is set to `phone_1`
* Your code needs to avoid setting an empty string on CellPhone or HomePhone

The types package builds String objects so that it can set component properties on them (such as area code and exchange). The empty string test is failing because you are comparing a String object (the phone number) to the primitive empty string.

```coffeescript
new String('') == ''
# => false
```

In CoffeeScript the `==` operator is compiled to the `===` JavaScript operator.  If you try this operation in JavaScript it fails:

```javascript
new String('') === ''
// => false
```

Where as the `==` JavaScript operator works as you expect:

```javascript
new String('') == ''
// => true
```

Since it's not possible to use the `==` operator in CoffeeScript, the work around is to use `toString()` to coerce the phone number String object to a primitive in order to do the equality comparison:

You could try something like this:

```coffeescript
# get rid of phone numbers that are empty
delete vars.lead.phone_1 if vars.lead.phone_1.toString()  == ''
delete vars.lead.phone_2 if vars.lead.phone_2.toString()  == ''

# set CellPhone phone number, preferring phone_2
body.CellPhone = formatPhone(vars.lead.phone_2 or vars.lead.phone_1)
```