function rejected(oError) {
			assert.strictEqual(oError.canceled, true);
			assert.strictEqual(oError.message,
				"Request canceled: PATCH Products('0'); group: groupId");
		}
**************************************************************************************
	QUnit.test("hasChanges: correct for multiple change sets in one group", function (assert) {
		var oEntity = {},
			oRequestor = _Requestor.create("/Service/", oModelInterface);

		oRequestor.request("PATCH", "Products('0')", this.createGroupLock(),
			{"If-Match" : {}}, {Name : "foo"});
		oRequestor.addChangeSet("groupId");
		oRequestor.request("PATCH", "Products('0')", this.createGroupLock(),
			{"If-Match" : oEntity}, {Name : "bar"});

		//code under test
		assert.strictEqual(oRequestor.hasChanges("groupId", oEntity), true);
	});

	//*****************************************************************************************
	QUnit.test("hasChanges: correct for multiple change sets in one group w/o a match",
			function (assert) {
		var oEntity = {},
			oRequestor = _Requestor.create("/Service/", oModelInterface);

		oRequestor.request("PATCH", "Products('0')", this.createGroupLock(),
			{"If-Match" : {}}, {Name : "foo"});
		oRequestor.addChangeSet("groupId");
		oRequestor.request("PATCH", "Products('0')", this.createGroupLock(),
			{"If-Match" : {}}, {Name : "bar"});
		oRequestor.request("GET", "Employees", this.createGroupLock());

		//code under test
		assert.strictEqual(oRequestor.hasChanges("groupId", oEntity), false);
	});

	//*****************************************************************************************
	QUnit.test("hasPendingChanges: '$inactive.*' groups are no pending changes", function (assert) {
		var fnCancel = function () { throw new Error(); },
			oRequestor = _Requestor.create("/Service/", oModelInterface);

		// must not count as pending change
		oRequestor.request("POST", "ActionImport('42')", this.createGroupLock("$inactive.foo"),
			undefined, {}, undefined, fnCancel);

		// code under test
		assert.strictEqual(oRequestor.hasPendingChanges(), false);
		// we don't care about #hasPendingChanges("$inactive.*") because it cannot be used that way
	});

	//*****************************************************************************************
	QUnit.test("hasPendingChanges: correct for multiple change sets in one group",
			function (assert) {
		var fnCancel = function () { throw new Error(); },
			oRequestor = _Requestor.create("/Service/", oModelInterface);

		oRequestor.request("DELETE", "Products('42')", this.createGroupLock());
		oRequestor.addChangeSet("groupId");
		oRequestor.request("PATCH", "Products('0')", this.createGroupLock(),
			{"If-Match" : {}}, {Name : "foo"}, undefined, fnCancel);
		oRequestor.addChangeSet("groupId");
		oRequestor.request("DELETE", "Products('4711')", this.createGroupLock());

		//code under test
		assert.strictEqual(oRequestor.hasPendingChanges(), true);
	});

	//*****************************************************************************************
	QUnit.test("removeChangeRequest", function (assert) {
		var fnCancel = this.spy(),
			oPromise,
			oRequestor = _Requestor.create("/Service/", oModelInterface),
			oTestPromise;

		oPromise = oRequestor.request("PATCH", "Products('0')", this.createGroupLock(),
			{"If-Match" : {/* product 0