Skip to content
Flaviu Chelaru edited this page Nov 25, 2019 · 1 revision

Welcome to the phalcon-nested-sets wiki!

Regression testing

Based on the basic structure attached (mysql), the following operations should be checked

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

DROP TABLE IF EXISTS `categories`;
CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(50) DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  `lft` int(11) DEFAULT NULL,
  `rgt` int(11) DEFAULT NULL,
  `depth` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

DELETE FROM `categories`;
/*!40000 ALTER TABLE `categories` DISABLE KEYS */;
INSERT INTO `categories` (`id`, `name`, `parent_id`, `lft`, `rgt`, `depth`) VALUES
	(1, 'online', 0, 1, 14, 0),
	(2, 'back-end', 0, 15, 28, 0),
	(3, 'back-end', 0, 29, 42, 0),
	(4, 'wireless', 1, 2, 3, 1),
	(5, 'neural', 1, 4, 11, 1),
	(6, 'auxiliary', 1, 12, 13, 1),
	(7, 'multi-byte', 2, 16, 17, 1),
	(8, 'wireless', 2, 18, 25, 1),
	(9, 'optical', 2, 26, 27, 1),
	(10, 'auxiliary', 3, 30, 31, 1),
	(11, 'cross-platform', 3, 32, 39, 1),
	(12, 'wireless', 3, 40, 41, 1),
	(13, 'back-end', 5, 5, 6, 2),
	(14, 'redundant', 5, 7, 8, 2),
	(15, 'haptic', 5, 9, 10, 2),
	(16, 'virtual', 8, 19, 20, 2),
	(17, 'bluetooth', 8, 21, 22, 2),
	(18, 'multi-byte', 8, 23, 24, 2),
	(19, 'open-source', 11, 33, 34, 2),
	(20, 'haptic', 11, 35, 36, 2),
	(21, 'back-end', 11, 37, 38, 2);
/*!40000 ALTER TABLE `categories` ENABLE KEYS */;

/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

scenarios

  • create categories

  • delete root category (delete #1)

  • delete sub-tree category (delete #5)

  • delete leaf category (delete #13)

  • move root category as leaf in the same sub-tree (id 1, parent 13)

  • move root category as leaf in different sub-tree (id 1, parent 17)

  • move sub-tree category to root (id5)

  • move sub-tree category as leaf (id5, parent 13)

  • move sub-tree category as sub-tree for another root (id 5, parent 17)

  • move leaf category as leaf in another subtree (id 14, parent 8)

  • move leaf category as root (id 14, parent null)

Clone this wiki locally