• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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