Source code for openpyxl.drawing.tests.test_spreadsheet_drawing

from __future__ import absolute_import
# Copyright (c) 2010-2017 openpyxl

import pytest

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

@pytest.fixture
[docs]def TwoCellAnchor(): from ..spreadsheet_drawing import TwoCellAnchor return TwoCellAnchor
[docs]class TestTwoCellAnchor:
[docs] def test_ctor(self, TwoCellAnchor): chart_drawing = TwoCellAnchor() xml = tostring(chart_drawing.to_tree()) expected = """ <twoCellAnchor> <from> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </from> <to> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </to> <clientData /> </twoCellAnchor> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_from_xml(self, TwoCellAnchor): src = """ <twoCellAnchor> <from> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </from> <to> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </to> <clientData></clientData> </twoCellAnchor> """ node = fromstring(src) chart_drawing = TwoCellAnchor.from_tree(node) assert chart_drawing == TwoCellAnchor()
@pytest.fixture
[docs]def OneCellAnchor(): from ..spreadsheet_drawing import OneCellAnchor return OneCellAnchor
[docs]class TestOneCellAnchor:
[docs] def test_ctor(self, OneCellAnchor): chart_drawing = OneCellAnchor() xml = tostring(chart_drawing.to_tree()) expected = """ <oneCellAnchor> <from> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </from> <ext cx="0" cy="0" /> <clientData></clientData> </oneCellAnchor> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_from_xml(self, OneCellAnchor): src = """ <oneCellAnchor> <from> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </from> <ext cx="0" cy="0" /> <clientData></clientData> </oneCellAnchor> """ node = fromstring(src) chart_drawing = OneCellAnchor.from_tree(node) assert chart_drawing == OneCellAnchor()
@pytest.fixture
[docs]def AbsoluteAnchor(): from ..spreadsheet_drawing import AbsoluteAnchor return AbsoluteAnchor
[docs]class TestAbsoluteAnchor:
[docs] def test_ctor(self, AbsoluteAnchor): chart_drawing = AbsoluteAnchor() xml = tostring(chart_drawing.to_tree()) expected = """ <absoluteAnchor> <pos x="0" y="0" /> <ext cx="0" cy="0" /> <clientData></clientData> </absoluteAnchor> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_from_xml(self, AbsoluteAnchor): src = """ <absoluteAnchor> <pos x="0" y="0" /> <ext cx="0" cy="0" /> <clientData></clientData> </absoluteAnchor> """ node = fromstring(src) chart_drawing = AbsoluteAnchor.from_tree(node) assert chart_drawing == AbsoluteAnchor()
@pytest.fixture
[docs]def SpreadsheetDrawing(): from ..spreadsheet_drawing import SpreadsheetDrawing return SpreadsheetDrawing
[docs]class TestSpreadsheetDrawing:
[docs] def test_ctor(self, SpreadsheetDrawing): from ..spreadsheet_drawing import ( OneCellAnchor, TwoCellAnchor, AbsoluteAnchor ) a = [AbsoluteAnchor(), AbsoluteAnchor()] o = [OneCellAnchor()] t = [TwoCellAnchor(), TwoCellAnchor()] chart_drawing = SpreadsheetDrawing(absoluteAnchor=a, oneCellAnchor=o, twoCellAnchor=t) xml = tostring(chart_drawing.to_tree()) expected = """ <wsDr> <twoCellAnchor> <from> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </from> <to> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </to> <clientData></clientData> </twoCellAnchor> <twoCellAnchor> <from> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </from> <to> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </to> <clientData></clientData> </twoCellAnchor> <oneCellAnchor> <from> <col>0</col> <colOff>0</colOff> <row>0</row> <rowOff>0</rowOff> </from> <ext cx="0" cy="0" /> <clientData></clientData> </oneCellAnchor> <absoluteAnchor> <pos x="0" y="0" /> <ext cx="0" cy="0" /> <clientData></clientData> </absoluteAnchor> <absoluteAnchor> <pos x="0" y="0" /> <ext cx="0" cy="0" /> <clientData></clientData> </absoluteAnchor> </wsDr> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_write_chart(self, SpreadsheetDrawing): from openpyxl.chart._chart import ChartBase class Chart(ChartBase): anchor = "E15" width = 15 height = 7.5 drawing = SpreadsheetDrawing() drawing.charts.append(Chart()) xml = tostring(drawing._write()) expected = """ <wsDr xmlns="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> <oneCellAnchor> <from> <col>4</col> <colOff>0</colOff> <row>14</row> <rowOff>0</rowOff> </from> <ext cx="5400000" cy="2700000"/> <graphicFrame> <nvGraphicFramePr> <cNvPr id="1" name="Chart 1"/> <cNvGraphicFramePr/> </nvGraphicFramePr> <xfrm/> <a:graphic> <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart"> <c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1"/> </a:graphicData> </a:graphic> </graphicFrame> <clientData/> </oneCellAnchor> </wsDr> """ diff = compare_xml (xml, expected) assert diff is None, diff
[docs] def test_hash_function(self, SpreadsheetDrawing): drawing = SpreadsheetDrawing() assert hash(drawing) == hash(id(drawing))
[docs] def test_write_picture(self, SpreadsheetDrawing): drawing = SpreadsheetDrawing() pic = drawing._picture_frame(4) xml = tostring(pic.to_tree()) expected = """ <pic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> <nvPicPr> <cNvPr descr="Picture" id="4" name="Image 4"></cNvPr> <cNvPicPr /> </nvPicPr> <blipFill> <a:blip cstate="print" r:embed="rId4" /> <a:stretch xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> <a:fillRect/> </a:stretch> </blipFill> <spPr> <a:prstGeom prst="rect" /> </spPr> </pic> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_read_chart(self, SpreadsheetDrawing, datadir): datadir.chdir() with open("spreadsheet_drawing_with_chart.xml") as src: xml = src.read() node = fromstring(xml) drawing = SpreadsheetDrawing.from_tree(node) anchor = drawing.oneCellAnchor[0] assert anchor._from.row == 28 assert anchor._from.col == 1
[docs] def test_write_rels(self, SpreadsheetDrawing): from openpyxl.packaging.relationship import Relationship rel = Relationship(type="drawing", Target="../file.xml") drawing = SpreadsheetDrawing() drawing._rels.append(rel) xml = tostring(drawing._write_rels()) expected = """ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId1" Target="../file.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"/> </Relationships> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_path(self, SpreadsheetDrawing): drawing = SpreadsheetDrawing() assert drawing.path == "/xl/drawings/drawingNone.xml"
[docs] def test_empty(self, SpreadsheetDrawing): drawing = SpreadsheetDrawing() assert bool(drawing) is False
@pytest.mark.parametrize("attr", ['charts', 'images'])
[docs] def test_bool(self, SpreadsheetDrawing, attr): drawing = SpreadsheetDrawing() getattr(drawing, attr).append(1) assert bool(drawing) is True