universal_bot-ts
233 строки · 7.2 Кб
1import {mmApp, UsersData, isFile, unlink} from '../../src';
2
3interface IData {
4userId?: string;
5meta?: string;
6data?: any;
7}
8
9const FILE_NAME = 'UsersData.json';
10
11describe('Db file connect', () => {
12let data: any;
13const userData = new UsersData();
14
15beforeEach(() => {
16mmApp.params.utm_text = '';
17mmApp.config.json = __dirname;
18data = {
19userId1: {
20userId: 'userId1',
21meta: 'user meta 1',
22data: {
23name: 'user 1'
24}
25},
26userId2: {
27userId: 'userId2',
28meta: 'user meta 2',
29data: {
30name: 'user 2'
31}
32},
33userId3: {
34userId: 'userId3',
35meta: 'user meta 3',
36data: {
37name: 'user 3'
38}
39},
40userId13: {
41userId: 'userId3',
42meta: 'user meta 1',
43data: {
44name: 'user 3'
45}
46}
47};
48mmApp.saveJson(FILE_NAME, data);
49});
50
51it('Where string', async () => {
52let query = '`userId`="userId1"';
53let uData = (await userData.where(query)).data;
54expect(uData.length === 1).toBe(true);
55expect(uData[0]).toEqual(data.userId1);
56
57query = '`userId`="userId3" AND `meta`="user meta 1"';
58uData = (await userData.where(query)).data;
59expect(uData.length === 1).toBe(true);
60expect(uData[0]).toEqual(data.userId13);
61
62query = '`meta`="user meta 1"';
63uData = (await userData.where(query)).data;
64expect(uData.length === 2).toBe(true);
65expect(uData[0]).toEqual(data.userId1);
66expect(uData[1]).toEqual(data.userId13);
67
68query = '`userId`="NotFound"';
69expect((await userData.where(query)).status).toBe(false);
70});
71it('Where object', async () => {
72let query: IData = {
73userId: 'userId1'
74};
75let uData = (await userData.where(query)).data;
76expect(uData.length === 1).toBe(true);
77expect(uData[0]).toEqual(data.userId1);
78
79query = {
80userId: 'userId3',
81meta: 'user meta 1'
82};
83uData = (await userData.where(query)).data;
84expect(uData.length === 1).toBe(true);
85expect(uData[0]).toEqual(data.userId13);
86
87query = {
88meta: 'user meta 1'
89};
90uData = (await userData.where(query)).data;
91expect(uData.length === 2).toBe(true);
92expect(uData[0]).toEqual(data.userId1);
93expect(uData[1]).toEqual(data.userId13);
94
95query = {
96userId: 'NotFound'
97};
98expect((await userData.where(query)).status === false).toBe(true);
99});
100
101it('Where one', async () => {
102let query = '`userId`="userId1"';
103expect(await userData.whereOne(query)).toBe(true);
104expect(userData.data).toEqual(data.userId1.data);
105
106query = '`userId`="userId3" AND `meta`="user meta 1"';
107expect(await userData.whereOne(query)).toBe(true);
108expect(userData.data).toEqual(data.userId13.data);
109
110query = '`userId`="NotFound"';
111expect(await userData.whereOne(query)).toBe(false);
112});
113it('Where one Object', async () => {
114let query: IData = {
115userId: 'userId1'
116};
117expect(await userData.whereOne(query)).toBe(true);
118expect(userData.data).toEqual(data.userId1.data);
119
120query = {
121userId: 'userId3',
122meta: 'user meta 1'
123};
124expect(await userData.whereOne(query)).toBe(true);
125expect(userData.data).toEqual(data.userId13.data);
126
127query = {
128userId: 'NotFound'
129};
130expect(await userData.whereOne(query)).toBe(false);
131});
132
133it('Delete data', async () => {
134let query = '`userId`="userId1"';
135userData.userId = 'userId1';
136expect(await userData.remove()).toBe(true);
137
138expect(await userData.whereOne(query)).toBe(false);
139});
140
141it('Update data', async () => {
142let query = '`meta`="meta"';
143expect(await userData.whereOne(query)).toBe(false);
144userData.userId = 'userId1';
145userData.meta = 'meta';
146expect(await userData.update()).toBe(true);
147
148expect(await userData.whereOne(query)).toBe(true);
149});
150
151it('Save data', async () => {
152let query = '`meta`="meta"';
153expect(await userData.whereOne(query)).toBe(false);
154userData.userId = 'userId5';
155userData.meta = 'meta';
156userData.data = {name: 'user 5'};
157expect(await userData.save()).toBe(true);
158
159expect(await userData.whereOne(query)).toBe(true);
160expect(userData.userId === 'userId5').toBe(true);
161expect(userData.data).toEqual({name: 'user 5'});
162});
163
164it('Delete file db', () => {
165expect(isFile(__dirname + '/' + FILE_NAME)).toBe(true);
166unlink(__dirname + '/' + FILE_NAME);
167expect(isFile(__dirname + '/' + FILE_NAME)).toBe(false);
168})
169});
170
171describe('Db is MongoDb', () => {
172let isConnected: boolean = true;
173beforeEach(() => {
174mmApp.setIsSaveDb(true);
175mmApp.setConfig({
176db: {
177host: 'mongodb://127.0.0.1:27017/',
178database: 'test'
179}
180});
181});
182it('MongoDb Save data', async () => {
183if (isConnected) {
184const usersData = new UsersData();
185if (await usersData.isConnected()) {
186usersData.userId = 'test';
187usersData.type = UsersData.T_ALISA;
188usersData.data = {};
189usersData.meta = {};
190expect(await usersData.save()).toBe(true);
191expect(await usersData.whereOne({userId: 'test'})).toBe(true);
192usersData.destroy();
193} else {
194isConnected = false;
195}
196mmApp.setIsSaveDb(false);
197}
198});
199it('MongoDb Update data', async () => {
200if (isConnected) {
201const usersData = new UsersData();
202if (await usersData.isConnected()) {
203usersData.userId = 'test';
204usersData.type = UsersData.T_ALISA;
205usersData.data = 'data';
206usersData.meta = {};
207expect(await usersData.save()).toBe(true);
208expect(await usersData.whereOne({data: 'data'})).toBe(true);
209usersData.destroy();
210} else {
211isConnected = false;
212}
213mmApp.setIsSaveDb(false);
214}
215});
216it('MongoDb Remove data', async () => {
217if (isConnected) {
218const usersData = new UsersData();
219if (await usersData.isConnected()) {
220usersData.userId = 'test';
221usersData.type = UsersData.T_ALISA;
222usersData.data = 'data';
223usersData.meta = {};
224expect(await usersData.remove()).toBe(true);
225expect(await usersData.whereOne({userId: 'test'})).toBe(false);
226usersData.destroy();
227} else {
228isConnected = false;
229}
230mmApp.setIsSaveDb(false);
231}
232});
233});
234