Code Duplication    Length = 118-120 lines in 2 locations

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

@@ 1126-1245 (lines=120) @@
1123
        eq_('', c.label)
1124
        eq_(ActionDescription.COMMENT, c.revision_type)
1125
1126
    def test_unit_copy_file_different_label_different_parent_ok(self):
1127
        uapi = UserApi(
1128
            session=self.session,
1129
            config=self.app_config,
1130
            current_user=None,
1131
        )
1132
        group_api = GroupApi(
1133
            current_user=None,
1134
            session=self.session,
1135
            config=self.app_config
1136
        )
1137
        groups = [group_api.get_one(Group.TIM_USER),
1138
                  group_api.get_one(Group.TIM_MANAGER),
1139
                  group_api.get_one(Group.TIM_ADMIN)]
1140
1141
        user = uapi.create_minimal_user(
1142
            email='user1@user',
1143
            groups=groups,
1144
            save_now=True
1145
        )
1146
        user2 = uapi.create_minimal_user(
1147
            email='user2@user',
1148
            groups=groups,
1149
            save_now=True
1150
        )
1151
        workspace = WorkspaceApi(
1152
            current_user=user,
1153
            session=self.session,
1154
            config=self.app_config,
1155
        ).create_workspace(
1156
            'test workspace',
1157
            save_now=True
1158
        )
1159
        RoleApi(
1160
            current_user=user,
1161
            session=self.session,
1162
            config=self.app_config,
1163
        ).create_one(
1164
            user2,
1165
            workspace,
1166
            UserRoleInWorkspace.WORKSPACE_MANAGER,
1167
            with_notif=False
1168
        )
1169
        api = ContentApi(
1170
            current_user=user,
1171
            session=self.session,
1172
            config=self.app_config,
1173
        )
1174
        foldera = api.create(
1175
            CONTENT_TYPES.Folder.slug,
1176
            workspace,
1177
            None,
1178
            'folder a',
1179
            '',
1180
            True
1181
        )
1182
        with self.session.no_autoflush:
1183
            text_file = api.create(
1184
                content_type_slug=CONTENT_TYPES.File.slug,
1185
                workspace=workspace,
1186
                parent=foldera,
1187
                label='test_file',
1188
                do_save=False,
1189
            )
1190
            api.update_file_data(
1191
                text_file,
1192
                'test_file',
1193
                'text/plain',
1194
                b'test_content'
1195
            )
1196
1197
        api.save(text_file, ActionDescription.CREATION)
1198
        api2 = ContentApi(
1199
            current_user=user2,
1200
            session=self.session,
1201
            config=self.app_config,
1202
        )
1203
        workspace2 = WorkspaceApi(
1204
            current_user=user2,
1205
            session=self.session,
1206
            config=self.app_config,
1207
        ).create_workspace(
1208
            'test workspace2',
1209
            save_now=True
1210
        )
1211
        folderb = api2.create(
1212
            CONTENT_TYPES.Folder.slug,
1213
            workspace2,
1214
            None,
1215
            'folder b',
1216
            '',
1217
            True
1218
        )
1219
1220
        api2.copy(
1221
            item=text_file,
1222
            new_parent=folderb,
1223
            new_label='test_file_copy'
1224
        )
1225
1226
        transaction.commit()
1227
        text_file_copy = api2.get_one_by_label_and_parent(
1228
            'test_file_copy',
1229
            folderb,
1230
        )
1231
1232
        assert text_file != text_file_copy
1233
        assert text_file_copy.content_id != text_file.content_id
1234
        assert text_file_copy.workspace_id == workspace2.workspace_id
1235
        assert text_file_copy.depot_file.file.read() == text_file.depot_file.file.read()   # nopep8
1236
        assert text_file_copy.depot_file.path != text_file.depot_file.path
1237
        assert text_file_copy.label == 'test_file_copy'
1238
        assert text_file_copy.type == text_file.type
1239
        assert text_file_copy.parent.content_id == folderb.content_id
1240
        assert text_file_copy.owner.user_id == user.user_id
1241
        assert text_file_copy.description == text_file.description
1242
        assert text_file_copy.file_extension == text_file.file_extension
1243
        assert text_file_copy.file_mimetype == text_file.file_mimetype
1244
        assert text_file_copy.revision_type == ActionDescription.COPY
1245
        assert len(text_file_copy.revisions) == len(text_file.revisions) + 1
1246
1247
    def test_unit_copy_file__same_label_different_parent_ok(self):
