mirror of
				http://git.whoc.org.uk/git/password-manager.git
				synced 2025-10-31 11:27:34 +01:00 
			
		
		
		
	Implemented field manual ordering through drag&drop
This commit is contained in:
		| @@ -1632,7 +1632,7 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re | ||||
| 		return deferredResult; | ||||
| 	}, | ||||
|  | ||||
|     //------------------------------------------------------------------------- | ||||
| 	//------------------------------------------------------------------------- | ||||
|  | ||||
| 	'editTags_remove': function (someTestArgs) { | ||||
| 		var	deferredResult; | ||||
| @@ -1674,9 +1674,283 @@ deferredResult.addCallback(function (aValue) { console.log("FIELDS", aValue); re | ||||
| 		return deferredResult; | ||||
| 	}, | ||||
|  | ||||
|     //------------------------------------------------------------------------- | ||||
| 	//------------------------------------------------------------------------- | ||||
|  | ||||
|     'syntaxFix': MochiKit.Base.noop | ||||
| 	'changeFieldOrder': function (someTestArgs) { | ||||
| 		var	deferredResult; | ||||
| 		var	proxy; | ||||
| 		var	user; | ||||
| 		var user2; | ||||
| 		var recordID =		'd620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045' | ||||
| //		var directLoginID =	'dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496'; | ||||
| 		var originalFieldReference = '31d750b1944b65454a47ab10ad8b04ce99464c68b5f85bb015817ae7433b3940'; | ||||
|  | ||||
| 		proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); | ||||
| 		user  = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); | ||||
| 		user2 = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); | ||||
|  | ||||
| 		deferredResult = new Clipperz.Async.Deferred("Record.test.changeFieldOrder", someTestArgs); | ||||
| 		deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); | ||||
| 		deferredResult.addMethod(user, 'login'); | ||||
| 		deferredResult.addMethod(user, 'getRecords'); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Web site",		// * | ||||
| 			"Call center", | ||||
| 			"Expire date" | ||||
| 		], "initial order of keys", true); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('fieldWithLabel', "Web site"); | ||||
| 		deferredResult.addMethodcaller('reference'); | ||||
| 		deferredResult.addTest(originalFieldReference, "Expected field reference"); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 0); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'hasPendingChanges'); | ||||
| 		deferredResult.addTest(true, "after changing the order of fields in a record, the user should report pending changes") | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('hasPendingChanges'); | ||||
| 		deferredResult.addTest(true, "after changing the order of fields, also the record should report pending changes") | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[1] -> 0", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"Web site",		// * | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Call center", | ||||
| 			"Expire date" | ||||
| 		], "final order of keys [1]", true); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'saveChanges'); | ||||
|  | ||||
| 		deferredResult.addMethod(user2, 'login'); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[2] -> 0", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"Web site",		// * | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Call center", | ||||
| 			"Expire date" | ||||
| 		], "final order of keys [2]", true); | ||||
|  | ||||
| 		deferredResult.callback(); | ||||
|  | ||||
| 		return deferredResult; | ||||
| 	}, | ||||
|  | ||||
| 	//------------------------------------------------------------------------- | ||||
|  | ||||
| 	'changeFieldOrderToLast': function (someTestArgs) { | ||||
| 		var	deferredResult; | ||||
| 		var	proxy; | ||||
| 		var	user; | ||||
| 		var user2; | ||||
| 		var recordID =		'd620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045' | ||||
| //		var directLoginID =	'dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496'; | ||||
| 		var originalFieldReference = '31d750b1944b65454a47ab10ad8b04ce99464c68b5f85bb015817ae7433b3940'; | ||||
|  | ||||
| 		proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); | ||||
| 		user  = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); | ||||
| 		user2 = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); | ||||
|  | ||||
| 		deferredResult = new Clipperz.Async.Deferred("Record.test.changeFieldOrderToLast", someTestArgs); | ||||
| 		deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); | ||||
| 		deferredResult.addMethod(user, 'login'); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Web site",		// * | ||||
| 			"Call center", | ||||
| 			"Expire date", | ||||
| 		], "initial order of keys", true); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 0); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[3] -> 0", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"Web site",		// * | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Call center", | ||||
| 			"Expire date", | ||||
| 		], "final order of keys [3]", true); | ||||
| 		deferredResult.addMethod(user, 'revertChanges'); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 1); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[4] -> 1", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Web site",		// * | ||||
| 			"Password", | ||||
| 			"Call center", | ||||
| 			"Expire date", | ||||
| 		], "final order of keys [4]", true); | ||||
| 		deferredResult.addMethod(user, 'revertChanges'); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 2); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[5] -> 2", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Web site",		// * | ||||
| 			"Call center", | ||||
| 			"Expire date", | ||||
| 		], "final order of keys [5]", true); | ||||
| 		deferredResult.addMethod(user, 'revertChanges'); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 3); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[6] -> 3", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Call center", | ||||
| 			"Web site",		// * | ||||
| 			"Expire date", | ||||
| 		], "final order of keys [6]", true); | ||||
| 		deferredResult.addMethod(user, 'revertChanges'); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 4); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[7] -> 4", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Call center", | ||||
| 			"Expire date", | ||||
| 			"Web site",		// * | ||||
| 		], "final order of keys [7]", true); | ||||
| 		deferredResult.addMethod(user, 'revertChanges'); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 10); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[8] -> 10 -> 4", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Call center", | ||||
| 			"Expire date", | ||||
| 			"Web site",		// * | ||||
| 		], "final order of keys [8]", true); | ||||
| 		deferredResult.addMethod(user, 'revertChanges'); | ||||
|  | ||||
| 		deferredResult.callback(); | ||||
|  | ||||
| 		return deferredResult; | ||||
| 	}, | ||||
|  | ||||
| 	//------------------------------------------------------------------------- | ||||
|  | ||||
| 	'changeFieldOrderSettingSamePosition': function (someTestArgs) { | ||||
| 		var	deferredResult; | ||||
| 		var	proxy; | ||||
| 		var	user; | ||||
| 		var user2; | ||||
| 		var recordID =		'd620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045' | ||||
| //		var directLoginID =	'dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496'; | ||||
| 		var originalFieldReference = '31d750b1944b65454a47ab10ad8b04ce99464c68b5f85bb015817ae7433b3940'; | ||||
|  | ||||
| 		proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, isDefault:true, readOnly:false}); | ||||
| 		user  = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); | ||||
| 		user2 = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); | ||||
|  | ||||
| 		deferredResult = new Clipperz.Async.Deferred("Record.test.changeFieldOrderSettingSamePosition", someTestArgs); | ||||
| 		deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); | ||||
| 		deferredResult.addMethod(user, 'login'); | ||||
| 		deferredResult.addMethod(user, 'getRecords'); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Web site",		// * | ||||
| 			"Call center", | ||||
| 			"Expire date" | ||||
| 		], "initial order of keys", true); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('fieldWithLabel', "Web site"); | ||||
| 		deferredResult.addMethodcaller('reference'); | ||||
| 		deferredResult.addTest(originalFieldReference, "Expected field reference"); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('moveFieldToPosition', originalFieldReference, 2); | ||||
| 		deferredResult.addMethod(user, 'hasPendingChanges'); | ||||
| 		deferredResult.addTest(false, "changing the position of a field to its previous place should not trigger any changes"); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('hasPendingChanges'); | ||||
| 		deferredResult.addTest(false, "also the record should not have any pending changes"); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('getFieldsValues'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.itemgetter('label')); | ||||
| 		deferredResult.addCallback(function (aValue) { console.log("[9]", aValue); return aValue; }); | ||||
| 		deferredResult.addTest([ | ||||
| 			"AAdvantage N.", | ||||
| 			"Password", | ||||
| 			"Web site",		// * | ||||
| 			"Call center", | ||||
| 			"Expire date" | ||||
| 		], "final order of keys [9]", true); | ||||
|  | ||||
| 		deferredResult.callback(); | ||||
|  | ||||
| 		return deferredResult; | ||||
| 	}, | ||||
|  | ||||
| 	//------------------------------------------------------------------------- | ||||
|  | ||||
| 	'syntaxFix': MochiKit.Base.noop | ||||
| }; | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1163,13 +1163,46 @@ var tests = { | ||||
| 		deferredResult.addMethodcaller('hasLoadedRemoteData'); | ||||
| 		deferredResult.addTest(false, "After saving, record_2 should still be NOT loaded"); | ||||
|  | ||||
|  | ||||
| 		deferredResult.callback(); | ||||
|  | ||||
| 		return deferredResult; | ||||
| 	}, | ||||
|  | ||||
|     //------------------------------------------------------------------------- | ||||
| 	//------------------------------------------------------------------------- | ||||
|  | ||||
| 	'doNotLoadDataJustToAnswerHasPendingChanges_test': function (someTestArgs) { | ||||
| 		var deferredResult; | ||||
| 		var proxy; | ||||
| 		var user; | ||||
| 		var record_1; | ||||
| 		 | ||||
| 		record_1 = '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80'; | ||||
|  | ||||
| 		proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); | ||||
| 		user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); | ||||
|  | ||||
| 		deferredResult = new Clipperz.Async.Deferred("doNotLoadDataJustToAnswerHasPendingChanges_test", someTestArgs); | ||||
| 		deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); | ||||
| 		deferredResult.addMethod(user, 'login'); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', record_1); | ||||
| 		deferredResult.addMethodcaller('hasLoadedRemoteData'); | ||||
| 		deferredResult.addTest(false, "The card data should have not been loaded yet"); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', record_1); | ||||
| 		deferredResult.addMethodcaller('hasPendingChanges'); | ||||
| 		deferredResult.addTest(false, "record_1 shoud not have any changes"); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', record_1); | ||||
| 		deferredResult.addMethodcaller('hasLoadedRemoteData'); | ||||
| 		deferredResult.addTest(false, "record_1 should not have loaded data just to answer the 'hasPendingChanges' method invocation"); | ||||
|  | ||||
| 		deferredResult.callback(); | ||||
|  | ||||
| 		return deferredResult; | ||||
| 	}, | ||||
| 	 | ||||
| 	//------------------------------------------------------------------------- | ||||
|  | ||||
| 	'addNewRecordFieldAndSave_test': function (someTestArgs) { | ||||
| 		var deferredResult; | ||||
| @@ -2080,6 +2113,14 @@ console.log("PROXY", proxy); | ||||
| 		deferredResult.addCallback(MochiKit.Base.itemgetter('length')); | ||||
| 		deferredResult.addTest(1, "The cloned record has 1 direct logins"); | ||||
|  | ||||
| 		deferredResult.addCallback(function () { return clonedRecordID; }) | ||||
| 		deferredResult.addMethod(user, 'getRecord'); | ||||
| 		deferredResult.addMethodcaller('directLogins'); | ||||
| 		deferredResult.addCallback(MochiKit.Base.values); | ||||
| 		deferredResult.addCallback(MochiKit.Base.itemgetter('0')); | ||||
| 		deferredResult.addMethodcaller('label'); | ||||
| 		deferredResult.addTest("Amazon.com", "Label of the newly clone Direct Login"); | ||||
|  | ||||
| 		deferredResult.callback(); | ||||
| 		 | ||||
| 		return deferredResult; | ||||
| @@ -2108,7 +2149,7 @@ console.log("PROXY", proxy); | ||||
| 		deferredResult.addTest(20, "This account has 20 cards"); | ||||
|  | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('setLabel', "new value"); | ||||
| 		deferredResult.addMethodcaller('addField', { 'hidden': false, 'label': "New field", 'type': "URL", 'value': "http://www.example.com" }); | ||||
| 		deferredResult.addMethod(user, 'getRecord', recordID); | ||||
| 		deferredResult.addMethodcaller('hasPendingChanges'); | ||||
| 		deferredResult.addTest(true, "The record has pending changes."); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Giulio Cesare Solaroli
					Giulio Cesare Solaroli