From aa5df1dbacc0e64c32c5dab7fbed70459c5ddae8 Mon Sep 17 00:00:00 2001
From: Aaron Muylaert <aaron@tactics.be>
Date: Sat, 14 Dec 2013 15:59:10 +0100
Subject: [PATCH] Create failing test for DDC-2645.

Merge not dealing correctly with composite primary keys.
---
 .../ORM/Functional/Ticket/DDC2645Test.php     | 55 +++++++++++++++++++
 1 file changed, 55 insertions(+)
 create mode 100644 tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2645Test.php

diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2645Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2645Test.php
new file mode 100644
index 000000000..0c2ea6d0a
--- /dev/null
+++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2645Test.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace Doctrine\Tests\ORM\Functional\Ticket;
+
+require_once __DIR__ . '/../../../TestInit.php';
+
+/**
+ * @group DDC-2645
+ */
+class DDC2645Test extends \Doctrine\Tests\OrmFunctionalTestCase
+{
+    public function testIssue()
+    {
+        $bar = new DDC2645Bar;
+        $bar->id = 123;
+
+        $foo = new DDC2645Foo(1, $bar, 'Foo');
+        $foo2 = new DDC2645Foo(1, $bar, 'Bar');
+
+        $this->_em->persist($bar);
+        $this->_em->persist($foo);
+
+        $foo3 = $this->_em->merge($foo2);
+
+        $this->assertSame($foo, $foo3);
+        $this->assertEquals('Bar', $foo->name);
+    }
+}
+
+/** @Entity */
+class DDC2645Foo
+{
+    /** @Id @Column(type="integer") */
+    private $id;
+
+    /** @Id @ManyToOne(targetEntity="DDC2645Bar") */
+    private $bar;
+
+    /** @Column */
+    public $name;
+
+    public function __construct($id, $bar, $name)
+    {
+        $this->id = $id;
+        $this->bar = $bar;
+        $this->name = $name;
+    }
+}
+
+/** @Entity */
+class DDC2645Bar
+{
+    /** @Id @Column(type="integer") @GeneratedValue(strategy="NONE") */
+    public $id;
+}