Code Duplication    Length = 158-160 lines in 2 locations

backend/tracim_backend/tests/library/test_content_api.py 2 locations

@@ 2523-2682 (lines=160) @@
2520
        api2.save(content2)
2521
        transaction.commit()
2522
2523
    def test_archive_unarchive(self):
2524
        uapi = UserApi(
2525
            session=self.session,
2526
            config=self.app_config,
2527
            current_user=None,
2528
        )
2529
        group_api = GroupApi(
2530
            current_user=None,
2531
            session=self.session,
2532
            config=self.app_config,
2533
        )
2534
        groups = [group_api.get_one(Group.TIM_USER),
2535
                  group_api.get_one(Group.TIM_MANAGER),
2536
                  group_api.get_one(Group.TIM_ADMIN)]
2537
2538
        user1 = uapi.create_minimal_user(
2539
            email='this.is@user',
2540
            groups=groups,
2541
            save_now=True
2542
        )
2543
        u1id = user1.user_id
2544
2545
        workspace_api = WorkspaceApi(
2546
            current_user=user1,
2547
            session=self.session,
2548
            config=self.app_config,
2549
        )
2550
        workspace = workspace_api.create_workspace(
2551
            'test workspace',
2552
            save_now=True
2553
        )
2554
        wid = workspace.workspace_id
2555
2556
        user2 = uapi.create_minimal_user('[email protected]')
2557
        uapi.save(user2)
2558
2559
        RoleApi(
2560
            current_user=user1,
2561
            session=self.session,
2562
            config=self.app_config,
2563
        ).create_one(
2564
            user2,
2565
            workspace,
2566
            UserRoleInWorkspace.CONTENT_MANAGER,
2567
            with_notif=True,
2568
            flush=True
2569
        )
2570
2571
        # show archived is used at the top end of the test
2572
        api = ContentApi(
2573
            current_user=user1,
2574
            session=self.session,
2575
            show_archived=True,
2576
            config=self.app_config,
2577
        )
2578
        p = api.create(
2579
            content_type_slug=CONTENT_TYPES.File.slug,
2580
            workspace=workspace,
2581
            parent=None,
2582
            label='this_is_a_page',
2583
            do_save=True
2584
        )
2585
2586
        u1id = user1.user_id
2587
        u2id = user2.user_id
2588
        pcid = p.content_id
2589
        poid = p.owner_id
2590
2591
        transaction.commit()
2592
2593
        ####
2594
2595
        # refresh after commit
2596
        user1 = UserApi(
2597
            current_user=None,
2598
            config=self.app_config,
2599
            session=self.session
2600
        ).get_one(u1id)
2601
        workspace = WorkspaceApi(
2602
            current_user=user1,
2603
            session=self.session,
2604
            config=self.app_config,
2605
        ).get_one(wid)
2606
2607
        content = api.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2608
        eq_(u1id, content.owner_id)
2609
        eq_(poid, content.owner_id)
2610
2611
        u2api = UserApi(
2612
            session=self.session,
2613
            config=self.app_config,
2614
            current_user=None,
2615
        )
2616
        u2 = u2api.get_one(u2id)
2617
        api2 = ContentApi(
2618
            current_user=u2,
2619
            session=self.session,
2620
            config=self.app_config,
2621
            show_archived=True,
2622
        )
2623
        content2 = api2.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2624
        with new_revision(
2625
                session=self.session,
2626
                tm=transaction.manager,
2627
                content=content2,
2628
        ):
2629
            api2.archive(content2)
2630
        api2.save(content2)
2631
        transaction.commit()
2632
2633
        # refresh after commit
2634
        user1 = UserApi(
2635
            current_user=None,
2636
            session=self.session,
2637
            config=self.app_config,
2638
        ).get_one(u1id)
2639
        workspace = WorkspaceApi(
2640
            current_user=user1,
2641
            session=self.session,
2642
            config=self.app_config,
2643
        ).get_one(wid)
2644
        u2 = UserApi(
2645
            current_user=None,
2646
            session=self.session,
2647
            config=self.app_config,
2648
        ).get_one(u2id)
2649
        api = ContentApi(
2650
            current_user=user1,
2651
            session=self.session,
2652
            config=self.app_config,
2653
            show_archived=True,
2654
        )
2655
        api2 = ContentApi(
2656
            current_user=u2,
2657
            session=self.session,
2658
            config=self.app_config,
2659
            show_archived=True,
2660
        )
2661
2662
        updated = api2.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2663
        eq_(u2id, updated.owner_id,
2664
            'the owner id should be {} (found {})'.format(u2id,
2665
                                                          updated.owner_id))
2666
        eq_(True, updated.is_archived)
2667
        eq_(ActionDescription.ARCHIVING, updated.revision_type)
2668
2669
        ####
2670
2671
        updated2 = api.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2672
        with new_revision(
2673
            session=self.session,
2674
            tm=transaction.manager,
2675
            content=updated,
2676
2677
        ):
2678
            api.unarchive(updated)
2679
        api.save(updated2)
2680
        eq_(False, updated2.is_archived)
2681
        eq_(ActionDescription.UNARCHIVING, updated2.revision_type)
2682
        eq_(u1id, updated2.owner_id)
2683
2684
    def test_delete_undelete(self):
