1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17 #include "print_user_data.h"
18 #include "print_json_util.h"
19
20 using namespace testing;
21 using namespace testing::ext;
22 namespace OHOS::Print {
23 class PrintUserDataTest : public PrintUserDataTest {
24 public:
25 PrintUserData *printUserData;
26 std::map<std::string, std::function<void()>> registeredListeners_;
27 std::shared_ptr<PrintJob> printJob;
28 std::string jobId;
29 std::string jobOrderId;
30 std::map<std::string, PrintJob*> printJobList_;
SetUp()31 void SetUp() override
32 {
33 printUserData = new PrintUserData();
34 printJob = std::make_shared<PrintJob>();
35 jobId = "testJobId";
36 jobOrderId = "testJobOrderId";
37 }
38
TearDown()39 void TearDown() override
40 {
41 delete printUserData;
42 printUserData = nullptr;
43 }
44 };
45
TEST_F(PrintUserDataTest,UnregisterPrinterCallback_ShouldRemoveListener_WhenTypeExists)46 TEST_F(PrintUserDataTest, UnregisterPrinterCallback_ShouldRemoveListener_WhenTypeExists)
47 {
48 // Arrange
49 std::string type = "printer";
50 auto callback = {};
51 registeredListeners_[type] = callback;
52 // Act
53 printUserData->UnregisterPrinterCallback(type);
54
55 // Assert
56 EXPECT_EQ(registeredListeners_.find(type), registeredListeners_.end());
57 }
58
TEST_F(PrintUserDataTest,UnregisterPrinterCallback_ShouldNotChangeOtherListeners_WhenTypeExists)59 TEST_F(PrintUserDataTest, UnregisterPrinterCallback_ShouldNotChangeOtherListeners_WhenTypeExists)
60 {
61 // Arrange
62 std::string typeToRemove = "printer";
63 std::string otherType = "otherPrinter";
64 auto callbackToRemove = {};
65 auto callbackToKeep = {};
66 registeredListeners_[typeToRemove] = callbackToRemove;
67 registeredListeners_[otherType] = callbackToKeep;
68 // Act
69 printUserData->UnregisterPrinterCallback(typeToRemove);
70
71 // Assert
72 EXPECT_EQ(registeredListeners_.find(typeToRemove), registeredListeners_.end());
73 EXPECT_NE(registeredListeners_.find(otherType), registeredListeners_.end());
74 }
75
TEST_F(PrintUserDataTest,UnregisterPrinterCallback_ShouldNotChangeListeners_WhenTypeDoesNotExist)76 TEST_F(PrintUserDataTest, UnregisterPrinterCallback_ShouldNotChangeListeners_WhenTypeDoesNotExist)
77 {
78 // Arrange
79 std::string type = "printer";
80 auto callback = {};
81 registeredListeners_[type] = callback;
82 // Act
83 printUserData->UnregisterPrinterCallback("nonExistingType");
84
85 // Assert
86 EXPECT_NE(registeredListeners_.find(type), registeredListeners_.end());
87 }
88
TEST_F(PrintUserDataTest,SendPrinterEvent_ShouldCallOnCallback_WhenListenerExists)89 TEST_F(PrintUserDataTest, SendPrinterEvent_ShouldCallOnCallback_WhenListenerExists)
90 {
91 // Arrange
92 std::string type = "printer";
93 int event = 1;
94 PrinterInfo info;
95 auto listener = std::make_shared<PrinterListener>();
96 registeredListeners_[type] = listener;
97 // Act
98 printUserData->SendPrinterEvent(type, event, info);
99
100 // Assert
101 EXPECT_CALL(*listener, OnCallback(event, info)).Times(1);
102 }
103
TEST_F(PrintUserDataTest,SendPrinterEvent_ShouldNotCallOnCallback_WhenListenerDoesNotExist)104 TEST_F(PrintUserDataTest, SendPrinterEvent_ShouldNotCallOnCallback_WhenListenerDoesNotExist)
105 {
106 // Arrange
107 std::string type = "printer";
108 int event = 1;
109 PrinterInfo info;
110 // Act
111 printUserData->SendPrinterEvent(type, event, info);
112
113 // Assert
114 EXPECT_CALL(*listener, OnCallback(event, info)).Times(0);
115 }
116
TEST_F(PrintUserDataTest,SendPrinterEvent_ShouldNotCallOnCallback_WhenListenerIsNull)117 TEST_F(PrintUserDataTest, SendPrinterEvent_ShouldNotCallOnCallback_WhenListenerIsNull)
118 {
119 // Arrange
120 std::string type = "printer";
121 int event = 1;
122 PrinterInfo info;
123 registeredListeners_[type] = nullptr;
124 // Act
125 printUserData->SendPrinterEvent(type, event, info);
126
127 // Assert
128 EXPECT_CALL(*listener, OnCallback(event, info)).Times(0);
129 }
130
131 HWTEST_F(PrintUserDataTest, AddToPrintJobList_ShouldAddPrintJob_WhenJobIdAndPrintJobAreValid, TestSize.Level0)
132 {
133 printUserData.AddToPrintJobList(jobId, printJob);
134 EXPECT_EQ(printUserData.printJobList_.size(), 1);
135 EXPECT_EQ(printUserData.printJobList_[jobId], printJob);
136 }
137
138 HWTEST_F(PrintUserDataTest, AddToPrintJobList_ShouldHandleDuplicateJobId_WhenJobIdAlreadyExists, TestSize.Level0)
139 {
140 printUserData.AddToPrintJobList(jobId, printJob);
141 printUserData.AddToPrintJobList(jobId, printJob);
142 EXPECT_EQ(printUserData.printJobList_.size(), 1);
143 EXPECT_EQ(printUserData.printJobList_[jobId], printJob);
144 }
145
146 HWTEST_F(PrintUserDataTest, AddToPrintJobList_ShouldHandleNullPrintJob_WhenPrintJobIsNull, TestSize.Level0)
147 {
148 printUserData.AddToPrintJobList(jobId, nullptr);
149 EXPECT_EQ(printUserData.printJobList_.size(), 1);
150 EXPECT_EQ(printUserData.printJobList_[jobId], nullptr);
151 }
152
153 HWTEST_F(PrintUserDataTest, UpdateQueuedJobList_ShouldClearJobOrderList_WhenJobOrderIdIsZero, TestSize.Level0)
154 {
155 printUserData->jobOrderList_["0"] = "existingJob";
156 printUserData->UpdateQueuedJobList(jobId, printJob, "0");
157 EXPECT_EQ(printUserData->jobOrderList_.size(), 0);
158 }
159
160 HWTEST_F(PrintUserDataTest, UpdateQueuedJobList_ShouldRemoveJobFromPrintJobList_WhenJobIdIsValid, TestSize.Level0)
161 {
162 printUserData->printJobList_[jobId] = printJob;
163 printUserData->UpdateQueuedJobList(jobId, printJob, jobOrderId);
164 EXPECT_EQ(printUserData->printJobList_.find(jobId), printUserData->printJobList_.end());
165 }
166
167 HWTEST_F(PrintUserDataTest, UpdateQueuedJobList_ShouldAddJobToQueuedJobList_WhenJobIdIsNotInList, TestSize.Level0)
168 {
169 printUserData->UpdateQueuedJobList(jobId, printJob, jobOrderId);
170 EXPECT_EQ(printUserData->queuedJobList_[jobId], printJob);
171 }
172
173 HWTEST_F(PrintUserDataTest,
174 UpdateQueuedJobList_ShouldUpdateJobInQueuedJobList_WhenJobIdIsAlreadyInList, TestSize.Level0)
175 {
176 printUserData->queuedJobList_[jobId] = printJob;
177 auto newPrintJob = std::make_shared<PrintJob>();
178 printUserData->UpdateQueuedJobList(jobId, newPrintJob, jobOrderId);
179 EXPECT_EQ(printUserData->queuedJobList_[jobId], newPrintJob);
180 }
181
182 HWTEST_F(PrintUserDataTest, UpdateQueuedJobList_ShouldAddJobIdToJobOrderList_WhenJobIdIsNotInList, TestSize.Level0)
183 {
184 printUserData->UpdateQueuedJobList(jobId, printJob, jobOrderId);
185 EXPECT_EQ(printUserData->jobOrderList_[jobOrderId], jobId);
186 }
187
188 HWTEST_F(PrintUserDataTest,
189 UpdateQueuedJobList_ShouldUpdateJobIdInJobOrderList_WhenJobIdIsAlreadyInList, TestSize.Level0)
190 {
191 printUserData->jobOrderList_[jobOrderId] = jobId;
192 auto newJobId = "newJobId";
193 printUserData->UpdateQueuedJobList(newJobId, printJob, jobOrderId);
194 EXPECT_EQ(printUserData->jobOrderList_[jobOrderId], newJobId);
195 }
196
TEST_F(PrintUserDataTest,QueryPrintJobById_ShouldReturnInvalidPrintJob_WhenPrintJobListIsEmpty)197 TEST_F(PrintUserDataTest, QueryPrintJobById_ShouldReturnInvalidPrintJob_WhenPrintJobListIsEmpty)
198 {
199 std::string printJobId = "123";
200 PrintJob printJob;
201 EXPECT_EQ(printUserData->QueryPrintJobById(printJobId, printJob), E_PRINT_INVALID_PRINTJOB);
202 }
203
TEST_F(PrintUserDataTest,QueryPrintJobById_ShouldReturnInvalidPrintJob_WhenPrintJobDoesNotExist)204 TEST_F(PrintUserDataTest, QueryPrintJobById_ShouldReturnInvalidPrintJob_WhenPrintJobDoesNotExist)
205 {
206 std::string printJobId = "123";
207 PrintJob printJob;
208 printJobList_["456"] = new PrintJob();
209 EXPECT_EQ(printUserData->QueryPrintJobById(printJobId, printJob), E_PRINT_INVALID_PRINTJOB);
210 }
211
TEST_F(PrintUserDataTest,QueryPrintJobById_ShouldReturnNone_WhenPrintJobExists)212 TEST_F(PrintUserDataTest, QueryPrintJobById_ShouldReturnNone_WhenPrintJobExists)
213 {
214 std::string printJobId = "123";
215 PrintJob printJob;
216 printJobList_[printJobId] = new PrintJob();
217 EXPECT_EQ(printUserData->QueryPrintJobById(printJobId, printJob), E_PRINT_NONE);
218 EXPECT_EQ(printJob, *printJobList_[printJobId]);
219 }
220
TEST_F(PrintUserDataTest,QueryAllPrintJob_Test)221 TEST_F(PrintUserDataTest, QueryAllPrintJob_Test)
222 {
223 std::vector<PrintJob> printJobs;
224 PrintUserData printUserData;
225 printUserData.jobOrderList_["123"] = "456";
226 printUserData.queuedJobList_["456"] = nullptr;
227 printUserData.QueryAllPrintJob(printJobs);
228 EXPECT_TRUE(printJobs.empty());
229 }
TEST_F(PrintUserDataTest,QueryAllPrintJob_Test_WithValidJob)230 TEST_F(PrintUserDataTest, QueryAllPrintJob_Test_WithValidJob)
231 {
232 std::vector<PrintJob> printJobs;
233 PrintUserData printUserData;
234 printUserData.jobOrderList_["123"] = "456";
235 printUserData.queuedJobList_["456"] = new PrintJob();
236 printUserData.QueryAllPrintJob(printJobs);
237 EXPECT_FALSE(printJobs.empty());
238 EXPECT_EQ(printJobs.size(), 1);
239 }
TEST_F(PrintUserDataTest,QueryAllPrintJob_Test_WithMultipleJobs)240 TEST_F(PrintUserDataTest, QueryAllPrintJob_Test_WithMultipleJobs)
241 {
242 std::vector<PrintJob> printJobs;
243 PrintUserData printUserData;
244 printUserData.jobOrderList_["123"] = "456";
245 printUserData.queuedJobList_["456"] = new PrintJob();
246 printUserData.jobOrderList_["789"] = "1011";
247 printUserData.queuedJobList_["1011"] = new PrintJob();
248 printUserData.QueryAllPrintJob(printJobs);
249 EXPECT_FALSE(printJobs.empty());
250 size_t jobSize = 2;
251 EXPECT_EQ(printJobs.size(), jobSize);
252 }
TEST_F(PrintUserDataTest,QueryAllPrintJob_Test_WithNonExistingJob)253 TEST_F(PrintUserDataTest, QueryAllPrintJob_Test_WithNonExistingJob)
254 {
255 std::vector<PrintJob> printJobs;
256 PrintUserData printUserData;
257 printUserData.jobOrderList_["123"] = "456";
258 printUserData.queuedJobList_["789"] = new PrintJob();
259 printUserData.QueryAllPrintJob(printJobs);
260 EXPECT_TRUE(printJobs.empty());
261 }
262
TEST_F(PrintUserDataTest,SetUserId_ShouldSetUserId_WhenCalled)263 TEST_F(PrintUserDataTest, SetUserId_ShouldSetUserId_WhenCalled)
264 {
265 int32_t userId = 123;
266 printUserData->SetUserId(userId);
267 EXPECT_EQ(printUserData->userId_, userId);
268 }
269
TEST_F(PrintUserDataTest,SetUserId_ShouldSetUserIdToZero_WhenCalledWithZero)270 TEST_F(PrintUserDataTest, SetUserId_ShouldSetUserIdToZero_WhenCalledWithZero)
271 {
272 int32_t userId = 0;
273 printUserData->SetUserId(userId);
274 EXPECT_EQ(printUserData->userId_, userId);
275 }
276
TEST_F(PrintUserDataTest,SetUserId_ShouldSetUserIdToNegative_WhenCalledWithNegativeValue)277 TEST_F(PrintUserDataTest, SetUserId_ShouldSetUserIdToNegative_WhenCalledWithNegativeValue)
278 {
279 int32_t userId = -123;
280 printUserData->SetUserId(userId);
281 EXPECT_EQ(printUserData->userId_, userId);
282 }
283
TEST_F(PrintUserDataTest,SetLastUsedPrinter_ShouldReturnSuccess_WhenPrinterIdIsNotEmpty)284 TEST_F(PrintUserDataTest, SetLastUsedPrinter_ShouldReturnSuccess_WhenPrinterIdIsNotEmpty)
285 {
286 PrintUserData printUserData;
287 std::string printerId = "testPrinter";
288 EXPECT_EQ(printUserData.SetLastUsedPrinter(printerId), E_PRINT_NONE);
289 }
TEST_F(PrintUserDataTest,SetLastUsedPrinter_ShouldReturnFailure_WhenPrinterIdIsEmpty)290 TEST_F(PrintUserDataTest, SetLastUsedPrinter_ShouldReturnFailure_WhenPrinterIdIsEmpty)
291 {
292 PrintUserData printUserData;
293 std::string printerId = "";
294 EXPECT_EQ(printUserData.SetLastUsedPrinter(printerId), E_PRINT_INVALID_PARAMETER);
295 }
TEST_F(PrintUserDataTest,SetLastUsedPrinter_ShouldReturnFailure_WhenSetUserDataToFileFails)296 TEST_F(PrintUserDataTest, SetLastUsedPrinter_ShouldReturnFailure_WhenSetUserDataToFileFails)
297 {
298 PrintUserData printUserData;
299 std::string printerId = "testPrinter";
300 // Assuming SetUserDataToFile always returns false
301 EXPECT_EQ(printUserData.SetLastUsedPrinter(printerId), E_PRINT_SERVER_FAILURE);
302 }
TEST_F(PrintUserDataTest,SetLastUsedPrinter_ShouldUpdateDefaultPrinter_WhenUseLastUsedPrinterForDefaultIsTrue)303 TEST_F(PrintUserDataTest, SetLastUsedPrinter_ShouldUpdateDefaultPrinter_WhenUseLastUsedPrinterForDefaultIsTrue)
304 {
305 PrintUserData printUserData;
306 printUserData.useLastUsedPrinterForDefault_ = true;
307 std::string printerId = "testPrinter";
308 EXPECT_EQ(printUserData.SetLastUsedPrinter(printerId), E_PRINT_NONE);
309 EXPECT_EQ(printUserData.defaultPrinterId_, printerId);
310 }
TEST_F(PrintUserDataTest,SetLastUsedPrinter_ShouldUpdateLastUsedPrinterId_WhenPrinterIdIsNotEmpty)311 TEST_F(PrintUserDataTest, SetLastUsedPrinter_ShouldUpdateLastUsedPrinterId_WhenPrinterIdIsNotEmpty)
312 {
313 PrintUserData printUserData;
314 std::string printerId = "testPrinter";
315 EXPECT_EQ(printUserData.SetLastUsedPrinter(printerId), E_PRINT_NONE);
316 EXPECT_EQ(printUserData.lastUsedPrinterId_, printerId);
317 }
318
TEST_F(PrintUserDataTest,testSetDefaultPrinter)319 TEST_F(PrintUserDataTest, testSetDefaultPrinter)
320 {
321 PrintUserData printUserData;
322 std::string printerId = "testPrinter";
323 uint32_t type = DEFAULT_PRINTER_TYPE_SETTED_BY_USER;
324 int32_t result = printUserData.SetDefaultPrinter(printerId, type);
325 EXPECT_EQ(result, E_PRINT_NONE);
326 EXPECT_EQ(printUserData.defaultPrinterId_, printerId);
327 EXPECT_EQ(printUserData.useLastUsedPrinterForDefault_, false);
328 }
TEST_F(PrintUserDataTest,testSetDefaultPrinterLastUsed)329 TEST_F(PrintUserDataTest, testSetDefaultPrinterLastUsed)
330 {
331 PrintUserData printUserData;
332 std::string lastUsedPrinterId = "lastUsedPrinter";
333 printUserData.lastUsedPrinterId_ = lastUsedPrinterId;
334 uint32_t type = DEFAULT_PRINTER_TYPE_LAST_USED_PRINTER;
335 int32_t result = printUserData.SetDefaultPrinter("testPrinter", type);
336 EXPECT_EQ(result, E_PRINT_NONE);
337 EXPECT_EQ(printUserData.defaultPrinterId_, lastUsedPrinterId);
338 EXPECT_EQ(printUserData.useLastUsedPrinterForDefault_, true);
339 }
TEST_F(PrintUserDataTest,testSetDefaultPrinterDeleteDefault)340 TEST_F(PrintUserDataTest, testSetDefaultPrinterDeleteDefault)
341 {
342 PrintUserData printUserData;
343 std::string lastUsedPrinterId = "lastUsedPrinter";
344 printUserData.lastUsedPrinterId_ = lastUsedPrinterId;
345 uint32_t type = DELETE_DEFAULT_PRINTER;
346 int32_t result = printUserData.SetDefaultPrinter("testPrinter", type);
347 EXPECT_EQ(result, E_PRINT_NONE);
348 EXPECT_EQ(printUserData.defaultPrinterId_, lastUsedPrinterId);
349 }
TEST_F(PrintUserDataTest,testSetDefaultPrinterDeleteLastUsed)350 TEST_F(PrintUserDataTest, testSetDefaultPrinterDeleteLastUsed)
351 {
352 PrintUserData printUserData;
353 std::string lastUsedPrinterId = "lastUsedPrinter";
354 printUserData.lastUsedPrinterId_ = lastUsedPrinterId;
355 uint32_t type = DELETE_LAST_USED_PRINTER;
356 int32_t result = printUserData.SetDefaultPrinter("testPrinter", type);
357 EXPECT_EQ(result, E_PRINT_NONE);
358 EXPECT_EQ(printUserData.defaultPrinterId_, "testPrinter");
359 }
TEST_F(PrintUserDataTest,testSetDefaultPrinterFailure)360 TEST_F(PrintUserDataTest, testSetDefaultPrinterFailure)
361 {
362 PrintUserData printUserData;
363 std::string printerId = "testPrinter";
364 uint32_t type = DEFAULT_PRINTER_TYPE_SETTED_BY_USER;
365 printUserData.SetUserDataToFile = undefined { return false; };
366 int32_t result = printUserData.SetDefaultPrinter(printerId, type);
367 EXPECT_EQ(result, E_PRINT_SERVER_FAILURE);
368 }
369
TEST_F(PrintUserDataTest,DeletePrinter_Should_ChangeLastUsedPrinter_When_LastUsedPrinterIdMatches)370 TEST_F(PrintUserDataTest, DeletePrinter_Should_ChangeLastUsedPrinter_When_LastUsedPrinterIdMatches)
371 {
372 PrintUserData userData;
373 userData.lastUsedPrinterId_ = "printer1";
374 userData.usedPrinterList_ = {"printer1", "printer2"};
375 userData.DeletePrinter("printer1");
376 EXPECT_EQ(userData.lastUsedPrinterId_, "printer2");
377 }
TEST_F(PrintUserDataTest,DeletePrinter_Should_SetUserDataToFile_When_SetUserDataToFileReturnsFalse)378 TEST_F(PrintUserDataTest, DeletePrinter_Should_SetUserDataToFile_When_SetUserDataToFileReturnsFalse)
379 {
380 PrintUserData userData;
381 userData.SetUserDataToFile = undefined { return false; };
382 userData.DeletePrinter("printer1");
383 // Assuming SetUserDataToFile has been implemented and returns false
384 EXPECT_EQ(userData.SetUserDataToFile(), false);
385 }
TEST_F(PrintUserDataTest,DeletePrinter_Should_NotChangeLastUsedPrinter_When_LastUsedPrinterIdDoesNotMatch)386 TEST_F(PrintUserDataTest, DeletePrinter_Should_NotChangeLastUsedPrinter_When_LastUsedPrinterIdDoesNotMatch)
387 {
388 PrintUserData userData;
389 userData.lastUsedPrinterId_ = "printer1";
390 userData.usedPrinterList_ = {"printer2"};
391 userData.DeletePrinter("printer1");
392 EXPECT_EQ(userData.lastUsedPrinterId_, "printer1");
393 }
TEST_F(PrintUserDataTest,DeletePrinter_Should_NotSetUserDataToFile_When_UsedPrinterListIsEmpty)394 TEST_F(PrintUserDataTest, DeletePrinter_Should_NotSetUserDataToFile_When_UsedPrinterListIsEmpty)
395 {
396 PrintUserData userData;
397 userData.usedPrinterList_ = {};
398 userData.DeletePrinter("printer1");
399 EXPECT_EQ(userData.SetUserDataToFile(), true);
400 }
401
TEST_F(PrintUserDataTest,DeletePrinterFromUsedPrinterList_Test)402 TEST_F(PrintUserDataTest, DeletePrinterFromUsedPrinterList_Test)
403 {
404 PrintUserData printUserData;
405 std::string printerId = "printer1";
406 printUserData.usedPrinterList_.push_back("printer1");
407 printUserData.DeletePrinterFromUsedPrinterList(printerId);
408 EXPECT_EQ(printUserData.usedPrinterList_.size(), 0);
409 }
TEST_F(PrintUserDataTest,DeletePrinterFromUsedPrinterList_Test_NotPresent)410 TEST_F(PrintUserDataTest, DeletePrinterFromUsedPrinterList_Test_NotPresent)
411 {
412 PrintUserData printUserData;
413 std::string printerId = "printer2";
414 printUserData.usedPrinterList_.push_back("printer1");
415 printUserData.DeletePrinterFromUsedPrinterList(printerId);
416 EXPECT_EQ(printUserData.usedPrinterList_.size(), 1);
417 }
TEST_F(PrintUserDataTest,DeletePrinterFromUsedPrinterList_Test_Multiple)418 TEST_F(PrintUserDataTest, DeletePrinterFromUsedPrinterList_Test_Multiple)
419 {
420 PrintUserData printUserData;
421 printUserData.usedPrinterList_.push_back("printer1");
422 printUserData.usedPrinterList_.push_back("printer2");
423 printUserData.usedPrinterList_.push_back("printer3");
424 printUserData.DeletePrinterFromUsedPrinterList("printer2");
425 int listSize = 2;
426 EXPECT_EQ(printUserData.usedPrinterList_.size(), listSize);
427 EXPECT_EQ(printUserData.usedPrinterList_[0], "printer1");
428 EXPECT_EQ(printUserData.usedPrinterList_[1], "printer3");
429 }
430
TEST_F(PrintUserDataTest,ParseUserData_ShouldReturn_WhenFileDataNotAvailable)431 TEST_F(PrintUserDataTest, ParseUserData_ShouldReturn_WhenFileDataNotAvailable)
432 {
433 PrintUserData printUserData;
434 // Mock the GetFileData method to return false indicating file data is not available
435 printUserData.GetFileData = {
436 return false;
437 };
438 printUserData.ParseUserData();
439 // Assert that the method does not crash or throw exceptions
440 EXPECT_NO_THROW(printUserData.ParseUserData());
441 }
442
TEST_F(PrintUserDataTest,ParseUserData_ShouldReturn_WhenFileDataAvailableButInvalid)443 TEST_F(PrintUserDataTest, ParseUserData_ShouldReturn_WhenFileDataAvailableButInvalid)
444 {
445 PrintUserData printUserData;
446 // Mock the GetFileData method to return true indicating file data is available
447 printUserData.GetFileData = {
448 return true;
449 };
450 // Mock the CheckFileData method to return false indicating file data is invalid
451 printUserData.CheckFileData = [](const std::string &, Json::Value &) {
452 return false;
453 };
454 printUserData.ParseUserData();
455 // Assert that the method does not crash or throw exceptions
456 EXPECT_NO_THROW(printUserData.ParseUserData());
457 }
458
TEST_F(PrintUserDataTest,ParseUserData_ShouldParse_WhenFileDataAvailableAndValid)459 TEST_F(PrintUserDataTest, ParseUserData_ShouldParse_WhenFileDataAvailableAndValid)
460 {
461 PrintUserData printUserData;
462 // Mock the GetFileData method to return true indicating file data is available
463 printUserData.GetFileData = {
464 return true;
465 };
466 // Mock the CheckFileData method to return true indicating file data is valid
467 printUserData.CheckFileData = [](const std::string &, Json::Value &) {
468 return true;
469 };
470 // Mock the ParseUserDataFromJson method to do nothing
471 printUserData.ParseUserDataFromJson = [](const Json::Value &) {};
472 printUserData.ParseUserData();
473 // Assert that the method does not crash or throw exceptions
474 EXPECT_NO_THROW(printUserData.ParseUserData());
475 }
476
TEST_F(PrintUserDataTest,ParseUserDataFromJson_Test)477 TEST_F(PrintUserDataTest, ParseUserDataFromJson_Test)
478 {
479 Json::Value jsonObject;
480 PrintUserData printUserData;
481 printUserData.ParseUserDataFromJson(jsonObject);
482 EXPECT_EQ(printUserData.defaultPrinterId_, "");
483 EXPECT_EQ(printUserData.lastUsedPrinterId_, "");
484 EXPECT_EQ(printUserData.useLastUsedPrinterForDefault_, false);
485 }
TEST_F(PrintUserDataTest,ParseUserDataFromJson_Test_WithUserData)486 TEST_F(PrintUserDataTest, ParseUserDataFromJson_Test_WithUserData)
487 {
488 Json::Value jsonObject;
489 jsonObject["print_user_data"] = {
490 {
491 "1",
492 {
493 {"defaultPrinter", "printer1"},
494 {"lastUsedPrinter", "printer2"},
495 {"useLastUsedPrinterForDefault", true},
496 {"usedPrinterList", undefined{
497 Json::Value jsonArray;jsonArray.append("printer3");return jsonArray;}()}
498 }
499 }
500 };
501 PrintUserData printUserData;
502 printUserData.ParseUserDataFromJson(jsonObject);
503 EXPECT_EQ(printUserData.defaultPrinterId_, "printer1");
504 EXPECT_EQ(printUserData.lastUsedPrinterId_, "printer2");
505 EXPECT_EQ(printUserData.useLastUsedPrinterForDefault_, true);
506 }
TEST_F(PrintUserDataTest,ParseUserDataFromJson_Test_WithUserData_MissingDefaultPrinter)507 TEST_F(PrintUserDataTest, ParseUserDataFromJson_Test_WithUserData_MissingDefaultPrinter)
508 {
509 Json::Value jsonObject;
510 jsonObject["print_user_data"] = {
511 {
512 "1",
513 {
514 {"defaultPrinter", "printer1"},
515 {"lastUsedPrinter", "printer2"},
516 {"useLastUsedPrinterForDefault", true},
517 {"usedPrinterList", undefined{
518 Json::Value jsonArray;jsonArray.append("printer3");return jsonArray;}()}
519 }
520 }
521 };
522 PrintUserData printUserData;
523 printUserData.ParseUserDataFromJson(jsonObject);
524 EXPECT_EQ(printUserData.defaultPrinterId_, "");
525 EXPECT_EQ(printUserData.lastUsedPrinterId_, "printer2");
526 EXPECT_EQ(printUserData.useLastUsedPrinterForDefault_, true);
527 }
528
TEST_F(PrintUserDataTest,ConvertJsonToUsedPrinterList_Test)529 TEST_F(PrintUserDataTest, ConvertJsonToUsedPrinterList_Test)
530 {
531 PrintUserData printUserData;
532 Json::Value userData;
533 userData["usedPrinterList"].append("printer1");
534 userData["usedPrinterList"].append("printer2");
535 userData["usedPrinterList"].append("printer3");
536 EXPECT_TRUE(printUserData.ConvertJsonToUsedPrinterList(userData));
537 }
TEST_F(PrintUserDataTest,ConvertJsonToUsedPrinterList_Test_Invalid)538 TEST_F(PrintUserDataTest, ConvertJsonToUsedPrinterList_Test_Invalid)
539 {
540 PrintUserData printUserData;
541 Json::Value userData;
542 int printerId = 123;
543 userData["usedPrinterList"].append(printerId); // Invalid value
544 userData["usedPrinterList"].append("printer2");
545 EXPECT_FALSE(printUserData.ConvertJsonToUsedPrinterList(userData));
546 }
TEST_F(PrintUserDataTest,ConvertJsonToUsedPrinterList_Test_Empty)547 TEST_F(PrintUserDataTest, ConvertJsonToUsedPrinterList_Test_Empty)
548 {
549 PrintUserData printUserData;
550 Json::Value userData;
551 EXPECT_TRUE(printUserData.ConvertJsonToUsedPrinterList(userData));
552 }
553
TEST_F(PrintUserDataTest,GetFileData_ShouldReturnTrue_WhenFileIsOpenedSuccessfully)554 TEST_F(PrintUserDataTest, GetFileData_ShouldReturnTrue_WhenFileIsOpenedSuccessfully)
555 {
556 std::string fileData;
557 bool result = PrintUserData::GetFileData(fileData);
558 EXPECT_TRUE(result);
559 }
TEST_F(PrintUserDataTest,GetFileData_ShouldReturnFalse_WhenFileCannotBeOpened)560 TEST_F(PrintUserDataTest, GetFileData_ShouldReturnFalse_WhenFileCannotBeOpened)
561 {
562 std::string fileData;
563 // Mock the file path to simulate a failure to open the file
564 std::string mockFilePath = "/nonexistent/path";
565 bool result = PrintUserData::GetFileData(fileData);
566 EXPECT_FALSE(result);
567 }
TEST_F(PrintUserDataTest,GetFileData_ShouldReturnTrue_WhenFileIsCreatedSuccessfully)568 TEST_F(PrintUserDataTest, GetFileData_ShouldReturnTrue_WhenFileIsCreatedSuccessfully)
569 {
570 std::string fileData;
571 // Mock the file path to simulate a file creation scenario
572 std::string mockFilePath = "/tmp/nonexistent/path";
573 bool result = PrintUserData::GetFileData(fileData);
574 EXPECT_TRUE(result);
575 }
TEST_F(PrintUserDataTest,GetFileData_ShouldReturnFalse_WhenFileCannotBeCreated)576 TEST_F(PrintUserDataTest, GetFileData_ShouldReturnFalse_WhenFileCannotBeCreated)
577 {
578 std::string fileData;
579 // Mock the file path to simulate a failure to create the file
580 std::string mockFilePath = "/tmp/nonexistent/path/with/no/permission";
581 bool result = PrintUserData::GetFileData(fileData);
582 EXPECT_FALSE(result);
583 }
TEST_F(PrintUserDataTest,GetFileData_ShouldReturnTrue_WhenFileDataIsReadSuccessfully)584 TEST_F(PrintUserDataTest, GetFileData_ShouldReturnTrue_WhenFileDataIsReadSuccessfully)
585 {
586 std::string fileData;
587 // Mock the file path to simulate a successful read scenario
588 std::string mockFilePath = "/tmp/existing/file";
589 bool result = PrintUserData::GetFileData(fileData);
590 EXPECT_TRUE(result);
591 }
TEST_F(PrintUserDataTest,GetFileData_ShouldReturnFalse_WhenFileDataCannotBeRead)592 TEST_F(PrintUserDataTest, GetFileData_ShouldReturnFalse_WhenFileDataCannotBeRead)
593 {
594 std::string fileData;
595 // Mock the file path to simulate a failure to read the file
596 std::string mockFilePath = "/tmp/existing/file/with/no/permission";
597 bool result = PrintUserData::GetFileData(fileData);
598 EXPECT_FALSE(result);
599 }
600
TEST_F(PrintUserDataTest,CheckFileData_ShouldReturnFalse_WhenFileDataIsNotAcceptable)601 TEST_F(PrintUserDataTest, CheckFileData_ShouldReturnFalse_WhenFileDataIsNotAcceptable)
602 {
603 std::string fileData = "invalid json";
604 Json::Value jsonObject;
605 bool result = PrintUserData::CheckFileData(fileData, jsonObject);
606 EXPECT_FALSE(result);
607 }
TEST_F(PrintUserDataTest,CheckFileData_ShouldReturnFalse_WhenVersionIsNotPresent)608 TEST_F(PrintUserDataTest, CheckFileData_ShouldReturnFalse_WhenVersionIsNotPresent)
609 {
610 std::string fileData = "{" key ":" value "}";
611 Json::Value jsonObject;
612 bool result = PrintUserData::CheckFileData(fileData, jsonObject);
613 EXPECT_FALSE(result);
614 }
TEST_F(PrintUserDataTest,CheckFileData_ShouldReturnFalse_WhenVersionIsNotString)615 TEST_F(PrintUserDataTest, CheckFileData_ShouldReturnFalse_WhenVersionIsNotString)
616 {
617 std::string fileData = "{" version ":123}";
618 Json::Value jsonObject;
619 bool result = PrintUserData::CheckFileData(fileData, jsonObject);
620 EXPECT_FALSE(result);
621 }
TEST_F(PrintUserDataTest,CheckFileData_ShouldReturnFalse_WhenPrintUserDataIsNotPresent)622 TEST_F(PrintUserDataTest, CheckFileData_ShouldReturnFalse_WhenPrintUserDataIsNotPresent)
623 {
624 std::string fileData = "{" version ":" 1.0 "}";
625 Json::Value jsonObject;
626 bool result = PrintUserData::CheckFileData(fileData, jsonObject);
627 EXPECT_FALSE(result);
628 }
TEST_F(PrintUserDataTest,CheckFileData_ShouldReturnTrue_WhenAllConditionsAreMet)629 TEST_F(PrintUserDataTest, CheckFileData_ShouldReturnTrue_WhenAllConditionsAreMet)
630 {
631 std::string fileData = "{" version ":" 1.0 "," print_user_data ":" data "}";
632 Json::Value jsonObject;
633 bool result = PrintUserData::CheckFileData(fileData, jsonObject);
634 EXPECT_TRUE(result);
635 }
636
637 } // namespace OHOS::Print
638