From 7c43f38be553b3ecc74225b5ab20366cb2481ce8 Mon Sep 17 00:00:00 2001
From: Laurent Cozic <laurent@cozic.net>
Date: Sun, 4 Jun 2017 00:21:15 +0100
Subject: [PATCH] tweaks

---
 run_tests.sh                                    | 9 +++++----
 src/AppBundle/Controller/FoldersController.php  | 3 +++
 src/AppBundle/Controller/NotesController.php    | 7 +++----
 tests/Controller/SynchronizerControllerTest.php | 4 ++--
 tests/Model/ChangeTest.php                      | 2 +-
 5 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/run_tests.sh b/run_tests.sh
index 3bef05f7de..34d27d2bf5 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -1,6 +1,7 @@
 #!/bin/bash
-# php phpunit-5.7.20.phar --bootstrap vendor/autoload.php tests/Model/
-# php phpunit-5.7.20.phar --filter testConflict ChangeTest tests/Model/ChangeTest.php --bootstrap vendor/autoload.php tests/Model/
-# php phpunit-5.7.20.phar --filter SynchronizerControllerTest tests/Controller/SynchronizerControllerTest.php --bootstrap vendor/autoload.php tests/Controller/
 
-php phpunit-5.7.20.phar --bootstrap vendor/autoload.php tests/Controller/
\ No newline at end of file
+# Example to test just one method of a test unit:
+# php phpunit-5.7.20.phar --filter testConflict ChangeTest tests/Model/ChangeTest.php --bootstrap vendor/autoload.php tests/Model/
+
+php5.6 phpunit-5.7.20.phar --bootstrap vendor/autoload.php tests/Controller/
+php5.6 phpunit-5.7.20.phar --bootstrap vendor/autoload.php tests/Model/
\ No newline at end of file
diff --git a/src/AppBundle/Controller/FoldersController.php b/src/AppBundle/Controller/FoldersController.php
index 6ae4ec5895..4d2e17810a 100755
--- a/src/AppBundle/Controller/FoldersController.php
+++ b/src/AppBundle/Controller/FoldersController.php
@@ -42,6 +42,9 @@ class FoldersController extends ApiController {
 			return static::successResponse($folder);
 		}
 
+		$query = $request->query->all();
+		if ($folder) $folder->revId = $query['rev_id'];
+
 		if ($request->isMethod('PUT')) {
 			$isNew = !$folder;
 			if ($isNew) $folder = new Folder();
diff --git a/src/AppBundle/Controller/NotesController.php b/src/AppBundle/Controller/NotesController.php
index bcffd4c060..020d39692c 100755
--- a/src/AppBundle/Controller/NotesController.php
+++ b/src/AppBundle/Controller/NotesController.php
@@ -38,6 +38,9 @@ class NotesController extends ApiController {
 			return static::successResponse($note);
 		}
 
+		$query = $request->query->all();
+		if ($note) $note->revId = $query['rev_id'];
+
 		if ($request->isMethod('PUT')) {
 			$isNew = !$note;
 			if ($isNew) $note = new Note();
@@ -51,10 +54,6 @@ class NotesController extends ApiController {
 		}
 
 		if ($request->isMethod('PATCH')) {
-			$query = $request->query->all();
-
-			$note->id = Note::unhex($id);
-			$note->revId = $query['rev_id'];
 			$note->fromPublicArray($this->patchParameters());
 			$note->save();
 			return static::successResponse($note);
diff --git a/tests/Controller/SynchronizerControllerTest.php b/tests/Controller/SynchronizerControllerTest.php
index 32e3120156..02a0fae9f0 100644
--- a/tests/Controller/SynchronizerControllerTest.php
+++ b/tests/Controller/SynchronizerControllerTest.php
@@ -95,8 +95,8 @@ class SynchronizerControllerTest extends BaseControllerTestCase  {
 		$this->loadSession(1, 2);	
 		$syncResult2 = $this->request('GET', '/synchronizer', array('rev_id' => $client2_revId));
 
-		// In case of conflict, the string should be set to the last PATCH operation
-		$this->assertEquals('YYYYYYYYYY', $syncResult1['items'][0]['item']['title']);
+		// In case of conflict, the last non-conflicted version is returned
+		$this->assertEquals('XXXXXXXXXX', $syncResult1['items'][0]['item']['title']);
 
 		// TODO: handle conflict
 	}
diff --git a/tests/Model/ChangeTest.php b/tests/Model/ChangeTest.php
index b3533f578d..5691075377 100755
--- a/tests/Model/ChangeTest.php
+++ b/tests/Model/ChangeTest.php
@@ -196,7 +196,7 @@ class ChangeTest extends BaseTestCase {
 
 		$r = Change::changesDoneAfterId($this->userId(), $this->clientId(1), 0);
 
-		$this->assertCount(2, $r);
+		$this->assertCount(3, $r);
 		$this->assertFalse($r['has_more']);
 		$this->assertCount(0, $r['items']); // Since client 1 is the one that made the changes, no sync data needs to be returned