File: DynamicFieldsScreenConfigImportExport.t

package info (click to toggle)
znuny 6.5.18-1
  • links: PTS
  • area: non-free
  • in suites: forky, sid
  • size: 205,344 kB
  • sloc: perl: 1,038,694; xml: 74,551; javascript: 65,276; sql: 23,574; sh: 417; makefile: 63
file content (360 lines) | stat: -rw-r--r-- 20,093 bytes parent folder | download | duplicates (5)
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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
# --
# Copyright (C) 2021 Znuny GmbH, https://znuny.org/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --

use strict;
use warnings;
use utf8;

use vars (qw($Self));

use Kernel::System::VariableCheck qw(:all);

$Kernel::OM->ObjectParamAdd(
    'Kernel::System::UnitTest::Helper' => {
        RestoreDatabase => 1,
    },
);

my $ZnunyHelperObject    = $Kernel::OM->Get('Kernel::System::ZnunyHelper');
my $ConfigObject         = $Kernel::OM->Get('Kernel::Config');
my $SysConfigObject      = $Kernel::OM->Get('Kernel::System::SysConfig');
my $UnitTestHelperObject = $Kernel::OM->Get('Kernel::System::UnitTest::Helper');

# Create dynamic fields to test export
my @DynamicFieldConfigs = (
    {
        Name       => 'DynField0' . $UnitTestHelperObject->GetRandomID(),
        Label      => 'Dynamic field test 1',
        ObjectType => 'Ticket',
        FieldType  => 'Text',
        Config     => {
            DefaultValue => '',
        },
    },
    {
        Name       => 'DynField1' . $UnitTestHelperObject->GetRandomID(),
        Label      => 'Dynamic field test 2',
        ObjectType => 'Ticket',
        FieldType  => 'Text',
        Config     => {
            DefaultValue => '',
        },
    },
    {
        Name       => 'DynField2' . $UnitTestHelperObject->GetRandomID(),
        Label      => 'Dynamic field test 3',
        ObjectType => 'Ticket',
        FieldType  => 'Text',
        Config     => {
            DefaultValue => '',
        },
    },
    {
        Name       => 'DynField3' . $UnitTestHelperObject->GetRandomID(),
        Label      => 'Dynamic field test 4',
        ObjectType => 'Ticket',
        FieldType  => 'Text',
        Config     => {
            DefaultValue => '',
        },
    },
    {
        Name       => 'DynField4' . $UnitTestHelperObject->GetRandomID(),
        Label      => 'Dynamic field test 5',
        ObjectType => 'Ticket',
        FieldType  => 'Text',
        Config     => {
            DefaultValue => '',
        },
    },
    {
        Name       => 'DynField5' . $UnitTestHelperObject->GetRandomID(),
        Label      => 'Dynamic field test 6',
        ObjectType => 'Ticket',
        FieldType  => 'Text',
        Config     => {
            DefaultValue => '',
        },
    },
);

my $DynamicFieldsCreated = $ZnunyHelperObject->_DynamicFieldsCreate(@DynamicFieldConfigs);

$Self->True(
    scalar $DynamicFieldsCreated,
    'Dynamic fields must have been created successfully.',
);

