@@ -2310,7 +2310,75 @@ def test_delete_project_disallow_deletion(self):
2310
2310
pretend .call ("manage.project.settings" , project_name = "foo" )
2311
2311
]
2312
2312
2313
- def test_delete_project (self , db_request ):
2313
+ def test_get_project_contributors (self , db_request ):
2314
+ project = ProjectFactory .create (name = "foo" )
2315
+ db_request .session = pretend .stub (
2316
+ flash = pretend .call_recorder (lambda * a , ** kw : None ),
2317
+ )
2318
+
2319
+ db_request .user = UserFactory .create ()
2320
+ project .users = [db_request .user ]
2321
+
2322
+ res = views .get_project_contributors (project .name , db_request )
2323
+ assert res == [db_request .user ]
2324
+
2325
+ def test_get_user_role_in_project_single_role_owner (self , db_request ):
2326
+ project = ProjectFactory .create (name = "foo" )
2327
+ db_request .session = pretend .stub (
2328
+ flash = pretend .call_recorder (lambda * a , ** kw : None ),
2329
+ )
2330
+ db_request .user = UserFactory .create ()
2331
+ project .users = [db_request .user ]
2332
+ RoleFactory (user = db_request .user , project = project )
2333
+
2334
+ res = views .get_user_role_in_project (
2335
+ project .name , db_request .user .username , db_request
2336
+ )
2337
+ assert res == "Owner"
2338
+
2339
+ def test_get_user_role_in_project_single_role_maintainer (self , db_request ):
2340
+ project = ProjectFactory .create (name = "foo" )
2341
+ db_request .session = pretend .stub (
2342
+ flash = pretend .call_recorder (lambda * a , ** kw : None ),
2343
+ )
2344
+ db_request .user = UserFactory .create ()
2345
+ project .users = [db_request .user ]
2346
+ RoleFactory (user = db_request .user , project = project , role_name = "Maintainer" )
2347
+
2348
+ res = views .get_user_role_in_project (
2349
+ project .name , db_request .user .username , db_request
2350
+ )
2351
+ assert res == "Maintainer"
2352
+
2353
+ def test_get_user_role_in_project_two_roles_owner_and_maintainer (self , db_request ):
2354
+ project = ProjectFactory .create (name = "foo" )
2355
+ db_request .session = pretend .stub (
2356
+ flash = pretend .call_recorder (lambda * a , ** kw : None ),
2357
+ )
2358
+ db_request .user = UserFactory .create ()
2359
+ project .users = [db_request .user ]
2360
+ RoleFactory (user = db_request .user , project = project , role_name = "Owner" )
2361
+ RoleFactory (user = db_request .user , project = project , role_name = "Maintainer" )
2362
+
2363
+ res = views .get_user_role_in_project (
2364
+ project .name , db_request .user .username , db_request
2365
+ )
2366
+ assert res == "Owner"
2367
+
2368
+ def test_get_user_role_in_project_no_role (self , db_request ):
2369
+ project = ProjectFactory .create (name = "foo" )
2370
+ db_request .session = pretend .stub (
2371
+ flash = pretend .call_recorder (lambda * a , ** kw : None ),
2372
+ )
2373
+ db_request .user = UserFactory .create ()
2374
+ project .users = [db_request .user ]
2375
+
2376
+ res = views .get_user_role_in_project (
2377
+ project .name , db_request .user .username , db_request
2378
+ )
2379
+ assert res == ""
2380
+
2381
+ def test_delete_project (self , monkeypatch , db_request ):
2314
2382
project = ProjectFactory .create (name = "foo" )
2315
2383
2316
2384
db_request .route_path = pretend .call_recorder (lambda * a , ** kw : "/the-redirect" )
@@ -2319,6 +2387,22 @@ def test_delete_project(self, db_request):
2319
2387
)
2320
2388
db_request .POST ["confirm_project_name" ] = project .normalized_name
2321
2389
db_request .user = UserFactory .create ()
2390
+
2391
+ get_user_role_in_project = pretend .call_recorder (
2392
+ lambda project_name , username , req : "Owner"
2393
+ )
2394
+ monkeypatch .setattr (views , "get_user_role_in_project" , get_user_role_in_project )
2395
+
2396
+ get_project_contributors = pretend .call_recorder (
2397
+ lambda project_name , req : [db_request .user ]
2398
+ )
2399
+ monkeypatch .setattr (views , "get_project_contributors" , get_project_contributors )
2400
+
2401
+ send_removed_project_email = pretend .call_recorder (lambda req , user , ** k : None )
2402
+ monkeypatch .setattr (
2403
+ views , "send_removed_project_email" , send_removed_project_email
2404
+ )
2405
+
2322
2406
db_request .remote_addr = "192.168.1.1"
2323
2407
2324
2408
result = views .delete_project (project , db_request )
@@ -2329,6 +2413,26 @@ def test_delete_project(self, db_request):
2329
2413
assert db_request .route_path .calls == [pretend .call ("manage.projects" )]
2330
2414
assert isinstance (result , HTTPSeeOther )
2331
2415
assert result .headers ["Location" ] == "/the-redirect"
2416
+
2417
+ assert get_user_role_in_project .calls == [
2418
+ pretend .call (project .name , db_request .user .username , db_request ,),
2419
+ pretend .call (project .name , db_request .user .username , db_request ,),
2420
+ ]
2421
+
2422
+ assert get_project_contributors .calls == [
2423
+ pretend .call (project .name , db_request ,)
2424
+ ]
2425
+
2426
+ assert send_removed_project_email .calls == [
2427
+ pretend .call (
2428
+ db_request ,
2429
+ db_request .user ,
2430
+ project_name = project .name ,
2431
+ submitter_name = db_request .user .username ,
2432
+ submitter_role = "Owner" ,
2433
+ recipient_role = "Owner" ,
2434
+ )
2435
+ ]
2332
2436
assert not (db_request .db .query (Project ).filter (Project .name == "foo" ).count ())
2333
2437
2334
2438
@@ -2495,6 +2599,7 @@ def test_delete_project_release(self, monkeypatch):
2495
2599
project = pretend .stub (
2496
2600
name = "foobar" , record_event = pretend .call_recorder (lambda * a , ** kw : None )
2497
2601
),
2602
+ created = datetime .datetime (2017 , 2 , 5 , 17 , 18 , 18 , 462_634 ),
2498
2603
)
2499
2604
request = pretend .stub (
2500
2605
POST = {"confirm_version" : release .version },
@@ -2511,7 +2616,25 @@ def test_delete_project_release(self, monkeypatch):
2511
2616
)
2512
2617
journal_obj = pretend .stub ()
2513
2618
journal_cls = pretend .call_recorder (lambda ** kw : journal_obj )
2619
+
2620
+ get_user_role_in_project = pretend .call_recorder (
2621
+ lambda project_name , username , req : "Owner"
2622
+ )
2623
+ monkeypatch .setattr (views , "get_user_role_in_project" , get_user_role_in_project )
2624
+ get_project_contributors = pretend .call_recorder (
2625
+ lambda project_name , request : [request .user ]
2626
+ )
2627
+ monkeypatch .setattr (views , "get_project_contributors" , get_project_contributors )
2628
+
2514
2629
monkeypatch .setattr (views , "JournalEntry" , journal_cls )
2630
+ send_removed_project_release_email = pretend .call_recorder (
2631
+ lambda req , contrib , ** k : None
2632
+ )
2633
+ monkeypatch .setattr (
2634
+ views ,
2635
+ "send_removed_project_release_email" ,
2636
+ send_removed_project_release_email ,
2637
+ )
2515
2638
2516
2639
view = views .ManageProjectRelease (release , request )
2517
2640
@@ -2520,6 +2643,25 @@ def test_delete_project_release(self, monkeypatch):
2520
2643
assert isinstance (result , HTTPSeeOther )
2521
2644
assert result .headers ["Location" ] == "/the-redirect"
2522
2645
2646
+ assert get_user_role_in_project .calls == [
2647
+ pretend .call (release .project .name , request .user .username , request ,),
2648
+ pretend .call (release .project .name , request .user .username , request ,),
2649
+ ]
2650
+ assert get_project_contributors .calls == [
2651
+ pretend .call (release .project .name , request ,)
2652
+ ]
2653
+
2654
+ assert send_removed_project_release_email .calls == [
2655
+ pretend .call (
2656
+ request ,
2657
+ request .user ,
2658
+ release = release ,
2659
+ submitter_name = request .user .username ,
2660
+ submitter_role = "Owner" ,
2661
+ recipient_role = "Owner" ,
2662
+ )
2663
+ ]
2664
+
2523
2665
assert request .db .delete .calls == [pretend .call (release )]
2524
2666
assert request .db .add .calls == [pretend .call (journal_obj )]
2525
2667
assert request .flags .enabled .calls == [
0 commit comments