Simple configurable calculator, ie for interest or mortgage calculation - Component template for Magnolia CMS.
(Demonstrates how to test light modules)
(Demonstrates how to build resources with webpack)
Provide a simple calculator on a webpage to enable visitors to calculate a value based on a formula that you configure. Can be used to supply interest calculators, mortgage calculators, and the like. Calculator contains two fields.
Content author can supply formula as well as labels for the two fields.
Can be placed multiple times on one page.
Make the component available to authors, and include the files in webresources
on your pages using standard magnolia techniques.
(To make this component available on the mtk basic page, you could use the decoration included in _dev/decorations
.)
jQuery 3.x must be available on the page.
To include the Necessary resources you could add the following fragment to your page template.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src=".resources/calculator-magnolia/webresources/bundle.js"></script>
This project illustrates how to test a shared Magnolia light module. Both integration tests and js unit tests are demonstrated.
The correct rendering of your template, based on content entered with the dialog can be tested with an integration test. This package demonstrates the following approach:
- Create a demo page with one or more instances of your component configured in various ways via the dialog.
- Export the page as an xml bootstrap file to
_dev/demos
directory. - Supply a test script in
_dev/test/integration
which loads the demo webpage and checks the rendered DOM for expected contents. Such tests can be easily written with thecheerio
library (https://github.com/cheeriojs/cheerio). - Add an integration and test script to the
package.json
. (See the package.json for details.) - Supply a
.travis.yml
configuration, and connect your git repo to the free travis-ci continuous integration service so that your modules tests will be run whenever it is pushed to github.
Cheerio is recommended as an easy approach to testing rendered templates, but you could use more sophisticated approaches, such as selenium to test user interactions with your components.
JS Unit tests are using Jest as test runner, as it supplies a DOM environment
travis-ci automatically runs the test
script provided in the package.json.
Setting up the Magnolia server is done with the before_script
hook in .travis.yml
.
This directory is a Magnolia 'light module'.
Search the docs for sharing light modules
for details on how to share and use light modules on npm and github.
It's easy to create components for Magnolia and share them on github and npm. I invite you to do so and join the community. Let's stop wasting time by developing the same thing again and again, rather let's help each other out by sharing our work and create a rich library of components.
Just add magnolia-light-module
as a keyword to npm's package.json to make them easy to find and use on npm.
MIT