2685
        uapi = UserApi(
@@ 2684-2841 (lines=158) @@
2681
        eq_(ActionDescription.UNARCHIVING, updated2.revision_type)
2682
        eq_(u1id, updated2.owner_id)
2683
2684
    def test_delete_undelete(self):
2685
        uapi = UserApi(
2686
            session=self.session,
2687
            config=self.app_config,
2688
            current_user=None,
2689
        )
2690
        group_api = GroupApi(
2691
            current_user=None,
2692
            session=self.session,
2693
            config=self.app_config,
2694
        )
2695
        groups = [group_api.get_one(Group.TIM_USER),
2696
                  group_api.get_one(Group.TIM_MANAGER),
2697
                  group_api.get_one(Group.TIM_ADMIN)]
2698
2699
        user1 = uapi.create_minimal_user(
2700
            email='this.is@user',
2701
            groups=groups,
2702
            save_now=True
2703
        )
2704
        u1id = user1.user_id
2705
2706
        workspace_api = WorkspaceApi(
2707
            current_user=user1,
2708
            session=self.session,
2709
            config=self.app_config,
2710
        )
2711
        workspace = workspace_api.create_workspace(
2712
            'test workspace',
2713
            save_now=True
2714
        )
2715
        wid = workspace.workspace_id
2716
2717
        user2 = uapi.create_minimal_user('[email protected]')
2718
        uapi.save(user2)
2719
2720
        RoleApi(
2721
            current_user=user1,
2722
            session=self.session,
2723
            config=self.app_config,
2724
        ).create_one(
2725
            user2,
2726
            workspace,
2727
            UserRoleInWorkspace.CONTENT_MANAGER,
2728
            with_notif=True,
2729
            flush=True
2730
        )
2731
2732
        # show archived is used at the top end of the test
2733
        api = ContentApi(
2734
            current_user=user1,
2735
            session=self.session,
2736
            config=self.app_config,
2737
            show_deleted=True,
2738
        )
2739
        p = api.create(
2740
            content_type_slug=CONTENT_TYPES.File.slug,
2741
            workspace=workspace,
2742
            parent=None,
2743
            label='this_is_a_page',
2744
            do_save=True
2745
        )
2746
2747
        u1id = user1.user_id
2748
        u2id = user2.user_id
2749
        pcid = p.content_id
2750
        poid = p.owner_id
2751
2752
        transaction.commit()
2753
2754
        ####
2755
        user1 = UserApi(
2756
            current_user=None,
2757
            session=self.session,
2758
            config=self.app_config,
2759
        ).get_one(u1id)
2760
        workspace = WorkspaceApi(
2761
            current_user=user1,
2762
            session=self.session,
2763
            config=self.app_config,
2764
        ).get_one(wid)
2765
2766
        content = api.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2767
        eq_(u1id, content.owner_id)
2768
        eq_(poid, content.owner_id)
2769
2770
        u2 = UserApi(
2771
            current_user=None,
2772
            session=self.session,
2773
            config=self.app_config,
2774
        ).get_one(u2id)
2775
        api2 = ContentApi(
2776
            current_user=u2,
2777
            session=self.session,
2778
            config=self.app_config,
2779
            show_deleted=True,
2780
        )
2781
        content2 = api2.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2782
        with new_revision(
2783
                session=self.session,
2784
                tm=transaction.manager,
2785
                content=content2,
2786
        ):
2787
            api2.delete(content2)
2788
        api2.save(content2)
2789
        transaction.commit()
2790
2791
        ####
2792
2793
        user1 = UserApi(
2794
            current_user=None,
2795
            session=self.session,
2796
            config=self.app_config,
2797
        ).get_one(u1id)
2798
        workspace = WorkspaceApi(
2799
            current_user=user1,
2800
            session=self.session,
2801
            config=self.app_config,
2802
        ).get_one(wid)
2803
        # show archived is used at the top end of the test
2804
        api = ContentApi(
2805
            current_user=user1,
2806
            session=self.session,
2807
            config=self.app_config,
2808
            show_deleted=True,
2809
        )
2810
        u2 = UserApi(
2811
            current_user=None,
2812
            session=self.session,
2813
            config=self.app_config,
2814
        ).get_one(u2id)
2815
        api2 = ContentApi(
2816
            current_user=u2,
2817
            session=self.session,
2818
            config=self.app_config,
2819
            show_deleted=True
2820
        )
2821
2822
        updated = api2.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2823
        eq_(u2id, updated.owner_id,
2824
            'the owner id should be {} (found {})'.format(u2id,
2825
                                                          updated.owner_id))
2826
        eq_(True, updated.is_deleted)
2827
        eq_(ActionDescription.DELETION, updated.revision_type)
2828
2829
        ####
2830
2831
        updated2 = api.get_one(pcid, CONTENT_TYPES.Any_SLUG, workspace)
2832
        with new_revision(
2833
            tm=transaction.manager,
2834
            session=self.session,
2835
            content=updated2,
2836
        ):
2837
            api.undelete(updated2)
2838
        api.save(updated2)
2839
        eq_(False, updated2.is_deleted)
2840
        eq_(ActionDescription.UNDELETION, updated2.revision_type)
2841
        eq_(u1id, updated2.owner_id)
2842
2843
    def test_unit__get_last_active__ok__nominal_case(self):
2844
        uapi = UserApi(