Skip to content

Commit a75384b

Browse files
authored
test: clean up shadow variables for constants (#351)
1 parent f076ebf commit a75384b

9 files changed

+46
-97
lines changed

mongodbatlas/advanced_clusters_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ const (
3131
func TestAdvancedClusters_List(t *testing.T) {
3232
client, mux, teardown := setup()
3333
defer teardown()
34-
3534
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.5/groups/%s/clusters", groupID), func(w http.ResponseWriter, r *http.Request) {
3635
testMethod(t, r, http.MethodGet)
3736
fmt.Fprint(w, `{

mongodbatlas/alert_configurations_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ func TestAlertConfiguration_Create(t *testing.T) {
2828
client, mux, teardown := setup()
2929
defer teardown()
3030

31-
groupID := "6d2065c687d9d64ae7acdg41"
32-
3331
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.0/groups/%s/alertConfigs", groupID), func(w http.ResponseWriter, r *http.Request) {
3432
testMethod(t, r, http.MethodPost)
3533

mongodbatlas/alerts_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ func TestAlert_Get(t *testing.T) {
2727
client, mux, teardown := setup()
2828
defer teardown()
2929

30-
groupID := "535683b3794d371327b"
3130
alertID := "57b76ddc96e8215c017ceafb"
3231

3332
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.0/groups/%s/alerts/%s", groupID, alertID), func(w http.ResponseWriter, r *http.Request) {
@@ -261,7 +260,6 @@ func TestAlert_Acknowledge(t *testing.T) {
261260
client, mux, teardown := setup()
262261
defer teardown()
263262

264-
groupID := "535683b3794d371327b"
265263
alertID := "533dc40ae4b00835ff81eaee"
266264
acknowledgedUntil := "2026-10-01T00:00:00-0400"
267265

mongodbatlas/cloud_provider_snapshot_backup_policies_test.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ func TestCloudProviderSnapshotBackupPolicies_Get(t *testing.T) {
2828
client, mux, teardown := setup()
2929
defer teardown()
3030

31-
groupID := "5b6212af90dc76637950a2c6"
32-
clusterName := "myCluster"
33-
3431
var aws = "AWS"
3532
var regionName = "testRegion"
3633
var replicationSpecID = "5e2f1bcaf38990fab9227c9"
@@ -450,9 +447,6 @@ func TestCloudProviderSnapshotBackupPolicies_Delete(t *testing.T) {
450447
client, mux, teardown := setup()
451448
defer teardown()
452449

453-
groupID := "5b6212af90dc76637950a2c6"
454-
clusterName := "myCluster"
455-
456450
var aws = "AWS"
457451
var regionName = "testRegion"
458452
var replicationSpecID = "5e2f1bcaf38990fab9227c9"

mongodbatlas/cloud_provider_snapshot_export_buckets_test.go

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ func TestCloudProviderSnapshotExportBuckets_List(t *testing.T) {
2727
client, mux, teardown := setup()
2828
defer teardown()
2929

30-
projectID := "test-project-id"
31-
32-
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets", projectID)
30+
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets", groupID)
3331

3432
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
3533
testMethod(t, r, http.MethodGet)
@@ -52,7 +50,7 @@ func TestCloudProviderSnapshotExportBuckets_List(t *testing.T) {
5250
}`)
5351
})
5452

55-
cloudProviderSnapshots, _, err := client.CloudProviderSnapshotExportBuckets.List(ctx, projectID, nil)
53+
cloudProviderSnapshots, _, err := client.CloudProviderSnapshotExportBuckets.List(ctx, groupID, nil)
5654
if err != nil {
5755
t.Fatalf("CloudProviderSnapshotExportBuckets.List returned error: %v", err)
5856
}
@@ -84,10 +82,9 @@ func TestCloudProviderSnapshotExportBuckets_Get(t *testing.T) {
8482
client, mux, teardown := setup()
8583
defer teardown()
8684

87-
projectID := "test-project-id"
8885
bucketID := "bucket-id-test"
8986

90-
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets/%s", projectID, bucketID)
87+
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets/%s", groupID, bucketID)
9188

9289
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
9390
testMethod(t, r, http.MethodGet)
@@ -99,7 +96,7 @@ func TestCloudProviderSnapshotExportBuckets_Get(t *testing.T) {
9996
}`)
10097
})
10198

102-
cloudProviderSnapshotBucket, _, err := client.CloudProviderSnapshotExportBuckets.Get(ctx, projectID, bucketID)
99+
cloudProviderSnapshotBucket, _, err := client.CloudProviderSnapshotExportBuckets.Get(ctx, groupID, bucketID)
103100
if err != nil {
104101
t.Fatalf("CloudProviderSnapshotExportBuckets.Get returned error: %v", err)
105102
}
@@ -120,16 +117,14 @@ func TestCloudProviderSnapshotExportBuckets_Create(t *testing.T) {
120117
client, mux, teardown := setup()
121118
defer teardown()
122119

123-
projectID := "test-project-id"
124-
125120
createRequest := &CloudProviderSnapshotExportBucket{
126121
ID: "{BUCKET-ID}",
127122
BucketName: "example-bucket",
128123
CloudProvider: "AWS",
129124
IAMRoleID: "12345678f901a234dbdb00ca",
130125
}
131126

132-
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets", projectID)
127+
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets", groupID)
133128

134129
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
135130
expected := map[string]interface{}{
@@ -157,7 +152,7 @@ func TestCloudProviderSnapshotExportBuckets_Create(t *testing.T) {
157152
}`)
158153
})
159154

