-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_duplicate_check.php
More file actions
133 lines (112 loc) · 5.16 KB
/
Copy pathtest_duplicate_check.php
File metadata and controls
133 lines (112 loc) · 5.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
# -*- coding: utf-8 -*-
require_once 'config.php';
require_once 'DealCreator.php';
/**
* Тест проверки дубликатов сделок в воронке
*/
// Мок-классы для тестирования
class MockUsual {
private $calls = [];
public function callBitrix24API($method, $params) {
$this->calls[] = ['method' => $method, 'params' => $params];
if ($method === 'crm.deal.list') {
// Симулируем проверку дубликатов
$filter = $params['filter'] ?? [];
// Проверяем, что фильтр содержит CATEGORY_ID
if (isset($filter['CATEGORY_ID'])) {
echo "✅ Фильтр по воронке CATEGORY_ID: " . $filter['CATEGORY_ID'] . "\n";
} else {
echo "❌ ОШИБКА: Фильтр не содержит CATEGORY_ID!\n";
}
// Симулируем нахождение дубликата
return [
'result' => [
[
'ID' => 74,
'TITLE' => 'Тестовый проект',
'BEGINDATE' => date('Y-m-d'),
'CATEGORY_ID' => MONTHLY_WORK_FUNNEL_ID
]
]
];
}
if ($method === 'tasks.task.list') {
return [
'result' => [
'tasks' => []
]
];
}
return ['result' => []];
}
public function getCalls() {
return $this->calls;
}
}
class MockLogger {
public function log($message) {
if (is_array($message)) {
if (isset($message['type']) && $message['type'] === 'duplicate_check') {
echo "📋 Лог проверки дубликатов:\n";
echo " Статус: " . $message['status'] . "\n";
echo " Проект ID: " . ($message['project_id'] ?? 'N/A') . "\n";
echo " Воронка ID: " . ($message['funnel_id'] ?? 'N/A') . "\n";
if (isset($message['duplicates_count'])) {
echo " Найдено дубликатов: " . $message['duplicates_count'] . "\n";
}
if (isset($message['message'])) {
echo " Сообщение: " . $message['message'] . "\n";
}
echo "\n";
}
}
}
}
echo "=== ТЕСТ ПРОВЕРКИ ДУБЛИКАТОВ СДЕЛОК ===\n\n";
$mockCall = new MockUsual();
$mockLogger = new MockLogger();
$dealCreator = new DealCreator($mockCall, $mockLogger);
// Тест 1: Проверка включена
echo "Тест 1: Проверка дубликатов (CHECK_DUPLICATES = " . (CHECK_DUPLICATES ? 'true' : 'false') . ")\n";
echo "Проект ID: 168\n";
echo "Воронка ID: " . MONTHLY_WORK_FUNNEL_ID . "\n\n";
// Используем рефлексию для вызова приватного метода
$reflection = new ReflectionClass($dealCreator);
$method = $reflection->getMethod('checkDuplicateDeal');
$method->setAccessible(true);
$hasDuplicate = $method->invoke($dealCreator, 168);
echo "\nРезультат проверки: " . ($hasDuplicate ? "✅ Найден дубликат" : "❌ Дубликат не найден") . "\n";
// Проверяем, что был вызван правильный API
$calls = $mockCall->getCalls();
foreach ($calls as $call) {
if ($call['method'] === 'crm.deal.list') {
echo "\n=== ДЕТАЛИ API ВЫЗОВА ===\n";
echo "Метод: " . $call['method'] . "\n";
echo "Фильтры:\n";
foreach ($call['params']['filter'] as $key => $value) {
echo " - $key: " . (is_array($value) ? json_encode($value) : $value) . "\n";
}
echo "\n";
// Проверяем наличие CATEGORY_ID
if (isset($call['params']['filter']['CATEGORY_ID'])) {
echo "✅ ФИЛЬТР ПО ВОРОНКЕ ПРИСУТСТВУЕТ\n";
if ($call['params']['filter']['CATEGORY_ID'] == MONTHLY_WORK_FUNNEL_ID) {
echo "✅ ФИЛЬТР ПО ПРАВИЛЬНОЙ ВОРОНКЕ (" . MONTHLY_WORK_FUNNEL_ID . ")\n";
} else {
echo "❌ ОШИБКА: Фильтр по другой воронке: " . $call['params']['filter']['CATEGORY_ID'] . "\n";
}
} else {
echo "❌ ОШИБКА: ФИЛЬТР ПО ВОРОНКЕ ОТСУТСТВУЕТ!\n";
}
}
}
echo "\n=== ИТОГОВЫЙ РЕЗУЛЬТАТ ===\n";
if ($hasDuplicate && isset($calls[0]['params']['filter']['CATEGORY_ID'])) {
echo "✅ Проверка дубликатов работает корректно:\n";
echo " - Проверяет только сделки в воронке " . MONTHLY_WORK_FUNNEL_ID . "\n";
echo " - Правильно определяет дубликаты\n";
} else {
echo "❌ Проверка дубликатов работает неправильно\n";
}
echo "\n";