--- test_name: no_annotation_no_drafts strict: false marks: - usefixtures: - django_live_url stages: - id: signup type: ref - name: stage request: data: label_config: title: Test Draft 1 method: POST url: '{django_live_url}/api/projects' response: save: json: project_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: data: text: Test example phrase method: POST url: '{django_live_url}/api/projects/{project_pk}/tasks' response: save: json: task_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task_pk}/drafts' response: save: json: draft_id: id status_code: 201 - name: stage request: headers: content-type: application/json method: GET url: '{django_live_url}/api/tasks/{task_pk}/drafts' response: status_code: 200 - name: stage request: method: GET url: '{django_live_url}/api/drafts/{draft_id}/' response: json: annotation: null created_ago: !re_match 0.+minutes lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_A user: test_suites_user@heartex.com save: json: task_pk: task status_code: 200 - name: stage request: headers: content-type: application/json json: draft_id: '{draft_id}' lead_time: 91.01 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task_pk}/annotations' response: status_code: 201 - name: stage request: method: GET url: '{django_live_url}/api/drafts/{draft_id}/' response: status_code: 404 --- test_name: No annotation, draft exists strict: false marks: - usefixtures: - django_live_url stages: - id: signup type: ref - name: stage request: data: label_config: title: Test Draft 2 method: POST url: '{django_live_url}/api/projects' response: save: json: project_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: data: text: Test example phrase method: POST url: '{django_live_url}/api/projects/{project_pk}/tasks' response: save: json: task_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task_pk}/drafts' response: save: json: draft_id: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_B method: PATCH url: '{django_live_url}/api/drafts/{draft_id}' response: status_code: 200 - name: stage request: method: GET url: '{django_live_url}/api/drafts/{draft_id}/' response: json: annotation: null created_ago: !re_match 0.+minutes lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_B user: test_suites_user@heartex.com save: json: task_pk: task status_code: 200 --- test_name: Completion exists, no drafts strict: false marks: - usefixtures: - django_live_url stages: - id: signup type: ref - name: stage request: data: label_config: title: Test Draft 3 method: POST url: '{django_live_url}/api/projects' response: save: json: project_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: data: text: Test example phrase method: POST url: '{django_live_url}/api/projects/{project_pk}/tasks' response: save: json: task_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 34.56 result: - from_name: text_class to_name: text type: choices value: choices: - class_B method: POST url: '{django_live_url}/api/tasks/{task_pk}/annotations' response: save: json: annotation_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 56.78 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task_pk}/annotations/{annotation_pk}/drafts' response: save: json: draft_id: id status_code: 201 - name: stage request: method: GET url: '{django_live_url}/api/drafts/{draft_id}' response: json: created_ago: !re_match 0.+minutes lead_time: 56.78 result: - from_name: text_class to_name: text type: choices value: choices: - class_A user: test_suites_user@heartex.com save: json: annotation_pk: annotation task_pk: task status_code: 200 --- test_name: Completion exists, draft exists strict: false marks: - usefixtures: - django_live_url stages: - id: signup type: ref - name: stage request: data: label_config: title: Test Draft 4 method: POST url: '{django_live_url}/api/projects' response: save: json: project_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: data: text: Test example phrase method: POST url: '{django_live_url}/api/projects/{project_pk}/tasks' response: save: json: task_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 34.56 result: - from_name: text_class to_name: text type: choices value: choices: - class_B method: POST url: '{django_live_url}/api/tasks/{task_pk}/annotations' response: save: json: annotation_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 56.78 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task_pk}/annotations/{annotation_pk}/drafts' response: save: json: draft_id: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 99.99 result: - from_name: text_class to_name: text type: choices value: choices: - class_B method: PATCH url: '{django_live_url}/api/drafts/{draft_id}' response: status_code: 200 - name: stage request: method: GET url: '{django_live_url}/api/drafts/{draft_id}' response: json: created_ago: !re_match 0.+minutes lead_time: 99.99 result: - from_name: text_class to_name: text type: choices value: choices: - class_B user: test_suites_user@heartex.com save: json: annotation_pk: annotation task_pk: task status_code: 200 --- test_name: remove_other_users_draft_on_annotation_create strict: false marks: - usefixtures: - django_live_url stages: - id: signup type: ref - id: create_project type: ref - id: import_task type: ref - id: get_user_token type: ref - id: create_annotation type: ref # Test this functionality with legacy tokens, need to enable them for the org - name: enable_legacy_api_tokens request: url: "{django_live_url}/api/jwt/settings" method: POST headers: content-type: application/json json: legacy_api_tokens_enabled: true response: status_code: 200 - id: get_invite_url type: ref - id: logout type: ref # create second user - name: signup_other_user request: url: "{django_live_url}{invite_url}" data: email: other_user@heartex.com password: 12345678 method: POST response: status_code: 302 - name: create_draft request: headers: content-type: application/json json: lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task_pk}/annotations/{annotation_pk}/drafts' # url: '{django_live_url}/api/tasks/{task_pk}/drafts' response: save: json: draft_pk: id status_code: 201 - name: get_drafts request: method: GET url: '{django_live_url}/api/tasks/{task_pk}/drafts' response: status_code: 200 json: - id: !int '{draft_pk}' - name: stage request: headers: content-type: application/json json: result: - from_name: label to_name: text type: choices value: choices: - 1 method: PATCH url: '{django_live_url}/api/annotations/{annotation_pk}' response: status_code: 200 - name: get_drafts request: headers: authorization: "Token {user_token}" method: GET url: '{django_live_url}/api/tasks/{task_pk}/drafts' response: verify_response_with: function: tests.utils:empty_list status_code: 200 --- test_name: draft_permission strict: false marks: - usefixtures: - django_live_url stages: - id: signup type: ref - name: stage request: data: label_config: title: Test Draft 1 method: POST url: '{django_live_url}/api/projects' response: save: json: project_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: data: text: Test example phrase1 method: POST url: '{django_live_url}/api/projects/{project_pk}/tasks' response: save: json: task_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: data: text: Test example phrase2 method: POST url: '{django_live_url}/api/projects/{project_pk}/tasks' response: save: json: task2_pk: id status_code: 201 - name: stage request: headers: content-type: application/json json: lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task2_pk}/drafts' response: save: json: draft_id: id status_code: 201 - name: stage request: headers: content-type: application/json method: GET url: '{django_live_url}/api/tasks/{task2_pk}/drafts' response: status_code: 200 - name: stage request: method: GET url: '{django_live_url}/api/drafts/{draft_id}/' response: json: annotation: null created_ago: !re_match 0.+minutes lead_time: 12.34 result: - from_name: text_class to_name: text type: choices value: choices: - class_A user: test_suites_user@heartex.com status_code: 200 - name: stage request: headers: content-type: application/json json: draft_id: '{draft_id}' lead_time: 91.01 result: - from_name: text_class to_name: text type: choices value: choices: - class_A method: POST url: '{django_live_url}/api/tasks/{task_pk}/annotations' response: status_code: 403 - name: stage request: method: GET url: '{django_live_url}/api/drafts/{draft_id}/' response: status_code: 200