1 /*
2  * Copyright (c) 2021 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 <climits>
17 #include <gtest/gtest.h>
18 #include "abs_shared_result_set.h"
19 #include "data_ability_predicates.h"
20 #include "values_bucket.h"
21 #include "data_ability_operation.h"
22 #include "data_ability_operation_builder.h"
23 
24 namespace OHOS {
25 namespace AppExecFwk {
26 using namespace testing::ext;
27 using namespace OHOS;
28 using namespace OHOS::AppExecFwk;
29 class DataAbilityOperationModuleTest : public testing::Test {
30 public:
31     static void SetUpTestCase(void);
32     static void TearDownTestCase(void);
33     void SetUp();
34     void TearDown();
35 };
36 
SetUpTestCase(void)37 void DataAbilityOperationModuleTest::SetUpTestCase(void)
38 {}
39 
TearDownTestCase(void)40 void DataAbilityOperationModuleTest::TearDownTestCase(void)
41 {}
42 
SetUp(void)43 void DataAbilityOperationModuleTest::SetUp(void)
44 {}
45 
TearDown(void)46 void DataAbilityOperationModuleTest::TearDown(void)
47 {}
48 
49 /**
50  * @tc.number: AaFwk_DataAbilityOperation_InsertBuilder_0100
51  * @tc.name: DataAbilityOperation
52  * @tc.desc: Get the file types in the dataability.
53 
54  */
55 HWTEST_F(DataAbilityOperationModuleTest, AaFwk_DataAbilityOperation_InsertBuilder_0100, Function | MediumTest | Level1)
56 {
57     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_InsertBuilder_0100";
58     std::shared_ptr<NativeRdb::ValuesBucket> values = std::make_shared<NativeRdb::ValuesBucket>();
59     std::shared_ptr<Uri> uri = std::make_shared<Uri>("dataability://com.example.myapplication5.DataAbilityTest");
60     std::shared_ptr<DataAbilityOperation> operation =
61         DataAbilityOperation::NewInsertBuilder(uri)->WithValuesBucket(values)->Build();
62     EXPECT_NE(operation, nullptr);
63 
64     bool isInsertOperation = operation->IsInsertOperation();
65     EXPECT_TRUE(isInsertOperation);
66 
67     std::shared_ptr<Uri> operationUri = operation->GetUri();
68     EXPECT_EQ(operationUri->ToString(), "dataability://com.example.myapplication5.DataAbilityTest");
69 
70     int type = operation->GetType();
71     EXPECT_EQ(type, DataAbilityOperation::TYPE_INSERT);
72     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_InsertBuilder_0100";
73 }
74 
75 /**
76  * @tc.number: AaFwk_DataAbilityOperation_UpdateBuilder_0100
77  * @tc.name: DataAbilityOperation
78  * @tc.desc: Get the file types in the dataability.
79 
80  */
81 HWTEST_F(DataAbilityOperationModuleTest, AaFwk_DataAbilityOperation_UpdateBuilder_0100, Function | MediumTest | Level1)
82 {
83     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_UpdateBuilder_0100";
84     std::shared_ptr<NativeRdb::ValuesBucket> values = std::make_shared<NativeRdb::ValuesBucket>();
85     std::shared_ptr<NativeRdb::DataAbilityPredicates> predicates = std::make_shared<NativeRdb::DataAbilityPredicates>();
86     std::shared_ptr<Uri> uri = std::make_shared<Uri>("dataability://com.example.myapplication5.DataAbilityTest");
87     std::shared_ptr<DataAbilityOperation> operation = DataAbilityOperation::NewUpdateBuilder(uri)
88         ->WithValuesBucket(values)
89         ->WithPredicatesBackReference(0, 0)
90         ->WithPredicates(predicates)
91         ->WithInterruptionAllowed(true)
92         ->Build();
93     EXPECT_TRUE(operation == nullptr); // ValuesBucket is empty.
94     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_UpdateBuilder_0100";
95 }
96 
97 /**
98  * @tc.number: AaFwk_DataAbilityOperation_AssertBuilder_0100
99  * @tc.name: DataAbilityOperation
100  * @tc.desc: Get the file types in the dataability.
101 
102  */
103 HWTEST_F(DataAbilityOperationModuleTest, AaFwk_DataAbilityOperation_AssertBuilder_0100, Function | MediumTest | Level1)
104 {
105     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_AssertBuilder_0100";
106     std::shared_ptr<Uri> uri = std::make_shared<Uri>("dataability://com.example.myapplication5.DataAbilityTest");
107     std::shared_ptr<DataAbilityOperation> operation =
108         DataAbilityOperation::NewAssertBuilder(uri)->WithExpectedCount(2)->Build();
109     EXPECT_NE(operation, nullptr);
110 
111     bool isAssertOperation = operation->IsAssertOperation();
112     EXPECT_TRUE(isAssertOperation);
113 
114     int count = operation->GetExpectedCount();
115     EXPECT_EQ(count, 2);
116 
117     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_AssertBuilder_0100";
118 }
119 
120 /**
121  * @tc.number: AaFwk_DataAbilityOperation_DeleteBuilder_0100
122  * @tc.name: DataAbilityOperation
123  * @tc.desc: Get the file types in the dataability.
124 
125  */
126 HWTEST_F(DataAbilityOperationModuleTest, AaFwk_DataAbilityOperation_DeleteBuilder_0100, Function | MediumTest | Level1)
127 {
128     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_DeleteBuilder_0100";
129     std::shared_ptr<NativeRdb::DataAbilityPredicates> predicates = std::make_shared<NativeRdb::DataAbilityPredicates>();
130     EXPECT_NE(predicates, nullptr);
131     std::shared_ptr<Uri> uri = std::make_shared<Uri>("dataability://com.example.myapplication5.DataAbilityTest");
132     std::shared_ptr<DataAbilityOperationBuilder> builder = DataAbilityOperation::NewDeleteBuilder(uri);
133     EXPECT_NE(builder, nullptr);
134     std::shared_ptr<DataAbilityOperation> operation = builder->WithPredicates(predicates)->Build();
135     EXPECT_NE(operation, nullptr);
136     bool isDeleteOperation = operation->IsDeleteOperation();
137     EXPECT_TRUE(isDeleteOperation);
138 
139     GTEST_LOG_(INFO) << "AaFwk_DataAbilityOperation_DeleteBuilder_0100";
140 }
141 }  // namespace AppExecFwk
142 }  // namespace OHOS
143