| @@ 479-589 (lines=111) @@ | ||
| 476 | assert 'code' in res.json.keys() |
|
| 477 | assert res.json_body['code'] == error.INSUFFICIENT_USER_PROFILE |
|
| 478 | ||
| 479 | def test_api__get_recently_active_content__ok__200__limit_2_multiple(self): |
|
| 480 | # TODO - G.M - 2018-07-20 - Better fix for this test, do not use sleep() |
|
| 481 | # anymore to fix datetime lack of precision. |
|
| 482 | ||
| 483 | # init DB |
|
| 484 | dbsession = get_tm_session(self.session_factory, transaction.manager) |
|
| 485 | admin = dbsession.query(models.User) \ |
|
| 486 | .filter(models.User.email == '[email protected]') \ |
|
| 487 | .one() |
|
| 488 | workspace_api = WorkspaceApi( |
|
| 489 | current_user=admin, |
|
| 490 | session=dbsession, |
|
| 491 | config=self.app_config |
|
| 492 | ||
| 493 | ) |
|
| 494 | workspace = WorkspaceApi( |
|
| 495 | current_user=admin, |
|
| 496 | session=dbsession, |
|
| 497 | config=self.app_config, |
|
| 498 | ).create_workspace( |
|
| 499 | 'test workspace', |
|
| 500 | save_now=True |
|
| 501 | ) |
|
| 502 | workspace2 = WorkspaceApi( |
|
| 503 | current_user=admin, |
|
| 504 | session=dbsession, |
|
| 505 | config=self.app_config, |
|
| 506 | ).create_workspace( |
|
| 507 | 'test workspace2', |
|
| 508 | save_now=True |
|
| 509 | ) |
|
| 510 | ||
| 511 | api = ContentApi( |
|
| 512 | current_user=admin, |
|
| 513 | session=dbsession, |
|
| 514 | config=self.app_config, |
|
| 515 | ) |
|
| 516 | main_folder_workspace2 = api.create(content_type_list.Folder.slug, workspace2, None, 'Hepla', '', True) # nopep8 |
|
| 517 | main_folder = api.create(content_type_list.Folder.slug, workspace, None, 'this is randomized folder', '', True) # nopep8 |
|
| 518 | # creation order test |
|
| 519 | firstly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'creation_order_test', '', True) # nopep8 |
|
| 520 | secondly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'another creation_order_test', '', True) # nopep8 |
|
| 521 | # update order test |
|
| 522 | firstly_created_but_recently_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'update_order_test', '', True) # nopep8 |
|
| 523 | secondly_created_but_not_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'another update_order_test', '', True) # nopep8 |
|
| 524 | with new_revision( |
|
| 525 | session=dbsession, |
|
| 526 | tm=transaction.manager, |
|
| 527 | content=firstly_created_but_recently_updated, |
|
| 528 | ): |
|
| 529 | firstly_created_but_recently_updated.description = 'Just an update' |
|
| 530 | api.save(firstly_created_but_recently_updated) |
|
| 531 | # comment change order |
|
| 532 | firstly_created_but_recently_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is randomized label content', '', True) # nopep8 |
|
| 533 | secondly_created_but_not_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is another randomized label content', '', True) # nopep8 |
|
| 534 | comments = api.create_comment(workspace, firstly_created_but_recently_commented, 'juste a super comment', True) # nopep8 |
|
| 535 | content_workspace_2 = api.create(content_type_list.Page.slug, workspace2, main_folder_workspace2, 'content_workspace_2', '', True) # nopep8 |
|
| 536 | dbsession.flush() |
|
| 537 | transaction.commit() |
|
| 538 | ||
| 539 | self.testapp.authorization = ( |
|
| 540 | 'Basic', |
|
| 541 | ( |
|
| 542 | '[email protected]', |
|
| 543 | '[email protected]' |
|
| 544 | ) |
|
| 545 | ) |
|
| 546 | params = { |
|
| 547 | 'limit': 2, |
|
| 548 | } |
|
| 549 | res = self.testapp.get( |
|
| 550 | '/api/v2/users/1/workspaces/{}/contents/recently_active'.format(workspace.workspace_id), # nopep8 |
|
| 551 | status=200, |
|
| 552 | params=params |
|
| 553 | ) # nopep8 |
|
| 554 | res = res.json_body |
|
| 555 | assert len(res) == 2 |
|
| 556 | for elem in res: |
|
| 557 | assert isinstance(elem['content_id'], int) |
|
| 558 | assert isinstance(elem['content_type'], str) |
|
| 559 | assert elem['content_type'] != 'comments' |
|
| 560 | assert isinstance(elem['is_archived'], bool) |
|
| 561 | assert isinstance(elem['is_deleted'], bool) |
|
| 562 | assert isinstance(elem['label'], str) |
|
| 563 | assert isinstance(elem['parent_id'], int) or elem['parent_id'] is None |
|
| 564 | assert isinstance(elem['show_in_ui'], bool) |
|
| 565 | assert isinstance(elem['slug'], str) |
|
| 566 | assert isinstance(elem['status'], str) |
|
| 567 | assert isinstance(elem['sub_content_types'], list) |
|
| 568 | for sub_content_type in elem['sub_content_types']: |
|
| 569 | assert isinstance(sub_content_type, str) |
|
| 570 | assert isinstance(elem['workspace_id'], int) |
|
| 571 | # comment is newest than page2 |
|
| 572 | assert res[0]['content_id'] == firstly_created_but_recently_commented.content_id |
|
| 573 | assert res[1]['content_id'] == secondly_created_but_not_commented.content_id |
|
| 574 | ||
| 575 | params = { |
|
| 576 | 'limit': 2, |
|
| 577 | 'before_content_id': secondly_created_but_not_commented.content_id, # nopep8 |
|
| 578 | } |
|
| 579 | res = self.testapp.get( |
|
| 580 | '/api/v2/users/1/workspaces/{}/contents/recently_active'.format(workspace.workspace_id), # nopep8 |
|
| 581 | status=200, |
|
| 582 | params=params |
|
| 583 | ) |
|
| 584 | res = res.json_body |
|
| 585 | assert len(res) == 2 |
|
| 586 | # last updated content is newer than other one despite creation |
|
| 587 | # of the other is more recent |
|
| 588 | assert res[0]['content_id'] == firstly_created_but_recently_updated.content_id |
|
| 589 | assert res[1]['content_id'] == secondly_created_but_not_updated.content_id |
|
| 590 | ||
| 591 | def test_api__get_recently_active_content__err__400__bad_before_content_id(self): # nopep8 |
|
| 592 | # TODO - G.M - 2018-07-20 - Better fix for this test, do not use sleep() |
|
| @@ 160-270 (lines=111) @@ | ||
| 157 | # folder subcontent modification does not change folder order |
|
| 158 | assert res[6]['content_id'] == main_folder.content_id |
|
| 159 | ||
| 160 | def test_api__get_recently_active_content__ok__200__limit_2_multiple(self): |
|
| 161 | # TODO - G.M - 2018-07-20 - Better fix for this test, do not use sleep() |
|
| 162 | # anymore to fix datetime lack of precision. |
|
| 163 | ||
| 164 | # init DB |
|
| 165 | dbsession = get_tm_session(self.session_factory, transaction.manager) |
|
| 166 | admin = dbsession.query(models.User) \ |
|
| 167 | .filter(models.User.email == '[email protected]') \ |
|
| 168 | .one() |
|
| 169 | workspace_api = WorkspaceApi( |
|
| 170 | current_user=admin, |
|
| 171 | session=dbsession, |
|
| 172 | config=self.app_config |
|
| 173 | ||
| 174 | ) |
|
| 175 | workspace = WorkspaceApi( |
|
| 176 | current_user=admin, |
|
| 177 | session=dbsession, |
|
| 178 | config=self.app_config, |
|
| 179 | ).create_workspace( |
|
| 180 | 'test workspace', |
|
| 181 | save_now=True |
|
| 182 | ) |
|
| 183 | workspace2 = WorkspaceApi( |
|
| 184 | current_user=admin, |
|
| 185 | session=dbsession, |
|
| 186 | config=self.app_config, |
|
| 187 | ).create_workspace( |
|
| 188 | 'test workspace2', |
|
| 189 | save_now=True |
|
| 190 | ) |
|
| 191 | ||
| 192 | api = ContentApi( |
|
| 193 | current_user=admin, |
|
| 194 | session=dbsession, |
|
| 195 | config=self.app_config, |
|
| 196 | ) |
|
| 197 | main_folder_workspace2 = api.create(content_type_list.Folder.slug, workspace2, None, 'Hepla', '', True) # nopep8 |
|
| 198 | main_folder = api.create(content_type_list.Folder.slug, workspace, None, 'this is randomized folder', '', True) # nopep8 |
|
| 199 | # creation order test |
|
| 200 | firstly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'creation_order_test', '', True) # nopep8 |
|
| 201 | secondly_created = api.create(content_type_list.Page.slug, workspace, main_folder, 'another creation_order_test', '', True) # nopep8 |
|
| 202 | # update order test |
|
| 203 | firstly_created_but_recently_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'update_order_test', '', True) # nopep8 |
|
| 204 | secondly_created_but_not_updated = api.create(content_type_list.Page.slug, workspace, main_folder, 'another update_order_test', '', True) # nopep8 |
|
| 205 | with new_revision( |
|
| 206 | session=dbsession, |
|
| 207 | tm=transaction.manager, |
|
| 208 | content=firstly_created_but_recently_updated, |
|
| 209 | ): |
|
| 210 | firstly_created_but_recently_updated.description = 'Just an update' |
|
| 211 | api.save(firstly_created_but_recently_updated) |
|
| 212 | # comment change order |
|
| 213 | firstly_created_but_recently_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is randomized label content', '', True) # nopep8 |
|
| 214 | secondly_created_but_not_commented = api.create(content_type_list.Page.slug, workspace, main_folder, 'this is another randomized label content', '', True) # nopep8 |
|
| 215 | comments = api.create_comment(workspace, firstly_created_but_recently_commented, 'juste a super comment', True) # nopep8 |
|
| 216 | content_workspace_2 = api.create(content_type_list.Page.slug, workspace2, main_folder_workspace2, 'content_workspace_2', '', True) # nopep8 |
|
| 217 | dbsession.flush() |
|
| 218 | transaction.commit() |
|
| 219 | ||
| 220 | self.testapp.authorization = ( |
|
| 221 | 'Basic', |
|
| 222 | ( |
|
| 223 | '[email protected]', |
|
| 224 | '[email protected]' |
|
| 225 | ) |
|
| 226 | ) |
|
| 227 | params = { |
|
| 228 | 'limit': 2, |
|
| 229 | } |
|
| 230 | res = self.testapp.get( |
|
| 231 | '/api/v2/users/me/workspaces/{}/contents/recently_active'.format(workspace.workspace_id), # nopep8 |
|
| 232 | status=200, |
|
| 233 | params=params |
|
| 234 | ) # nopep8 |
|
| 235 | res = res.json_body |
|
| 236 | assert len(res) == 2 |
|
| 237 | for elem in res: |
|
| 238 | assert isinstance(elem['content_id'], int) |
|
| 239 | assert isinstance(elem['content_type'], str) |
|
| 240 | assert elem['content_type'] != 'comments' |
|
| 241 | assert isinstance(elem['is_archived'], bool) |
|
| 242 | assert isinstance(elem['is_deleted'], bool) |
|
| 243 | assert isinstance(elem['label'], str) |
|
| 244 | assert isinstance(elem['parent_id'], int) or elem['parent_id'] is None |
|
| 245 | assert isinstance(elem['show_in_ui'], bool) |
|
| 246 | assert isinstance(elem['slug'], str) |
|
| 247 | assert isinstance(elem['status'], str) |
|
| 248 | assert isinstance(elem['sub_content_types'], list) |
|
| 249 | for sub_content_type in elem['sub_content_types']: |
|
| 250 | assert isinstance(sub_content_type, str) |
|
| 251 | assert isinstance(elem['workspace_id'], int) |
|
| 252 | # comment is newest than page2 |
|
| 253 | assert res[0]['content_id'] == firstly_created_but_recently_commented.content_id |
|
| 254 | assert res[1]['content_id'] == secondly_created_but_not_commented.content_id |
|
| 255 | ||
| 256 | params = { |
|
| 257 | 'limit': 2, |
|
| 258 | 'before_content_id': secondly_created_but_not_commented.content_id, # nopep8 |
|
| 259 | } |
|
| 260 | res = self.testapp.get( |
|
| 261 | '/api/v2/users/me/workspaces/{}/contents/recently_active'.format(workspace.workspace_id), # nopep8 |
|
| 262 | status=200, |
|
| 263 | params=params |
|
| 264 | ) |
|
| 265 | res = res.json_body |
|
| 266 | assert len(res) == 2 |
|
| 267 | # last updated content is newer than other one despite creation |
|
| 268 | # of the other is more recent |
|
| 269 | assert res[0]['content_id'] == firstly_created_but_recently_updated.content_id |
|
| 270 | assert res[1]['content_id'] == secondly_created_but_not_updated.content_id |
|
| 271 | ||
| 272 | def test_api__get_recently_active_content__err__400__bad_before_content_id(self): # nopep8 |
|
| 273 | # TODO - G.M - 2018-07-20 - Better fix for this test, do not use sleep() |
|