From 6b60153ab4ac036bcd4eaaa90806d9898fc1e9a2 Mon Sep 17 00:00:00 2001
From: Geolim4 <contact@geolim4.com>
Date: Fri, 8 Aug 2014 15:06:12 +0200
Subject: [ticket/12671] Possibility to use NOT LIKE expression

PHPBB3-12671
---
 tests/dbal/select_test.php         | 42 ++++++++++++++++++++++++++++++++++++++
 tests/di/create_container_test.php |  4 ++++
 2 files changed, 46 insertions(+)

(limited to 'tests')

diff --git a/tests/dbal/select_test.php b/tests/dbal/select_test.php
index e480716a49..ce07d7d0fb 100644
--- a/tests/dbal/select_test.php
+++ b/tests/dbal/select_test.php
@@ -233,6 +233,48 @@ class phpbb_dbal_select_test extends phpbb_database_test_case
 		$db->sql_freeresult($result);
 	}
 
+	public function not_like_expression_data()
+	{
+		// * = any_char; # = one_char
+		return array(
+			array('barfoo', array(array('username_clean' => 'bertie'),
+				array('username_clean' => 'foobar'))),
+			array('bar', array(array('username_clean' => 'bertie'),)),
+			array('bar*', array(array('username_clean' => 'bertie'),
+				array('username_clean' => 'foobar'))),
+			array('*bar*', array(array('username_clean' => 'bertie'))),
+			array('b*r', array(array('username_clean' => 'barfoo'),
+				array('username_clean' => 'foobar'))),
+			array('b*e', array(array('username_clean' => 'barfoo'),
+				array('username_clean' => 'foobar'))),
+			array('#b*e', array(array('username_clean' => 'barfoo'),
+				array('username_clean' => 'foobar'))),
+			array('b####e', array(array('username_clean' => 'barfoo'),
+				array('username_clean' => 'foobar'))),
+		);
+	}
+
+	/**
+	* @dataProvider not_like_expression_data
+	*/
+	public function test_not_like_expression($like_expression, $expected)
+	{
+		$db = $this->new_dbal();
+
+		$like_expression = str_replace('*', $db->get_any_char(), $like_expression);
+		$like_expression = str_replace('#', $db->get_one_char(), $like_expression);
+		$where = ($like_expression) ? 'username_clean ' . $db->sql_not_like_expression($like_expression) : '';
+
+		$result = $db->sql_query('SELECT username_clean
+			FROM phpbb_users
+			' . (($where) ? ' WHERE ' . $where : '') . '
+			ORDER BY user_id ASC');
+
+		$this->assertEquals($expected, $db->sql_fetchrowset($result));
+
+		$db->sql_freeresult($result);
+	}
+
 	public function in_set_data()
 	{
 		return array(
diff --git a/tests/di/create_container_test.php b/tests/di/create_container_test.php
index 559c0b122c..4ae6017989 100644
--- a/tests/di/create_container_test.php
+++ b/tests/di/create_container_test.php
@@ -191,6 +191,10 @@ namespace phpbb\db\driver
 		{
 		}
 
+		function sql_not_like_expression($expression)
+		{
+		}
+
 		function sql_fetchrowset($query_id = false)
 		{
 			return array(
-- 
cgit v1.2.1