• 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 "ringtone_scanner_db_test.h"
17 
18 #include <string>
19 
20 #include "ability_context_impl.h"
21 #include "rdb_helper.h"
22 #include "ringtone_data_manager.h"
23 #include "ringtone_errno.h"
24 #include "ringtone_rdbstore.h"
25 #define private public
26 #include "ringtone_scanner_db.h"
27 #undef private
28 #include "ringtone_unittest_utils.h"
29 #include "ringtone_scanner_utils.h"
30 #include "ringtone_type.h"
31 
32 using namespace std;
33 using namespace OHOS;
34 using namespace testing::ext;
35 
36 namespace OHOS {
37 namespace Media {
38 class ConfigTestOpenCall : public NativeRdb::RdbOpenCallback {
39 public:
40     int OnCreate(NativeRdb::RdbStore &rdbStore) override;
41     int OnUpgrade(NativeRdb::RdbStore &rdbStore, int oldVersion, int newVersion) override;
42     static const string CREATE_TABLE_TEST;
43 };
44 
45 const string ConfigTestOpenCall::CREATE_TABLE_TEST = string("CREATE TABLE IF NOT EXISTS test ") +
46     "(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, salary REAL, blobType BLOB)";
47 
OnCreate(NativeRdb::RdbStore & store)48 int ConfigTestOpenCall::OnCreate(NativeRdb::RdbStore &store)
49 {
50     return store.ExecuteSql(CREATE_TABLE_TEST);
51 }
52 
OnUpgrade(NativeRdb::RdbStore & store,int oldVersion,int newVersion)53 int ConfigTestOpenCall::OnUpgrade(NativeRdb::RdbStore &store, int oldVersion, int newVersion)
54 {
55     return 0;
56 }
57 shared_ptr<RingtoneUnistore> g_uniStore = nullptr;
58 
SetUpTestCase()59 void RingtoneScannerDbTest::SetUpTestCase() {}
60 
TearDownTestCase()61 void RingtoneScannerDbTest::TearDownTestCase() {}
62 
63 // SetUp:Execute before each test case
SetUp()64 void RingtoneScannerDbTest::SetUp()
65 {
66     auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
67     auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
68     abilityContextImpl->SetStageContext(stageContext);
69     g_uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
70     int32_t ret = g_uniStore->Init();
71     EXPECT_EQ(ret, E_OK);
72 }
73 
TearDown(void)74 void RingtoneScannerDbTest::TearDown(void) {}
75 
76 HWTEST_F(RingtoneScannerDbTest, scannerDb_QueryRingtoneRdb_test_001, TestSize.Level0)
77 {
78     RingtoneScannerDb ringtoneScannerDb;
79     string whereClause = {};
80     vector<string> whereArgs = {};
81     vector<string> columns;
82     shared_ptr<NativeRdb::ResultSet> resultSet = nullptr;
83     int ret = ringtoneScannerDb.QueryRingtoneRdb(whereClause, whereArgs, columns, resultSet);
84     EXPECT_EQ(ret, E_OK);
85     g_uniStore->Stop();
86     ret = ringtoneScannerDb.QueryRingtoneRdb(whereClause, whereArgs, columns, resultSet);
87     EXPECT_EQ(ret, E_RDB);
88 }
89 
90 HWTEST_F(RingtoneScannerDbTest, scannerDb_InsertMetadata_test_001, TestSize.Level0)
91 {
92     RingtoneScannerDb ringtoneScannerDb;
93     RingtoneMetadata metadata;
94     string tableName;
95     g_uniStore->Stop();
96     int32_t ret = ringtoneScannerDb.InsertMetadata(metadata, tableName);
97     // stop g_uniStore will cause insert failed
98     EXPECT_EQ(ret, E_DB_FAIL);
99     struct stat statInfo;
100     metadata.SetData(STORAGE_FILES_DIR);
101     metadata.SetDisplayName(RingtoneScannerUtils::GetFileNameFromUri(STORAGE_FILES_DIR));
102     metadata.SetTitle(RingtoneScannerUtils::GetFileTitle(metadata.GetDisplayName()));
103     metadata.SetMediaType(static_cast<RingtoneMediaType>(RINGTONE_MEDIA_TYPE_AUDIO));
104     metadata.SetSize(statInfo.st_size);
105     metadata.SetDateModified(statInfo.st_mtime);
106     const int64_t DATE_TAKEN = 1;
107     metadata.SetDateTaken(DATE_TAKEN);
108     ret = ringtoneScannerDb.InsertMetadata(metadata, tableName);
109     EXPECT_EQ(ret, E_DB_FAIL);
110     const int64_t DATE_ADD = 1;
111     metadata.SetDateAdded(DATE_ADD);
112     ret = ringtoneScannerDb.InsertMetadata(metadata, tableName);
113     EXPECT_EQ(ret, E_DB_FAIL);
114 }
115 
116 HWTEST_F(RingtoneScannerDbTest, scannerDb_UpdateMetadata_test_001, TestSize.Level0)
117 {
118     RingtoneScannerDb ringtoneScannerDb;
119     RingtoneMetadata metadata;
120     string tableName;
121     g_uniStore->Stop();
122     int32_t ret = ringtoneScannerDb.UpdateMetadata(metadata, tableName);
123     EXPECT_EQ(ret, E_RDB);
124 }
125 
126 HWTEST_F(RingtoneScannerDbTest, scannerDb_UpdateRingtoneRdb_test_001, TestSize.Level0)
127 {
128     RingtoneScannerDb ringtoneScannerDb;
129     NativeRdb::ValuesBucket valuesBucket;
130     string whereClause = {};
131     vector<string> whereArgs = {};
132     int ret = ringtoneScannerDb.UpdateRingtoneRdb(valuesBucket, whereClause, whereArgs);
133     EXPECT_EQ(ret, E_DB_FAIL);
134     g_uniStore->Stop();
135     ret = ringtoneScannerDb.UpdateRingtoneRdb(valuesBucket, whereClause, whereArgs);
136     EXPECT_EQ(ret, E_RDB);
137 }
138 
139 HWTEST_F(RingtoneScannerDbTest, scannerDb_GetFileBasicInfo_test_001, TestSize.Level0)
140 {
141     RingtoneScannerDb ringtoneScannerDb;
142     const string path = "scannerDb_GetFileBasicInfo_test_001";
143     unique_ptr<RingtoneMetadata> metadata = make_unique<RingtoneMetadata>();
144     metadata->SetData(STORAGE_FILES_DIR);
145     metadata->SetDisplayName(RingtoneScannerUtils::GetFileNameFromUri(STORAGE_FILES_DIR));
146     metadata->SetTitle(RingtoneScannerUtils::GetFileTitle(metadata->GetDisplayName()));
147     metadata->SetMediaType(static_cast<RingtoneMediaType>(RINGTONE_MEDIA_TYPE_AUDIO));
148     g_uniStore->Stop();
149     int ret = ringtoneScannerDb.GetFileBasicInfo(path, metadata);
150     EXPECT_EQ(ret, E_DB_FAIL);
151 }
152 } // namespace Media
153 } // namespace OHOS
154