def test_update_anno_duplicate_tags(wa_text): catcha = wa_text x = CRUD.create_anno(catcha) # save values before update original_tags = x.anno_tags.count() original_targets = x.target_set.count() original_body_text = x.body_text original_created = x.created assert original_tags > 0 # remove tags and add duplicates wa = dict(wa_text) no_tags = [y for y in wa['body']['items'] if y['purpose'] != PURPOSE_TAGGING] wa['body']['items'] = no_tags for i in range(0, 4): wa['body']['items'].append(make_wa_tag('tag_repeat')) CRUD.update_anno(x, wa) assert(x.anno_tags.count() == 1) # get serialized because it's what's returned in a search wa_updated = x.serialized cleaned_tags = [y for y in wa_updated['body']['items'] if y['purpose'] == PURPOSE_TAGGING] assert len(cleaned_tags) == 1 assert cleaned_tags[0]['value'] == 'tag_repeat'
def test_update_anno_ok(wa_text): catcha = wa_text x = CRUD.create_anno(catcha, catcha['creator']['id']) # save values before update original_tags = x.anno_tags.count() original_targets = x.target_set.count() original_body_text = x.body_text original_created = x.created # add tag and target wa = dict(wa_text) wa['body']['items'].append({ 'type': 'TextualBody', 'purpose': 'tagging', 'value': 'tag2017', }) wa['target']['type'] = 'List' wa['target']['items'].append({ 'type': 'Video', 'format': 'video/youtube', 'source': 'https://youtu.be/92vuuZt7wak', }) CRUD.update_anno(x, catcha) assert x.modified.utcoffset() is not None assert original_created.utcoffset() is not None assert(x.anno_tags.count() == original_tags+1) assert(x.target_set.count() == original_targets+1) assert(x.body_text == original_body_text) assert(x.created == original_created) assert(x.modified > original_created)
def test_update_anno_tag_too_long(wa_text): catcha = wa_text x = CRUD.create_anno(catcha) # save values before update original_tags = x.anno_tags.count() original_targets = x.target_set.count() original_body_text = x.body_text original_created = x.created # add tag and target wa = dict(wa_text) wa['body']['items'].append({ 'type': 'TextualBody', 'purpose': 'tagging', 'value': ''' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam tellus metus, efficitur vel diam id, tincidunt faucibus ante. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin at tincidunt leo. Donec dictum nulla in bibendum sodales. Pellentesque molestie ligula et mi luctus, sed elementum orci consequat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer aliquet tincidunt fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse quis magna erat. Sed pellentesque finibus euismod. Curabitur tincidunt molestie purus nec vehicula. Vivamus pretium egestas maximus. Phasellus molestie elementum nunc a imperdiet. Curabitur elementum turpis at mattis molestie. Phasellus volutpat magna ut arcu consectetur, et condimentum dui semper. Morbi quis lorem sed enim molestie vehicula vel eu sapien. Sed pulvinar orci non vulputate tempus. Fusce justo turpis, porttitor in fringilla non, ullamcorper in est. Nulla semper tellus id nunc ultrices, nec finibus elit accumsan. Mauris urna metus, consectetur ac hendrerit volutpat, malesuada eu felis. Mauris varius ante ut placerat dapibus. Cras ac tincidunt eros, ac imperdiet ligula. Nullam eget libero sodales, dapibus orci id, aliquet nulla. Morbi et leo nec felis lacinia dictum. Duis ut mauris dignissim, efficitur justo eu, sollicitudin nisl.''', }) with pytest.raises(InvalidInputWebAnnotationError): CRUD.update_anno(x, catcha) assert(x.anno_tags.count() == original_tags) assert(x.target_set.count() == original_targets) assert(x.body_text == original_body_text) assert(x.created == original_created) assert(x.modified > original_created)
def test_update_anno_delete_tags_ok(wa_text): catcha = wa_text x = CRUD.create_anno(catcha) # save values before update original_tags = x.anno_tags.count() original_targets = x.target_set.count() original_body_text = x.body_text original_created = x.created assert original_tags > 0 # add tag and target wa = dict(wa_text) no_tags = [x for x in wa['body']['items'] if x['purpose'] != PURPOSE_TAGGING] assert len(no_tags) == 1 wa['body']['items'] = no_tags CRUD.update_anno(x, catcha) assert(x.anno_tags.count() == 0) assert(x.target_set.count() == original_targets) assert(x.body_text == original_body_text) assert(x.created == original_created) assert(x.modified > original_created)