160-
cloudProviderSnapshot, _, err := client.CloudProviderSnapshotExportBuckets.Create(ctx, projectID, createRequest)
155+
cloudProviderSnapshot, _, err := client.CloudProviderSnapshotExportBuckets.Create(ctx, groupID, createRequest)
161156
if err != nil {
162157
t.Fatalf("CloudProviderSnapshotExportBuckets.Create returned error: %v", err)
163158
}
@@ -178,16 +173,15 @@ func TestCloudProviderSnapshotExportBuckets_Delete(t *testing.T) {
178173
client, mux, teardown := setup()
179174
defer teardown()
180175

181-
projectID := "project-id"
182176
bucketID := "bucket-id"
183177

184-
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets/%s", projectID, bucketID)
178+
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/backup/exportBuckets/%s", groupID, bucketID)
185179

186180
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
187181
testMethod(t, r, http.MethodDelete)
188182
})
189183

190-
_, err := client.CloudProviderSnapshotExportBuckets.Delete(ctx, projectID, bucketID)
184+
_, err := client.CloudProviderSnapshotExportBuckets.Delete(ctx, groupID, bucketID)
191185
if err != nil {
192186
t.Fatalf("CloudProviderSnapshotExportBuckets.Delete returned error: %v", err)
193187
}

mongodbatlas/cloud_provider_snapshot_export_jobs_test.go

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@ func TestCloudProviderSnapshotExportJobs_List(t *testing.T) {
2626
client, mux, teardown := setup()
2727
defer teardown()
2828

29-
projectID := "test-project-id"
30-
clusterName := "test-cluster-name"
31-
32-
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/backup/exports", projectID, clusterName)
29+
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/backup/exports", groupID, clusterName)
3330

3431
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
3532
testMethod(t, r, http.MethodGet)
@@ -84,7 +81,7 @@ func TestCloudProviderSnapshotExportJobs_List(t *testing.T) {
8481
}`)
8582
})
8683

87-
cloudProviderSnapshots, _, err := client.CloudProviderSnapshotExportJobs.List(ctx, projectID, clusterName, nil)
84+
cloudProviderSnapshots, _, err := client.CloudProviderSnapshotExportJobs.List(ctx, groupID, clusterName, nil)
8885
if err != nil {
8986
t.Fatalf("CloudProviderSnapshotExportJobs.List returned error: %v", err)
9087
}
@@ -148,11 +145,9 @@ func TestCloudProviderSnapshotExportJobs_Get(t *testing.T) {
148145
client, mux, teardown := setup()
149146
defer teardown()
150147

151-
projectID := "test-project-id"
152-
clusterName := "test-cluster-name"
153148
exportID := "job-id-test"
154149

155-
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/backup/exports/%s", projectID, clusterName, exportID)
150+
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/backup/exports/%s", groupID, clusterName, exportID)
156151

157152
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
158153
testMethod(t, r, http.MethodGet)
@@ -167,7 +162,7 @@ func TestCloudProviderSnapshotExportJobs_Get(t *testing.T) {
167162
}`)
168163
})
169164

