forked from ret-Phoenix/oscript-sql
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtest-pgsql.os
More file actions
186 lines (131 loc) · 8.82 KB
/
test-pgsql.os
File metadata and controls
186 lines (131 loc) · 8.82 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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#Использовать asserts
#Использовать sql
Перем юТест;
Перем мСтрокаСоединения;
Функция ПолучитьТекстИзФайла(ИмяФайла)
ФайлОбмена = Новый Файл(ИмяФайла);
Данные = "";
Если ФайлОбмена.Существует() Тогда
Текст = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
Данные = Текст.Прочитать();
Текст.Закрыть();
Иначе
Возврат Ложь;
КонецЕсли;
возврат Данные;
КонецФункции
Процедура Инициализация()
КонецПроцедуры
Функция ПолучитьСписокТестов(Тестирование) Экспорт
СуфикМетодов = "";
мСтрокаСоединения = ПолучитьТекстИзФайла("fixtures\pgsql-con-str.txt");
Если мСтрокаСоединения = Ложь Тогда
СуфикМетодов = "НетПараметровСоединения";
КонецЕсли;
юТест = Тестирование;
СписокТестов = Новый Массив;
СписокТестов.Добавить("Тест_Должен_ПроверитьГенерациюСтрокиСоединения");
СписокТестов.Добавить("Тест_Должен_СоздатьТаблицу" + СуфикМетодов);
СписокТестов.Добавить("Тест_Должен_ДобавитьСтроки" + СуфикМетодов);
СписокТестов.Добавить("Тест_Должен_ДолженИзменитьСтроки" + СуфикМетодов);
СписокТестов.Добавить("Тест_Должен_ДолженПолучитьВыборку" + СуфикМетодов);
Возврат СписокТестов;
КонецФункции
Процедура Тест_Должен_ПроверитьГенерациюСтрокиСоединения() Экспорт
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.PostgreSQL;
Соединение.Сервер = "localhost";
Соединение.ИмяПользователя = "postgres";
Соединение.ИмяБазы = "test";
Соединение.Пароль = "testpassword";
Соединение.Порт = 3306;
Попытка
/// Заведомо известно падение при открытии.
/// Строка соединения генерируется только при открытии
Соединение.Открыть();
Исключение
Ожидаем.Что(Соединение.СтрокаСоединения).Равно("Host=localhost;Username=postgres;Password=testpassword;Database=test;port=3306;");
КонецПопытки;
КонецПроцедуры
Процедура Тест_Должен_СоздатьТаблицу() Экспорт
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.PostgreSQL;
Соединение.СтрокаСоединения = мСтрокаСоединения;
Соединение.Открыть();
ЗапросВставка = Новый Запрос();
ЗапросВставка.УстановитьСоединение(Соединение);
ЗапросВставка.Текст = "DROP TABLE IF EXISTS users";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "Create table users (id integer, title varchar(50))";
ЗапросВставка.ВыполнитьКоманду();
Соединение.Закрыть();
КонецПроцедуры
Процедура Тест_Должен_ДобавитьСтроки() Экспорт
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.PostgreSQL;
Соединение.СтрокаСоединения = мСтрокаСоединения;
Соединение.Открыть();
ЗапросВставка = Новый Запрос();
ЗапросВставка.УстановитьСоединение(Соединение);
ЗапросВставка.Текст = "DROP TABLE IF EXISTS testdata";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "Create table testdata (userlogin varchar(50))";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "INSERT INTO testdata (userlogin) VALUES (@value1)";
ЗапросВставка.УстановитьПараметр("value1", "Tom&jerry");
Результат = ЗапросВставка.ВыполнитьКоманду();
Соединение.Закрыть();
Ожидаем.Что(Результат).Равно(1);
КонецПроцедуры
Процедура Тест_Должен_ДолженИзменитьСтроки() Экспорт
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.PostgreSQL;
Соединение.СтрокаСоединения = мСтрокаСоединения;
Соединение.Открыть();
ЗапросВставка = Новый Запрос();
ЗапросВставка.УстановитьСоединение(Соединение);
ЗапросВставка.Текст = "DROP TABLE IF EXISTS users1";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "Create table users1 (id integer, name varchar(50), born date, isadmin bool)";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "insert into users1 (id, name, born, isadmin) values(@id, @name, @born, @isadmin)";
ЗапросВставка.УстановитьПараметр("id", 1);
ЗапросВставка.УстановитьПараметр("isadmin", Истина);
ЗапросВставка.УстановитьПараметр("name", "Сергей");
ЗапросВставка.УстановитьПараметр("born", Дата(1980,9,13));
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "update users1 set name = @name";
ЗапросВставка.УстановитьПараметр("name", "Сергей Александрович");
Результат = ЗапросВставка.ВыполнитьКоманду();
Соединение.Закрыть();
Ожидаем.Что(Результат).Равно(1);
КонецПроцедуры
Процедура Тест_Должен_ДолженПолучитьВыборку() Экспорт
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.PostgreSQL;
Соединение.СтрокаСоединения = мСтрокаСоединения;
Соединение.Открыть();
ЗапросВставка = Новый Запрос();
ЗапросВставка.УстановитьСоединение(Соединение);
ЗапросВставка.Текст = "DROP TABLE IF EXISTS users";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "Create table users (id integer, title varchar(50))";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "insert into users (id, title) values(@id, @title)";
ЗапросВставка.УстановитьПараметр("id", 1);
ЗапросВставка.УстановитьПараметр("title", "Сергей");
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "insert into users (id, title) values(@id, @title)";
ЗапросВставка.УстановитьПараметр("id", 2);
ЗапросВставка.УстановитьПараметр("title", "Оксана");
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Параметры.Очистить();
ЗапросВставка.Текст = "select * from users where id = @newid";
ЗапросВставка.УстановитьПараметр("newid", 1);
ТЗ = ЗапросВставка.Выполнить().Выгрузить();
Ожидаем.Что(ТЗ.Количество()).Равно(1);
Соединение.Закрыть();
КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////////////
// Инициализация
Инициализация();