Source code for openpyxl.comments.tests.test_comment_sheet

# Copyright (c) 2010-2023 openpyxl

from openpyxl.xml.functions import fromstring, tostring
from openpyxl.tests.helper import compare_xml
from openpyxl import Workbook
from ..comment_sheet import CommentRecord


def _comment_list():
    from ..comments import Comment
    wb = Workbook()
    ws = wb.active
    comment1 = Comment("text", "author")
    comment2 = Comment("text2", "author2")
    comment3 = Comment("text3", "author3")
    ws["B2"].comment = comment1
    ws["C7"].comment = comment2
    ws["D9"].comment = comment3

    comments = []
    for coord, cell in sorted(ws._cells.items()):
        if cell._comment is not None:
            comment = CommentRecord.from_cell(cell)
            comments.append(comment)

    return comments


[docs] class TestComment:
[docs] def test_ctor(self): comment = CommentRecord() comment.text.t = "Some kind of comment" xml = tostring(comment.to_tree()) expected = """ <comment authorId="0" ref="" shapeId="0"> <text> <t>Some kind of comment</t> </text> </comment> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_from_xml(self): src = """ <comment authorId="0" ref="A1"> <text></text> </comment> """ node = fromstring(src) comment = CommentRecord.from_tree(node) assert comment == CommentRecord(ref="A1")
[docs] class TestCommentSheet:
[docs] def test_read_comments(self, datadir): from ..comment_sheet import CommentSheet datadir.chdir() with open("comments1.xml") as src: node = fromstring(src.read()) comments = CommentSheet.from_tree(node) assert comments.authors.author == ['author2', 'author', 'author3'] assert len(comments.commentList) == 3
[docs] def test_from_comments(self, datadir): from .. comment_sheet import CommentSheet datadir.chdir() comments = _comment_list() cs = CommentSheet.from_comments(comments) xml = tostring(cs.to_tree()) with open('comments_out.xml') as src: expected = src.read() diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_path(self): from ..comment_sheet import CommentSheet from ..author import AuthorList cs = CommentSheet(authors=AuthorList(), commentList=()) assert cs.path == '/xl/comments/commentNone.xml'
[docs] def test_read_google_docs(datadir): datadir.chdir() xml = """ <comment authorId="0" ref="A1"> <text> <t xml:space="preserve">some comment -Peter Lustig</t> </text> </comment> """ node = fromstring(xml) comment = CommentRecord.from_tree(node) assert comment.text.t == "some comment\n\t -Peter Lustig"