170-
cloudProviderSnapshotBucket, _, err := client.CloudProviderSnapshotExportJobs.Get(ctx, projectID, clusterName, exportID)
165+
cloudProviderSnapshotBucket, _, err := client.CloudProviderSnapshotExportJobs.Get(ctx, groupID, clusterName, exportID)
171166
if err != nil {
172167
t.Fatalf("CloudProviderSnapshotExportJobs.Get returned error: %v", err)
173168
}
@@ -191,9 +186,6 @@ func TestCloudProviderSnapshotExportJobs_Create(t *testing.T) {
191186
client, mux, teardown := setup()
192187
defer teardown()
193188

194-
projectID := "test-project-id"
195-
clusterName := "test-cluster-name"
196-
197189
createRequest := &CloudProviderSnapshotExportJob{
198190
SnapshotID: "{SNAPSHOT-ID}",
199191
ExportBucketID: "{BUCKET-ID}",
@@ -205,7 +197,7 @@ func TestCloudProviderSnapshotExportJobs_Create(t *testing.T) {
205197
},
206198
}
207199

208-
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/backup/exports", projectID, clusterName)
200+
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/backup/exports", groupID, clusterName)
209201

210202
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
211203
fmt.Fprint(w, `{
@@ -228,7 +220,7 @@ func TestCloudProviderSnapshotExportJobs_Create(t *testing.T) {
228220
}`)
229221
})
230222

231-
cloudProviderSnapshot, _, err := client.CloudProviderSnapshotExportJobs.Create(ctx, projectID, clusterName, createRequest)
223+
cloudProviderSnapshot, _, err := client.CloudProviderSnapshotExportJobs.Create(ctx, groupID, clusterName, createRequest)
232224
if err != nil {
233225
t.Fatalf("CloudProviderSnapshotExportBuckets.Create returned error: %v", err)
234226
}

