Autosubmit published draft

Change-Id: Ie210e447b7d106d51e56ccedab873dcf2ce04591
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
index efe90c1..2bc9a2a 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -29,6 +29,7 @@
 import com.google.gerrit.server.data.ChangeAttribute;
 import com.google.gerrit.server.events.ChangeEvent;
 import com.google.gerrit.server.events.CommentAddedEvent;
+import com.google.gerrit.server.events.DraftPublishedEvent;
 import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 import com.google.gerrit.server.events.RefUpdatedEvent;
@@ -89,6 +90,7 @@
   @Override
   synchronized public void onEvent(final Event event) {
     if (event instanceof TopicChangedEvent ||
+        event instanceof DraftPublishedEvent ||
         event instanceof PatchSetCreatedEvent) {
       Change change = Change.from(((ChangeEvent)event).change.get());
       onNewOrChangedPatchSet(change);
diff --git a/test.rb b/test.rb
index ddc29f5..d4451f9 100755
--- a/test.rb
+++ b/test.rb
@@ -164,6 +164,16 @@
     check_status(commit2, 'MERGED')
   end
 
+  def test_published_draft_is_autosubmitted
+    commit_id = create_review(PROJECT1, "review0 on #{PROJECT1}", draft: true)
+    approve_review(commit_id)
+    check_status(commit_id, 'DRAFT')
+
+    publish_draft(commit_id)
+
+    check_status(commit_id, 'MERGED')
+  end
+
   private
 
   def project_dir(project_name)
@@ -180,7 +190,11 @@
     reviews = gerrit_query(query)
     reviews.each do |review|
       review_number = review['number']
-      execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
+      if review['status'] == 'DRAFT'
+        execute("#{GERRIT_SSH} gerrit review --delete #{review_number},1")
+      else
+        execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
+      end
     end
   end
 
@@ -192,14 +206,14 @@
     change_id
   end
 
-  def create_review(project_name, message, topic = nil, change_id = nil)
+  def create_review(project_name, message, topic = nil, change_id = nil, draft: false)
     topic_suffix = "/#{topic}" if topic
     message = "#{message}\n\nChange-Id: #{change_id}" if change_id
     execute(["cd #{project_dir(project_name)}",
              "echo 0 >> a",
              "git add .",
              %Q(git commit -m "#{message}"),
-             "git push origin HEAD:refs/for/master#{topic_suffix}"
+             "git push origin HEAD:refs/#{draft ? 'drafts' : 'for'}/master#{topic_suffix}"
             ].join(" && "))
     commit_id = execute("cd #{project_dir(project_name)} && git rev-parse HEAD")
     refute(commit_id.empty?, "missing commit-id")
@@ -210,6 +224,10 @@
     execute("#{GERRIT_SSH} gerrit review --verified 1 --code-review 2 #{commit_id}")
   end
 
+  def publish_draft(commit_id)
+    execute("#{GERRIT_SSH} gerrit review --publish #{commit_id}")
+  end
+
   def abandon_review(commit_id)
     execute("#{GERRIT_SSH} gerrit review --abandon #{commit_id}")
   end