//Test case to cover Mix tutorial

function test_tutorial()
{
	newProject();
	editContract(
		"contract Rating {\r" +
		"	function setRating(bytes32 _key, uint256 _value) {\r" +
		"		ratings[_key] = _value;\r" +
		"	}\r" +
		"	mapping (bytes32 => uint256) public ratings;\r" +
		"}\r"
	);
	editHtml(
	"<!doctype>\r" +
	"<html>\r" +
	"<head>\r" +
	"<script type='text/javascript'>\r" +
	"function getRating() {\r" +
	"	var param = document.getElementById('query').value;\r" +
	"	var res = contracts['Rating'].contract.ratings(param);\r" +
	"	document.getElementById('queryres').innerText = res;\r" +
	"}\r" +
	"function setRating() {\r" +
	"	var key = document.getElementById('key').value;\r" +
	"	var value = parseInt(document.getElementById('value').value);\r" +
	"	var res = contracts['Rating'].contract.setRating(key, value);\r" +
	"}\r" +
	"</script>\r" +
	"</head>\r" +
	"<body bgcolor='#E6E6FA'>\r" +
	"	<h1>Ratings</h1>\r" +
	"	<div>\r" +
	"		Store:\r" +
	"		<input type='string' id='key'>\r" +
	"		<input type='number' id='value'>\r" +
	"		<button onclick='setRating()'>Save</button>\r" +
	"		</div>\r" +
	"		<div>\r" +
	"		Query:\r" +
	"		<input type='string' id='query' onkeyup='getRating()'>\r" +
	"		<div id='queryres'></div>\r" +
	"	</div>\r" +
	"</body>\r" +
	"</html>\r"
	);

	mainApplication.projectModel.stateListModel.editState(0);
	mainApplication.projectModel.stateDialog.model.addTransaction();
	var transactionDialog = mainApplication.projectModel.stateDialog.transactionDialog;
	ts.waitForRendering(transactionDialog, 3000);
	transactionDialog.selectFunction("setRating");
	clickElement(transactionDialog, 200, 310);
	ts.typeString("Titanic", transactionDialog);
	clickElement(transactionDialog, 200, 330);
	ts.typeString("2", transactionDialog);
	transactionDialog.acceptAndClose();
	mainApplication.projectModel.stateDialog.acceptAndClose();
	mainApplication.mainContent.startQuickDebugging();
	if (!ts.waitForSignal(mainApplication.clientModel, "debugDataReady(QObject*)", 5000))
		fail("Error running transaction");
	wait(1);
	clickElement(mainApplication.mainContent.webView.webView, 1, 1);
	ts.typeString("\t\t\t\t");
	ts.typeString("Titanic");
	tryCompare(mainApplication.mainContent.rightPane.transactionLog.callModel, "count", 8); //wait for 8 calls
	mainApplication.mainContent.webView.getContent();
	ts.waitForSignal(mainApplication.mainContent.webView, "webContentReady()", 5000);
	var body = mainApplication.mainContent.webView.webContent;
	verify(body.indexOf("<div id=\"queryres\">2</div>") != -1, "Web content not updated")
}