 		}
 		waitForExpectations(timeout: 10.0, handler: nil)
 	}
-
+	
+	func testThatItFailsToDescribe() {
+		// Given
+		let type = "A Nonexistent Object"
+		
+		// When
+		let exp = expectation(description: "Describe nonexistent object")
+		salesforce.describe(type: type)
+			.then {
+				// Then
+				desc -> () in
+				XCTFail()
+			}.catch {
+				error in
+				debugPrint(error)
+				exp.fulfill()
+		}
+		waitForExpectations(timeout: 10.0, handler: nil)
+		
+	}
+	
+	func testThatItDescribesMultipleObjects() {
+		
+		// Given
+		let types = ["Event", "Account", "Contact", "Lead", "Task"]
+		
+		// When 
+		let exp = expectation(description: "Describe multiple objects")
+		first {
+			salesforce.describe(types: types)
+		}.then {
+			result -> () in
+			XCTAssertEqual(result.count, types.count)
+			XCTAssertEqual(result.map { $0.name }, types)
+			exp.fulfill()
+		}.catch {
+			error in
+			XCTFail("\(error)")
+		}
+		waitForExpectations(timeout: 10.0, handler: nil)
+	}
+	
+	func testThatItFailsToDescribesMultipleObjects() {
+		
+		// Given
+		let types = ["Event", "XXXXXXXXX", "Contact", "Lead", "Task"]
+		
+		// When
+		let exp = expectation(description: "Describe multiple objects")
+		first {
+			salesforce.describe(types: types)
+			}.then {
+				result -> () in
+				XCTFail()
+			}.catch {
+				error in
+				debugPrint(error)
+				exp.fulfill()
+		}
+		waitForExpectations(timeout: 10.0, handler: nil)
+	}
 }

		waitForExpectations(timeout: 10.0, handler: nil)
	}
	
	func testThatItDescribes() {
		
		// Given

				XCTFail("\(error)")
		}
		waitForExpectations(timeout: 5.0, handler: nil)
	}
	
	func testThatItRunsMultipleQueries() {
		
		// Given
		let soqls = ["SELECT Id FROM Account WHERE CreatedDate > NEXT_YEAR", "SELECT Id FROM Contact", "SELECT Id FROM Lead"]
		
		// When
		let exp = expectation(description: "Query")
		salesforce.query(soql: soqls)
			.then {
				// Then
				result -> () in
				debugPrint(result)
				XCTAssertEqual(result.count, 3)
				XCTAssertTrue(result[0].isDone)
				XCTAssertEqual(result[0].totalSize, 0)
				exp.fulfill()
			}.catch {
				error in
				XCTFail("\(error)")
		}
		waitForExpectations(timeout: 10.0, handler: nil)
	}
	
	func testThatItRetrieves() {