# Test export
my @Tests = (
    {
        Name       => 'Import and Export one DynamicField with one DynamicFieldScreens.',
        ImportData => {
            $DynamicFieldConfigs[0]->{Name} => {
                'Ticket::Frontend::AgentTicketZoom###DynamicField' => 1,
            },
        },
    },
    {
        Name       => 'Import and Export one DynamicField with one DefaultColumnsScreens.',
        ImportData => {
            $DynamicFieldConfigs[1]->{Name} => {
                'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew'             => 1,
                'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => 2,
                'DashboardBackend###0100-TicketPendingReminder'                            => 0,
                'DashboardBackend###0140-RunningTicketProcess'                             => 1,
                'DashboardBackend###0120-TicketNew'                                        => 0,
            },
        },
    },
    {
        Name       => 'Import and Export one DynamicField with all possible configs.',
        ImportData => {
            $DynamicFieldConfigs[2]->{Name} => {
                'Ticket::Frontend::AgentTicketClose###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketCompose###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketEmail###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketEmailOutbound###DynamicField'                => 1,
                'Ticket::Frontend::AgentTicketForward###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketFreeText###DynamicField'                     => 1,
                'Ticket::Frontend::AgentTicketMove###DynamicField'                         => 1,
                'Ticket::Frontend::AgentTicketNote###DynamicField'                         => 1,
                'Ticket::Frontend::AgentTicketOwner###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPending###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketPhone###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPhoneInbound###DynamicField'                 => 1,
                'Ticket::Frontend::AgentTicketPhoneOutbound###DynamicField'                => 1,
                'Ticket::Frontend::AgentTicketPrint###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPriority###DynamicField'                     => 1,
                'Ticket::Frontend::AgentTicketResponsible###DynamicField'                  => 1,
                'Ticket::Frontend::AgentTicketSearch###DynamicField'                       => 1,
                'Ticket::Frontend::AgentTicketZoom###DynamicField'                         => 1,
                'Ticket::Frontend::CustomerTicketMessage###DynamicField'                   => 1,
                'Ticket::Frontend::CustomerTicketPrint###DynamicField'                     => 1,
                'Ticket::Frontend::CustomerTicketSearch###DynamicField'                    => 1,
                'Ticket::Frontend::CustomerTicketZoom###DynamicField'                      => 1,
                'Ticket::Frontend::OverviewMedium###DynamicField'                          => 1,
                'Ticket::Frontend::OverviewPreview###DynamicField'                         => 1,
                'Ticket::Frontend::OverviewSmall###DynamicField'                           => 1,
                'Ticket::Frontend::CustomerTicketOverview###DynamicField'                  => 1,
                'Ticket::Frontend::AgentTicketZoom###ProcessWidgetDynamicField'            => 1,
                'Ticket::Frontend::AgentTicketStatusView###DefaultColumns'                 => 1,
                'Ticket::Frontend::AgentTicketQueue###DefaultColumns'                      => 1,
                'Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns'            => 1,
                'Ticket::Frontend::AgentTicketWatchView###DefaultColumns'                  => 1,
                'Ticket::Frontend::AgentTicketLockedView###DefaultColumns'                 => 1,
                'Ticket::Frontend::AgentTicketEscalationView###DefaultColumns'             => 1,
                'Ticket::Frontend::AgentTicketSearch###DefaultColumns'                     => 1,
                'Ticket::Frontend::AgentTicketService###DefaultColumns'                    => 1,
                'DashboardBackend###0100-TicketPendingReminder'                            => 1,
                'DashboardBackend###0110-TicketEscalation'                                 => 1,
                'DashboardBackend###0120-TicketNew'                                        => 1,
                'DashboardBackend###0130-TicketOpen'                                       => 1,
                'DashboardBackend###0140-RunningTicketProcess'                             => 1,
                'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => 1,
                'AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation'      => 1,
                'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew'             => 1,
                'AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen'            => 1,
            },
        },
    },
    {
        Name       => 'Import and Export multiple DynamicFields with multiple screens.',
        ImportData => {
            $DynamicFieldConfigs[3]->{Name} => {
                'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => 1,
                'AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation'      => 1,
                'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew'             => 1,
                'AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen'            => 1,
                'DashboardBackend###0100-TicketPendingReminder'                            => 1,
                'DashboardBackend###0110-TicketEscalation'                                 => 1,
                'DashboardBackend###0120-TicketNew'                                        => 1,
                'DashboardBackend###0130-TicketOpen'                                       => 1,
                'DashboardBackend###0140-RunningTicketProcess'                             => 1,
                'Ticket::Frontend::AgentTicketEscalationView###DefaultColumns'             => 1,
                'Ticket::Frontend::AgentTicketLockedView###DefaultColumns'                 => 1,
                'Ticket::Frontend::AgentTicketQueue###DefaultColumns'                      => 1,
                'Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns'            => 1,
                'Ticket::Frontend::AgentTicketSearch###DefaultColumns'                     => 1,
                'Ticket::Frontend::AgentTicketService###DefaultColumns'                    => 1,
                'Ticket::Frontend::AgentTicketStatusView###DefaultColumns'                 => 1,
                'Ticket::Frontend::AgentTicketWatchView###DefaultColumns'                  => 1,
                'Ticket::Frontend::AgentTicketClose###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketCompose###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketEmail###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketEmailOutbound###DynamicField'                => 1,
                'Ticket::Frontend::AgentTicketForward###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketFreeText###DynamicField'                     => 1,
                'Ticket::Frontend::AgentTicketMove###DynamicField'                         => 1,
                'Ticket::Frontend::AgentTicketNote###DynamicField'                         => 1,
                'Ticket::Frontend::AgentTicketOwner###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPending###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketPhone###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPhoneInbound###DynamicField'                 => 1,
                'Ticket::Frontend::AgentTicketPhoneOutbound###DynamicField'                => 1,
                'Ticket::Frontend::AgentTicketPrint###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPriority###DynamicField'                     => 1,
                'Ticket::Frontend::AgentTicketResponsible###DynamicField'                  => 1,
                'Ticket::Frontend::AgentTicketSearch###DynamicField'                       => 1,
                'Ticket::Frontend::AgentTicketZoom###DynamicField'                         => 1,
                'Ticket::Frontend::AgentTicketZoom###ProcessWidgetDynamicField'            => 1,
                'Ticket::Frontend::CustomerTicketMessage###DynamicField'                   => 1,
                'Ticket::Frontend::CustomerTicketOverview###DynamicField'                  => 1,
                'Ticket::Frontend::CustomerTicketPrint###DynamicField'                     => 1,
                'Ticket::Frontend::CustomerTicketSearch###DynamicField'                    => 1,
                'Ticket::Frontend::CustomerTicketZoom###DynamicField'                      => 1,
                'Ticket::Frontend::OverviewMedium###DynamicField'                          => 1,
                'Ticket::Frontend::OverviewPreview###DynamicField'                         => 1,
                'Ticket::Frontend::OverviewSmall###DynamicField'                           => 1
            },
            $DynamicFieldConfigs[4]->{Name} => {
                'Ticket::Frontend::AgentTicketClose###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketCompose###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketEmail###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketEmailOutbound###DynamicField'                => 1,
                'Ticket::Frontend::AgentTicketForward###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketFreeText###DynamicField'                     => 1,
                'Ticket::Frontend::AgentTicketMove###DynamicField'                         => 1,
                'Ticket::Frontend::AgentTicketNote###DynamicField'                         => 1,
                'Ticket::Frontend::AgentTicketOwner###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPending###DynamicField'                      => 1,
                'Ticket::Frontend::AgentTicketPhone###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPhoneInbound###DynamicField'                 => 1,
                'Ticket::Frontend::AgentTicketPhoneOutbound###DynamicField'                => 1,
                'Ticket::Frontend::AgentTicketPrint###DynamicField'                        => 1,
                'Ticket::Frontend::AgentTicketPriority###DynamicField'                     => 1,
                'Ticket::Frontend::AgentTicketResponsible###DynamicField'                  => 1,
                'Ticket::Frontend::AgentTicketSearch###DynamicField'                       => 1,
                'Ticket::Frontend::AgentTicketZoom###DynamicField'                         => 1,
                'Ticket::Frontend::CustomerTicketMessage###DynamicField'                   => 1,
                'Ticket::Frontend::CustomerTicketPrint###DynamicField'                     => 1,
                'Ticket::Frontend::CustomerTicketSearch###DynamicField'                    => 1,
                'Ticket::Frontend::CustomerTicketZoom###DynamicField'                      => 1,
                'Ticket::Frontend::OverviewMedium###DynamicField'                          => 1,
                'Ticket::Frontend::OverviewPreview###DynamicField'                         => 1,
                'Ticket::Frontend::OverviewSmall###DynamicField'                           => 1,
                'Ticket::Frontend::CustomerTicketOverview###DynamicField'                  => 1,
                'Ticket::Frontend::AgentTicketZoom###ProcessWidgetDynamicField'            => 1,
                'Ticket::Frontend::AgentTicketStatusView###DefaultColumns'                 => 1,
                'Ticket::Frontend::AgentTicketQueue###DefaultColumns'                      => 1,
                'Ticket::Frontend::AgentTicketResponsibleView###DefaultColumns'            => 1,
                'Ticket::Frontend::AgentTicketWatchView###DefaultColumns'                  => 1,
                'Ticket::Frontend::AgentTicketLockedView###DefaultColumns'                 => 1,
                'Ticket::Frontend::AgentTicketEscalationView###DefaultColumns'             => 1,
                'Ticket::Frontend::AgentTicketSearch###DefaultColumns'                     => 1,
                'Ticket::Frontend::AgentTicketService###DefaultColumns'                    => 1,
                'DashboardBackend###0100-TicketPendingReminder'                            => 1,
                'DashboardBackend###0110-TicketEscalation'                                 => 1,
                'DashboardBackend###0120-TicketNew'                                        => 1,
                'DashboardBackend###0130-TicketOpen'                                       => 1,
                'DashboardBackend###0140-RunningTicketProcess'                             => 1,
                'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => 1,
                'AgentCustomerInformationCenter::Backend###0110-CIC-TicketEscalation'      => 1,
                'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew'             => 1,
                'AgentCustomerInformationCenter::Backend###0130-CIC-TicketOpen'            => 1,
            },
            $DynamicFieldConfigs[5]->{Name} => {
                'AgentCustomerInformationCenter::Backend###0120-CIC-TicketNew'             => 1,
                'AgentCustomerInformationCenter::Backend###0100-CIC-TicketPendingReminder' => 2,
                'DashboardBackend###0100-TicketPendingReminder'                            => 0,
                'DashboardBackend###0140-RunningTicketProcess'                             => 1,
                'DashboardBackend###0120-TicketNew'                                        => 0,
                'Ticket::Frontend::AgentTicketLockedView###DefaultColumns'                 => 1,
                'Ticket::Frontend::AgentTicketQueue###DefaultColumns'                      => 2,
                'Ticket::Frontend::AgentTicketPhone###DynamicField'                        => 0,
                'Ticket::Frontend::AgentTicketZoom###DynamicField'                         => 1,
                'Ticket::Frontend::CustomerTicketOverview###DynamicField'                  => 2,
                'Ticket::Frontend::OverviewPreview###DynamicField'                         => 0,
            },
        },
    },
);