mongodbatlas/clusters_test.go

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,6 @@ func TestClusters_Create(t *testing.T) {
351351
client, mux, teardown := setup()
352352
defer teardown()
353353

354-
groupID := "1"
355-
356354
createRequest := &Cluster{
357355
ID: "1",
358356
AutoScaling: &AutoScaling{DiskGBEnabled: pointy.Bool(true),
@@ -536,9 +534,6 @@ func TestClusters_Update(t *testing.T) {
536534
client, mux, teardown := setup()
537535
defer teardown()
538536

539-
groupID := "1"
540-
clusterName := "AppData"
541-
542537
updateRequest := &Cluster{
543538
ID: "1",
544539
AutoScaling: &AutoScaling{DiskGBEnabled: pointy.Bool(true),
@@ -601,7 +596,7 @@ func TestClusters_Update(t *testing.T) {
601596
"mongoURI": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017",
602597
"mongoURIUpdated": "2017-10-23T21:26:17Z",
603598
"mongoURIWithOptions": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=mongo-shard-0",
604-
"name": "AppData",
599+
"name": clusterName,
605600
"numShards": float64(1),
606601
"paused": false,
607602
"providerSettings": map[string]interface{}{
@@ -652,7 +647,7 @@ func TestClusters_Update(t *testing.T) {
652647
"mongoURI": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017",
653648
"mongoURIUpdated": "2017-10-23T21:26:17Z",
654649
"mongoURIWithOptions": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=mongo-shard-0",
655-
"name": "AppData",
650+
"name": "globalCluster",
656651
"numShards": 1,
657652
"paused": false,
658653
"pitEnabled": false,
@@ -731,8 +726,6 @@ func TestClusters_UpdateProcessArgs(t *testing.T) {
731726
client, mux, teardown := setup()
732727
defer teardown()
733728

734-
groupID := "1"
735-
clusterName := "AppData"
736729
tlsProtocol := "TLS1_2"
737730
defaultReadConcern := "available"
738731
defaultWriteConcern := "1"
@@ -812,9 +805,6 @@ func TestClusters_GetProcessArgs(t *testing.T) {
812805
client, mux, teardown := setup()
813806
defer teardown()
814807

815-
groupID := "1"
816-
clusterName := "test-cluster"
817-
818808
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/processArgs", groupID, clusterName), func(w http.ResponseWriter, r *http.Request) {
819809
testMethod(t, r, http.MethodGet)
820810
fmt.Fprint(w, `{
@@ -862,9 +852,6 @@ func TestClusters_Get(t *testing.T) {
862852
client, mux, teardown := setup()
863853
defer teardown()
864854

865-
groupID := "1"
866-
clusterName := "appData"
867-
868855
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s", groupID, clusterName), func(w http.ResponseWriter, r *http.Request) {
869856
testMethod(t, r, http.MethodGet)
870857
fmt.Fprint(w, `{
@@ -911,7 +898,7 @@ func TestClusters_Get(t *testing.T) {
911898
"mongoURI": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017",
912899
"mongoURIUpdated": "2017-10-23T21:26:17Z",
913900
"mongoURIWithOptions": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=mongo-shard-0",
914-
"name": "AppData",
901+
"name": "globalCluster",
915902
"numShards": 1,
916903
"paused": false,
917904
"pitEnabled": false,
@@ -977,7 +964,7 @@ func TestClusters_Get(t *testing.T) {
977964
MongoURI: "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017",
978965
MongoURIUpdated: "2017-10-23T21:26:17Z",
979966
MongoURIWithOptions: "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=mongo-shard-0",
980-
Name: "AppData",
967+
Name: clusterName,
981968
NumShards: pointy.Int64(1),
982969
Paused: pointy.Bool(false),
983970
PitEnabled: pointy.Bool(false),
@@ -1012,9 +999,6 @@ func TestClusters_Status(t *testing.T) {
1012999
client, mux, teardown := setup()
10131000
defer teardown()
10141001

1015-
groupID := "1"
1016-
clusterName := "appData"
1017-
10181002
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/%s/status", groupID, clusterName), func(w http.ResponseWriter, r *http.Request) {
10191003
testMethod(t, r, http.MethodGet)
10201004
fmt.Fprint(w, `{ "changeStatus": "PENDING" }`)
@@ -1036,14 +1020,11 @@ func TestClusters_LoadSampleDataset(t *testing.T) {
10361020
client, mux, teardown := setup()
10371021
defer teardown()
10381022

1039-
groupID := "1"
1040-
clusterName := "appData"
1041-
10421023
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.0/groups/%s/sampleDatasetLoad/%s", groupID, clusterName), func(w http.ResponseWriter, r *http.Request) {
10431024
testMethod(t, r, http.MethodPost)
10441025
fmt.Fprint(w, `{
10451026
"_id": "1",
1046-
"clusterName": "appData",
1027+
"clusterName": "globalCluster",
10471028
"completeDate": null,
10481029
"createDate": "2021-03-26T16:30:47Z",
10491030
"errorMessage": null,
@@ -1071,7 +1052,6 @@ func TestClusters_GetSampleDatasetStatus(t *testing.T) {
10711052
client, mux, teardown := setup()
10721053
defer teardown()
10731054

1074-
groupID := "1"
10751055
jobID := "1"
10761056

10771057
mux.HandleFunc(fmt.Sprintf("/api/atlas/v1.0/groups/%s/sampleDatasetLoad/%s", groupID, jobID), func(w http.ResponseWriter, r *http.Request) {
@@ -1106,8 +1086,6 @@ func TestCloudProviderRegions_Get(t *testing.T) {
11061086
client, mux, teardown := setup()
11071087
defer teardown()
11081088

1109-
groupID := "5b6212af90dc76637950a2c6"
1110-
11111089
path := fmt.Sprintf("/api/atlas/v1.0/groups/%s/clusters/provider/regions", groupID)
11121090

11131091
mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
@@ -1313,9 +1291,6 @@ func TestClusters_Upgrade(t *testing.T) {
13131291
client, mux, teardown := setup()
13141292
defer teardown()
13151293

1316-
groupID := "1"
1317-
clusterName := "AppData"
1318-
13191294
upgradeRequest := &Cluster{
13201295
ID: "1",
13211296
AutoScaling: &AutoScaling{DiskGBEnabled: pointy.Bool(true),
@@ -1378,7 +1353,7 @@ func TestClusters_Upgrade(t *testing.T) {
13781353
"mongoURI": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017",
13791354
"mongoURIUpdated": "2017-10-23T21:26:17Z",
13801355
"mongoURIWithOptions": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=mongo-shard-0",
1381-
"name": "AppData",
1356+
"name": clusterName,
13821357
"numShards": float64(1),
13831358
"paused": false,
13841359
"providerSettings": map[string]interface{}{
@@ -1429,7 +1404,7 @@ func TestClusters_Upgrade(t *testing.T) {
14291404
"mongoURI": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017",
14301405
"mongoURIUpdated": "2017-10-23T21:26:17Z",
14311406
"mongoURIWithOptions": "mongodb://mongo-shard-00-00.mongodb.net:27017,mongo-shard-00-01.mongodb.net:27017,mongo-shard-00-02.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=mongo-shard-0",
1432-
"name": "AppData",
1407+
"name": "globalCluster",
14331408
"numShards": 1,
14341409
"paused": false,
14351410
"pitEnabled": false,

mongodbatlas/performance_advisor_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,11 @@ func TestPerformanceAdvisor_EnableManagedSlowOperationThreshold(t *testing.T) {
246246
client, mux, teardown := setup()
247247
defer teardown()
248248

249-
mux.HandleFunc(fmt.Sprintf("/"+performanceAdvisorManagedSlowMs+"/enable", projectID), func(w http.ResponseWriter, r *http.Request) {
249+
mux.HandleFunc(fmt.Sprintf("/"+performanceAdvisorManagedSlowMs+"/enable", groupID), func(w http.ResponseWriter, r *http.Request) {
250250
testMethod(t, r, http.MethodPost)
251251
})
252252

253-
_, err := client.PerformanceAdvisor.EnableManagedSlowOperationThreshold(ctx, projectID)
253+
_, err := client.PerformanceAdvisor.EnableManagedSlowOperationThreshold(ctx, groupID)
254254
if err != nil {
255255
t.Fatalf("PerformanceAdvisor.EnableManagedSlowOperationThreshold returned error: %v", err)
256256
}
@@ -260,11 +260,11 @@ func TestPerformanceAdvisor_DisableManagedSlowOperationThreshold(t *testing.T) {
260260
client, mux, teardown := setup()
261261
defer teardown()
262262

263-
mux.HandleFunc(fmt.Sprintf("/"+performanceAdvisorManagedSlowMs+"/disable", projectID), func(w http.ResponseWriter, r *http.Request) {
263+
mux.HandleFunc(fmt.Sprintf("/"+performanceAdvisorManagedSlowMs+"/disable", groupID), func(w http.ResponseWriter, r *http.Request) {
264264
testMethod(t, r, http.MethodDelete)
265265
})
266266

267-
_, err := client.PerformanceAdvisor.DisableManagedSlowOperationThreshold(ctx, projectID)
267+
_, err := client.PerformanceAdvisor.DisableManagedSlowOperationThreshold(ctx, groupID)
268268
if err != nil {
269269
t.Fatalf("PerformanceAdvisor.DisableManagedSlowOperationThreshold returned error: %v", err)
270270
}

0 commit comments

Comments
 (0)