Added baseline for UsergridEntity and basic tests
diff --git a/lib/entity.js b/lib/entity.js
index e69de29..d7af669 100644
--- a/lib/entity.js
+++ b/lib/entity.js
@@ -0,0 +1,11 @@
+'use strict'
+
+var _ = require('underscore')
+
+var UsergridEntity = function(object) {
+    var self = this
+    _.extend(self, object)
+    return self
+}
+
+module.exports = UsergridEntity
\ No newline at end of file
diff --git a/lib/query.js b/lib/query.js
index 5153c10..2169803 100644
--- a/lib/query.js
+++ b/lib/query.js
@@ -9,6 +9,7 @@
 var UsergridQuery = function(type) {
 
     var query = '',
+        queryString,
         sort
 
     var __nextIsNot = false
@@ -68,7 +69,7 @@
             return self
         },
         fromString: function(string) {
-            self._ql = string
+            queryString = string
             return self
         },
         andJoin: function(append) {
@@ -95,7 +96,7 @@
     // public accessors
     Object.defineProperty(self, '_ql', {
         get: function() {
-            return util.format('select * where %s%s', query || '', sort || '')
+            return queryString || util.format('select * where %s%s', query || '', sort || '')
         }
     })
 
diff --git a/lib/response.js b/lib/response.js
index 0918f54..c51a254 100644
--- a/lib/response.js
+++ b/lib/response.js
@@ -1,6 +1,7 @@
 'use strict'
 
 var ok = require('objectkit'),
+    UsergridEntity = require('./entity.js'),
     helpers = require('../helpers'),
     _ = require('underscore')
 
@@ -8,7 +9,9 @@
 
 function UsergridResponse(response) {
     if (ok(response.body).has('entities')) {
-        var entities = response.body.entities
+        var entities = response.body.entities.map(function(entity) {
+            return new UsergridEntity(entity)
+        })
         _.extend(response, {
             metadata: _.extend({}, response.body),
             entities: entities
diff --git a/tests/lib/query.test.js b/tests/lib/query.test.js
index 437a42e..5d0617a 100644
--- a/tests/lib/query.test.js
+++ b/tests/lib/query.test.js
@@ -28,7 +28,7 @@
 })
 
 describe('_ql', function() {
-    it('should support complex builder syntax (chained constructor methods)', function() {
+    it('should support complex builder pattern syntax (chained constructor methods)', function() {
         var query = new UsergridQuery('cats')
             .gt('weight', 2.4)
             .contains('color', 'bl*')
@@ -46,6 +46,13 @@
         query.should.have.property('_ql').equal("select * where not color = 'white'")
     })
 
+    it('fromString should set _ql directly, bypassing builder pattern methods', function() {
+        var q = "where color = 'black' or color = 'orange'"
+        var query = new UsergridQuery('cats')
+            .fromString(q)
+        query.should.have.property('_ql').equal(q)
+    })
+
     it('string values should be contained in single quotes', function() {
         var query = new UsergridQuery('cats')
             .eq('color', 'black')
diff --git a/tests/lib/response.test.js b/tests/lib/response.test.js
new file mode 100644
index 0000000..37f2eb8
--- /dev/null
+++ b/tests/lib/response.test.js
@@ -0,0 +1,79 @@
+'use strict'
+
+var should = require('should'),
+    config = require('../../config.json'),
+    UsergridClient = require('../../lib/client'),
+    UsergridEntity = require('../../lib/entity')
+
+var _collection = config.tests.collection
+var _uuid = null
+var client = new UsergridClient()
+
+describe('headers', function() {
+
+    this.slow(1000)
+    this.timeout(6000)
+
+    it('should be an object', function(done) {
+        client.GET(_collection, function(err, usergridResponse) {
+            usergridResponse.headers.should.be.an.Object().with.property('content-type')
+            done()
+        })
+    })
+})
+
+describe('statusCode', function() {
+
+    this.slow(1000)
+    this.timeout(6000)
+
+    it('should be a number', function(done) {
+        client.GET(_collection, function(err, usergridResponse) {
+            usergridResponse.statusCode.should.be.a.Number()
+            done()
+        })
+    })
+})
+
+describe('entities', function() {
+
+    this.slow(1000)
+    this.timeout(6000)
+
+    it('should be an array of UsergridEntity objects', function(done) {
+        client.GET(_collection, function(err, usergridResponse) {
+            usergridResponse.entities.should.be.an.Array()
+            usergridResponse.entities.forEach(function(entity) {
+                entity.should.be.an.instanceof(UsergridEntity)
+            })
+            done()
+        })
+    })
+})
+
+describe('first / entity', function() {
+
+    this.slow(1000)
+    this.timeout(6000)
+
+    var response, uuid
+
+    before(function(done) {
+        client.GET(_collection, function(err, usergridResponse) {
+            response = usergridResponse
+            done()
+        })
+    })
+
+    it('response.first should be a UsergridEntity object and have a valid uuid', function(done) {
+        response.first.should.be.an.instanceof(UsergridEntity).with.property('uuid').with.a.lengthOf(36)
+        uuid = response.first.uuid
+        done()
+    })
+
+    it('response.entity should be a UsergridEntity object and have a valid uuid', function(done) {
+        response.entity.should.be.an.instanceof(UsergridEntity).with.property('uuid').with.a.lengthOf(36)
+        response.entity.uuid.should.equal(uuid)
+        done()
+    })
+})
\ No newline at end of file
diff --git a/tests/main.js b/tests/main.js
index b1a5b63..f9061e0 100644
--- a/tests/main.js
+++ b/tests/main.js
@@ -10,4 +10,8 @@
 
 describe('UsergridQuery', function() {
     return require('./lib/query.test')
+})
+
+describe('UsergridResponse', function() {
+    return require('./lib/response.test')
 })
\ No newline at end of file