1248
        uapi = UserApi(
@@ 1247-1364 (lines=118) @@
1244
        assert text_file_copy.revision_type == ActionDescription.COPY
1245
        assert len(text_file_copy.revisions) == len(text_file.revisions) + 1
1246
1247
    def test_unit_copy_file__same_label_different_parent_ok(self):
1248
        uapi = UserApi(
1249
            session=self.session,
1250
            config=self.app_config,
1251
            current_user=None,
1252
        )
1253
        group_api = GroupApi(
1254
            current_user=None,
1255
            session=self.session,
1256
            config=self.app_config,
1257
        )
1258
        groups = [group_api.get_one(Group.TIM_USER),
1259
                  group_api.get_one(Group.TIM_MANAGER),
1260
                  group_api.get_one(Group.TIM_ADMIN)]
1261
1262
        user = uapi.create_minimal_user(
1263
            email='user1@user',
1264
            groups=groups,
1265
            save_now=True
1266
        )
1267
        user2 = uapi.create_minimal_user(
1268
            email='user2@user',
1269
            groups=groups,
1270
            save_now=True
1271
        )
1272
        workspace = WorkspaceApi(
1273
            current_user=user,
1274
            session=self.session,
1275
            config=self.app_config,
1276
        ).create_workspace(
1277
            'test workspace',
1278
            save_now=True
1279
        )
1280
        RoleApi(
1281
            current_user=user,
1282
            session=self.session,
1283
            config=self.app_config,
1284
        ).create_one(
1285
            user2,
1286
            workspace,
1287
            UserRoleInWorkspace.WORKSPACE_MANAGER,
1288
            with_notif=False
1289
        )
1290
        api = ContentApi(
1291
            current_user=user,
1292
            session=self.session,
1293
            config=self.app_config,
1294
        )
1295
        foldera = api.create(
1296
            CONTENT_TYPES.Folder.slug,
1297
            workspace,
1298
            None,
1299
            'folder a',
1300
            '',
1301
            True
1302
        )
1303
        with self.session.no_autoflush:
1304
            text_file = api.create(
1305
                content_type_slug=CONTENT_TYPES.File.slug,
1306
                workspace=workspace,
1307
                parent=foldera,
1308
                label='test_file',
1309
                do_save=False,
1310
            )
1311
            api.update_file_data(
1312
                text_file,
1313
                'test_file',
1314
                'text/plain',
1315
                b'test_content'
1316
            )
1317
1318
        api.save(text_file, ActionDescription.CREATION)
1319
        api2 = ContentApi(
1320
            current_user=user2,
1321
            session=self.session,
1322
            config=self.app_config,
1323
        )
1324
        workspace2 = WorkspaceApi(
1325
            current_user=user2,
1326
            session=self.session,
1327
            config=self.app_config,
1328
        ).create_workspace(
1329
            'test workspace2',
1330
            save_now=True
1331
        )
1332
        folderb = api2.create(
1333
            CONTENT_TYPES.Folder.slug,
1334
            workspace2,
1335
            None,
1336
            'folder b',
1337
            '',
1338
            True
1339
        )
1340
        api2.copy(
1341
            item=text_file,
1342
            new_parent=folderb,
1343
        )
1344
1345
        transaction.commit()
1346
        text_file_copy = api2.get_one_by_label_and_parent(
1347
            'test_file',
1348
            folderb,
1349
        )
1350
1351
        assert text_file != text_file_copy
1352
        assert text_file_copy.content_id != text_file.content_id
1353
        assert text_file_copy.workspace_id == workspace2.workspace_id
1354
        assert text_file_copy.depot_file.file.read() == text_file.depot_file.file.read()  # nopep8
1355
        assert text_file_copy.depot_file.path != text_file.depot_file.path
1356
        assert text_file_copy.label == text_file.label
1357
        assert text_file_copy.type == text_file.type
1358
        assert text_file_copy.parent.content_id == folderb.content_id
1359
        assert text_file_copy.owner.user_id == user.user_id
1360
        assert text_file_copy.description == text_file.description
1361
        assert text_file_copy.file_extension == text_file.file_extension
1362
        assert text_file_copy.file_mimetype == text_file.file_mimetype
1363
        assert text_file_copy.revision_type == ActionDescription.COPY
1364
        assert len(text_file_copy.revisions) == len(text_file.revisions) + 1
1365
1366
    def test_unit_copy_file_different_label_same_parent_ok(self):
1367
        uapi = UserApi(