|
2 | 2 |
|
3 | 3 | from pathlib import Path |
4 | 4 |
|
| 5 | +import polars as pl |
5 | 6 | import pytest |
| 7 | +from polars.testing import assert_frame_equal |
6 | 8 |
|
7 | 9 | from polars_access_mdbtools import read_table |
8 | 10 |
|
@@ -36,3 +38,28 @@ def test_read_nonexistent_table_raises_value_error(sample_db_1: Path) -> None: |
36 | 38 | match=f'Table "{nonexistent_table_name}" not found in database', |
37 | 39 | ): |
38 | 40 | read_table(sample_db_1, nonexistent_table_name) |
| 41 | + |
| 42 | + |
| 43 | +def test_reading_specific_table_1a(sample_db_1: Path) -> None: |
| 44 | + """Test reading a specific table and checking its schema.""" |
| 45 | + df = read_table(sample_db_1, table_name="USysRibbons") |
| 46 | + |
| 47 | + df_expected = pl.DataFrame( |
| 48 | + { |
| 49 | + "RibbonId": [1, 6], |
| 50 | + "RibbonName": ["rbnReportView", "rbnMainMenu"], |
| 51 | + "RibbonXML": [ |
| 52 | + '<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">\r\n <ribbon startFromScratch="true">\r\n <officeMenu>\r\n <button idMso="FileCompactAndRepairDatabase" insertBeforeMso ="FileCloseDatabase" />\r\n <button idMso="FileOpenDatabase" visible="false"/>\r\n <button idMso="FileNewDatabase" visible="false"/>\r\n <splitButton idMso="FileSaveAsMenuAccess" visible="false" />\r\n </officeMenu>\r\n <tabs>\r\n <tab id="tabHome" label="Home">\r\n\r\n <group id="grpClose" label="Close" >\r\n <button idMso="PrintPreviewClose" \r\n size="large" />\r\n </group>\r\n\r\n <group id="grpData" label="Data" >\r\n <button idMso="PublishToPdfOrEdoc"\r\n size="large" />\r\n </group>\r\n\r\n <group id="grpZoom" label="Zoom" >\r\n <splitButton idMso="PrintPreviewZoomMenu"\r\n size="large" />\r\n </group>\r\n\r\n <group id="grpPrint" label="Print" >\r\n <button idMso="PrintDialogAccess"\r\n size="large" />\r\n </group>\r\n\r\n </tab>\r\n </tabs>\r\n </ribbon>\r\n</customUI>', # noqa: E501 |
| 53 | + '<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">\r\n <ribbon startFromScratch="true">\r\n <officeMenu>\r\n <button idMso="FileCompactAndRepairDatabase" insertBeforeMso ="FileCloseDatabase" />\r\n <button idMso="FileOpenDatabase" visible="false"/>\r\n <button idMso="FileNewDatabase" visible="false"/>\r\n <splitButton idMso="FileSaveAsMenuAccess" visible="false" />\r\n </officeMenu>\r\n <tabs>\r\n <tab id="tabHome" label="Home">\r\n\r\n <group id="grpClose" label="Close" >\r\n <button idMso="FileExit"\r\n label="Exit Database" \r\n imageMso="MasterViewClose" \r\n size="large" />\r\n </group>\r\n\r\n <group id="grpSort" label="Sort" >\r\n <button idMso="SortUp"\r\n size="large"/>\r\n\r\n <button idMso="SortDown"\r\n size="large"/>\r\n\r\n <button idMso="SortRemoveAllSorts" \r\n size="large" />\r\n </group>\r\n\r\n <group id="grpFilter" label="Filter" >\r\n <toggleButton idMso="FilterMenu" \r\n size="large"/>\r\n\r\n <button idMso="FilterClearAllFilters" \r\n size="large"/>\r\n </group>\r\n\r\n <group id="grpReport" label="Reports" >\r\n <button id="cmdViewReport" \r\n label="View Detail Report" \r\n size="large" \r\n imageMso="ViewsReportView" \r\n onAction="Ribbon.OpenDetailReport"/>\r\n </group>\r\n </tab>\r\n\r\n <tab id="tabSystem" label="System">\r\n <group id="grpTables" label="Database Tools" >\r\n <button idMso="DatabaseLinedTableManager"\r\n size="large" />\r\n\r\n <button idMso="FileDatabaseProperties"\r\n size="large" />\r\n </group>\r\n\r\n <group id="grpInfo" label="Information" >\r\n <button id="cmdOpenAbout"\r\n label="About" \r\n size="large" \r\n imageMso="CreateFormBlankForm" \r\n onAction="Ribbon.OpenAboutForm"/>\r\n </group>\r\n </tab>\r\n\r\n </tabs>\r\n </ribbon>\r\n</customUI>', # noqa: E501 |
| 54 | + ], |
| 55 | + "RibbonNotes": [None, None], |
| 56 | + }, |
| 57 | + schema={ |
| 58 | + "RibbonId": pl.Int64, |
| 59 | + "RibbonName": pl.String, |
| 60 | + "RibbonXML": pl.String, |
| 61 | + "RibbonNotes": pl.String, |
| 62 | + }, |
| 63 | + ) |
| 64 | + assert_frame_equal(df, df_expected) |
| 65 | + assert df.schema == df_expected.schema |
0 commit comments