/**
  * update document
  *
  * @param DocumentEntity $doc          document entity
  * @param ConfigEntity   $config       config entity
  * @param ConfigEntity   $originConfig original instance config entity
  * @return DocumentEntity
  */
 public function update(DocumentEntity $doc, ConfigEntity $config, ConfigEntity $originConfig = null)
 {
     $this->connection->beginTransaction();
     $doc = $this->document->update($doc, $config);
     if ($config->get('revision') === true && $this->revision->isChanged($doc) === true) {
         $this->revision->insert($doc, $config);
     }
     if ($config->get('division') === true) {
         $diff = $doc->diff();
         if (isset($diff['instanceId'])) {
             $this->document->insertDivision($doc, $config);
         } else {
             $this->document->updateDivision($doc, $config);
         }
     }
     // 인스턴스 아이디 변경 시 이전 인스턴스 디비전 테이블 데이터 삭제
     if ($originConfig != null && $originConfig->get('division') === true) {
         $diff = $doc->diff();
         if (isset($diff['instanceId'])) {
             $doc->instanceId = $doc->getOriginal()['instanceId'];
             $this->document->deleteDivision($doc, $originConfig);
         }
     }
     $this->connection->commit();
     return $doc;
 }
 /**
  * test update
  *
  * @return void
  */
 public function testUpdate()
 {
     $conn = $this->conn;
     $repo = new DocumentRepository($conn);
     $doc = $this->getDocumentEntity();
     $doc->shouldReceive('getAttributes')->andReturn([]);
     $config = $this->getConfigEntity();
     $config->shouldReceive('get')->with('division')->andReturn(true);
     $config->shouldReceive('get')->with('instanceId')->andReturn('instanceId');
     $this->query->shouldReceive('update');
     $this->query->shouldReceive('where')->andReturn($this->query);
     $result = $repo->update($doc, $config);
     $this->assertInstanceOf('Xpressengine\\Document\\DocumentEntity', $result);
 }