1
+ <?php
2
+
3
+ namespace LibraryTest \Repository ;
4
+
5
+ use Doctrine \ORM \AbstractQuery ;
6
+ use Doctrine \ORM \EntityManager ;
7
+ use Doctrine \ORM \Mapping \ClassMetadata ;
8
+ use Doctrine \ORM \Query ;
9
+ use Doctrine \ORM \QueryBuilder ;
10
+ use PHPUnit_Framework_MockObject_MockObject as MockObject ;
11
+
12
+ abstract class AbstractRepositoryTestCase extends \PHPUnit_Framework_TestCase
13
+ {
14
+ /**
15
+ * @var MockObject
16
+ */
17
+ protected $ entityManagerMock ;
18
+
19
+ /**
20
+ * @var MockObject
21
+ */
22
+ protected $ classMetadataMock ;
23
+
24
+ /**
25
+ * @var MockObject
26
+ */
27
+ protected $ queryBuilderMock ;
28
+
29
+ /**
30
+ * @var MockObject
31
+ */
32
+ protected $ queryMock ;
33
+
34
+ public function setUp ()
35
+ {
36
+ $ this ->entityManagerMock = $ this ->getMockBuilder (EntityManager::class)
37
+ ->disableOriginalConstructor ()
38
+ ->setMethods (['persist ' , 'flush ' , 'remove ' , 'getClassMetadata ' , 'createQueryBuilder ' ])
39
+ ->getMock ();
40
+
41
+ $ this ->classMetadataMock = $ this ->getMockBuilder (ClassMetadata::class)
42
+ ->disableOriginalConstructor ()
43
+ ->getMock ();
44
+
45
+ $ this ->queryBuilderMock = $ this ->getMockBuilder (QueryBuilder::class)
46
+ ->setMethods (['__construct ' , 'getQuery ' ])
47
+ ->setConstructorArgs ([$ this ->entityManagerMock ])
48
+ ->getMock ();
49
+
50
+ $ this ->queryMock = $ this ->getMockBuilder (AbstractQuery::class)
51
+ ->setMethods (['getResult ' ])
52
+ ->disableOriginalConstructor ()
53
+ ->getMockForAbstractClass ();
54
+
55
+ $ this ->queryBuilderMock ->expects ($ this ->any ())
56
+ ->method ('getQuery ' )
57
+ ->will ($ this ->returnValue ($ this ->queryMock ));
58
+
59
+ $ this ->entityManagerMock ->expects ($ this ->any ())
60
+ ->method ('createQueryBuilder ' )
61
+ ->will ($ this ->returnValue ($ this ->queryBuilderMock ));
62
+
63
+ $ this ->entityManagerMock ->expects ($ this ->any ())
64
+ ->method ('getClassMetadata ' )
65
+ ->will ($ this ->returnValue ($ this ->classMetadataMock ));
66
+ }
67
+
68
+ /**
69
+ * @param QueryBuilder $qb
70
+ *
71
+ * @return string
72
+ */
73
+ public function getRawSQLFromORMQueryBuilder (QueryBuilder $ qb )
74
+ {
75
+ $ sql = $ qb ->getDQL ();
76
+ $ parameters = $ qb ->getParameters ();
77
+
78
+ /** @var Query\Parameter $param */
79
+ foreach ($ parameters as $ param ) {
80
+ if (is_array ($ param ->getValue ()) && !empty ($ param ->getValue ())) {
81
+ $ sql = str_replace (': ' . $ param ->getName (), "' " . implode ("', ' " , $ param ->getValue ()) . "' " , $ sql );
82
+ } else {
83
+ $ sql = str_replace (': ' . $ param ->getName (), "' " . $ param ->getValue () . "' " , $ sql );
84
+ }
85
+ }
86
+
87
+ return $ sql ;
88
+ }
89
+
90
+ }
0 commit comments