From ff205d2cc92c798bb62826433562d5aff9fddd97 Mon Sep 17 00:00:00 2001 From: Pawel Siemienik Date: Thu, 26 Mar 2020 02:19:25 +0100 Subject: [PATCH] #6 #3 Test (and examples) for ForEachCell - step 1/N - simple one-line foreach --- README.md | 4 +- .../Renderer005-ForEach-simple/expected.xlsx | Bin 0 -> 8237 bytes .../Renderer005-ForEach-simple/template.xlsx | Bin 0 -> 10570 bytes .../Renderer005-ForEach-simple/viewModel.json | 52 ++++++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 tests/integration/data/Renderer005-ForEach-simple/expected.xlsx create mode 100644 tests/integration/data/Renderer005-ForEach-simple/template.xlsx create mode 100644 tests/integration/data/Renderer005-ForEach-simple/viewModel.json diff --git a/README.md b/README.md index ee07466..b3e6233 100644 --- a/README.md +++ b/README.md @@ -51,13 +51,13 @@ for more example I invite to tests data: [click here and check `Renderer` folder | Navigation | [EndRowCell](./src/cell/EndRowCell.ts) | 2 | `#! END_ROW` | Go to the beginning of next row | | | Worksheet
Navigation
Loop | [FinishCell](./src/cell/FinishCell.ts) | 7 | `#! FINISH conditionPath` | Finish rendering for current worksheet and:
1) go to next worksheet if `conditionPath===true`
2) repeat this template worksheet again (`conditionPath === false`) - looping through worksheets
3) finished whole rendering when this worksheet is the last one. | **Examples:**
`#! FINISHED ` or `#! FINISHED itemFromLoop.__iterated` | | Worksheet | [WsNameCell](./src/cell/WsNameCell.ts) | 13 | `#! WS_NAME pathToVariable` | Set worksheet's name. | **Examples:**
`#! WS_NAME worksheetName`
`#! WS_NAME item.title`
`#! WS_NAME translatedNames.0` | -| View Model | **TODO: describe it!** [DeleteCell](./src/cell/DeleteCell.ts) | | | | | | Loop | **TODO: describe it!** [DumpColsCell](./src/cell/DumpColsCell.ts) | | | | | -| Loop | **TODO: describe it!** [ForEachCell](./src/cell/ForEachCell.ts) | | | | | +| Loop | **TODO: describe it! test done: simple; tests todo: nested, with formula, stripped, through worksheets,** [ForEachCell](./src/cell/ForEachCell.ts) | | | | | | Loop | **TODO: describe it!** [ContinueCell](./src/cell/ContinueCell.ts) | | | | | | Loop | **TODO: describe it!** [EndLoopCell](./src/cell/EndLoopCell.ts) | | | | | | Aggregation | **TODO: describe it!** [AverageCell](./src/cell/AverageCell.ts) | | | | | | Aggregation| **TODO: describe it!** [SumCell](./src/cell/SumCell.ts) | | | | | +| View Model | **TODO: test - nested loop** [DeleteCell](./src/cell/DeleteCell.ts) | 14 | `#! DELETE pathToVariable` | Delete variable, useful for nested loops.| | ## Commands [PREVIOUS VERSION]: diff --git a/tests/integration/data/Renderer005-ForEach-simple/expected.xlsx b/tests/integration/data/Renderer005-ForEach-simple/expected.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a0f728a38e63f3a50ac19c38a03c1f9312de389b GIT binary patch literal 8237 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 B$d~{C literal 0 HcmV?d00001 diff --git a/tests/integration/data/Renderer005-ForEach-simple/template.xlsx b/tests/integration/data/Renderer005-ForEach-simple/template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2fc07500ee6c835a4d95f978d494e7ce7f88a297 GIT binary patch literal 10570 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 O;GGie#we7(UHv~OXhkIe literal 0 HcmV?d00001 diff --git a/tests/integration/data/Renderer005-ForEach-simple/viewModel.json b/tests/integration/data/Renderer005-ForEach-simple/viewModel.json new file mode 100644 index 0000000..b7284cf --- /dev/null +++ b/tests/integration/data/Renderer005-ForEach-simple/viewModel.json @@ -0,0 +1,52 @@ +{ + "projects": [ + { + "name": "ExcelJS", + "role": "maintainer", + "platform": "github", + "link": "https://github.com/exceljs/exceljs", + "stars": 5300, + "forks": 682 + }, + { + "name": "xlsx-import", + "role": "owner", + "platform": "github", + "link": "https://github.com/siemienik/xlsx-import", + "stars": 2, + "forks": 0 + }, + { + "name": "xlsx-import", + "role": "owner", + "platform": "npm", + "link": "https://www.npmjs.com/package/xlsx-import", + "stars": "n.o.", + "forks": "n.o." + }, + { + "name": "xlsx-renderer", + "role": "owner", + "platform": "github", + "link": "https://github.com/siemienik/xlsx-renderer", + "stars": 1, + "forks": 0 + }, + { + "name": "xlsx-renderer", + "role": "owner", + "platform": "npm", + "link": "https://www.npmjs.com/package/xlsx-renderer", + "stars": "n.o.", + "forks": "n.o." + }, + { + "name": "TS Package Structure", + "role": "owner", + "platform": "github", + "link": "https://github.com/Siemienik/ts-package-structure", + "stars": 2, + "forks": 0 + } + ] +} \ No newline at end of file