my $TimeObject = $Kernel::OM->Get('Kernel::System::Time');

TEST:
for my $Test (@Tests) {

    my $StartSystemTime = $TimeObject->SystemTime();
    my $CurrentSystemTime;
    my $TimeDiff;

    $Self->True(
        $Test->{Name},
        "$Test->{Name}",
    );

    my @DynamicFields = sort keys %{ $Test->{ImportData} };

    $Self->True(
        $Test->{Name},
        "Start - _DynamicFieldsScreenConfigExport",
    );

    my %Export = $ZnunyHelperObject->_DynamicFieldsScreenConfigExport(
        DynamicFields => \@DynamicFields,
    );

    for my $DynamicField ( sort keys %{ $Test->{ImportData} } ) {

        $Self->False(
            $Export{$DynamicField},
            "ScreenConfig for '$DynamicField' is not defined.",
        );
    }

    $CurrentSystemTime = $TimeObject->SystemTime();
    $TimeDiff          = $CurrentSystemTime - $StartSystemTime;

    $Self->True(
        $Test->{Name},
        "End - _DynamicFieldsScreenConfigExport - $TimeDiff",
    );

    $StartSystemTime = $TimeObject->SystemTime();

    $Self->True(
        $Test->{Name},
        "Start - _DynamicFieldsScreenConfigImport",
    );

    my $Import = $ZnunyHelperObject->_DynamicFieldsScreenConfigImport(
        Config => $Test->{ImportData},
    );

    $CurrentSystemTime = $TimeObject->SystemTime();
    $TimeDiff          = $CurrentSystemTime - $StartSystemTime;

    $Self->True(
        $Test->{Name},
        "End - _DynamicFieldsScreenConfigImport - $TimeDiff",
    );

    %Export = $ZnunyHelperObject->_DynamicFieldsScreenConfigExport(
        DynamicFields => \@DynamicFields,
    );

    DYNAMICFIELD:
    for my $DynamicField ( sort keys %{ $Test->{ImportData} } ) {

        $Self->True(
            $Export{$DynamicField},
            "ScreenConfig for '$DynamicField' is defined.",
        );

        next DYNAMICFIELD if !$Export{$DynamicField};

        $Self->IsDeeply(
            $Export{$DynamicField},
            $Test->{ImportData}->{$DynamicField},
            "Import and export for '$DynamicField' was successful .",
        );
    }
}

1;