Added templating tests

This commit is contained in:
Magnus 2022-12-02 14:07:19 +01:00
parent 67ebd559d7
commit 8257e9ab51
3 changed files with 82 additions and 21 deletions

View File

@ -80,9 +80,6 @@ const char mqttFormat[] PROGMEM =
"ispindel/${mdns}/interval:${sleep-interval}|" "ispindel/${mdns}/interval:${sleep-interval}|"
"ispindel/${mdns}/RSSI:${rssi}|"; "ispindel/${mdns}/RSSI:${rssi}|";
//
// Initialize the variables
//
void TemplatingEngine::initialize(float angle, float gravitySG, void TemplatingEngine::initialize(float angle, float gravitySG,
float corrGravitySG, float tempC, float corrGravitySG, float tempC,
float runTime) { float runTime) {
@ -138,10 +135,8 @@ void TemplatingEngine::initialize(float angle, float gravitySG,
#endif #endif
} }
// // the useDefaultTemplate param is there to support unit tests.
// Create the data using defined template. const char* TemplatingEngine::create(TemplatingEngine::Templates idx, bool useDefaultTemplate) {
//
const char* TemplatingEngine::create(TemplatingEngine::Templates idx) {
String fname; String fname;
_baseTemplate.reserve(600); _baseTemplate.reserve(600);
@ -169,15 +164,16 @@ const char* TemplatingEngine::create(TemplatingEngine::Templates idx) {
break; break;
} }
// TODO: Add code to load templates from disk if they exist. if (!useDefaultTemplate) {
File file = LittleFS.open(fname, "r"); File file = LittleFS.open(fname, "r");
if (file) { if (file) {
char buf[file.size() + 1]; char buf[file.size() + 1];
memset(&buf[0], 0, file.size() + 1); memset(&buf[0], 0, file.size() + 1);
file.readBytes(&buf[0], file.size()); file.readBytes(&buf[0], file.size());
_baseTemplate = String(&buf[0]); _baseTemplate = String(&buf[0]);
file.close(); file.close();
Log.notice(F("TPL : Template loaded from disk %s." CR), fname.c_str()); Log.notice(F("TPL : Template loaded from disk %s." CR), fname.c_str());
}
} }
#if LOG_LEVEL == 6 #if LOG_LEVEL == 6

View File

@ -200,7 +200,7 @@ class TemplatingEngine {
} }
void initialize(float angle, float gravitySG, float corrGravitySG, void initialize(float angle, float gravitySG, float corrGravitySG,
float tempC, float runTime); float tempC, float runTime);
const char *create(TemplatingEngine::Templates idx); const char *create(TemplatingEngine::Templates idx, bool useDefaultTemplate = false);
}; };
#endif // SRC_TEMPLATING_HPP_ #endif // SRC_TEMPLATING_HPP_

View File

@ -21,12 +21,77 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include <Arduino.h> #include <templating.hpp>
#include <main.hpp> #include <config.hpp>
#include <AUnit.h> #include <AUnit.h>
test(template_applyTemplate) { test(template_applyTemplate1) {
Serial.println("Not implemented yet (template_applyTemplate)"); TemplatingEngine e;
char buffer[20];
myConfig.setMDNS("gravitymon");
e.initialize(45.0, 1.123, 1.223, 21.2, 2.98);
String s = e.create(TemplatingEngine::TEMPLATE_HTTP1);
String id = myConfig.getID();
String batt = convertFloatToString( myBatteryVoltage.getVoltage(), &buffer[0], 2);
batt.trim();
String v = "{\"name\" : \"gravitymon\", \"ID\": \"" + id + "\", \"token\" : \"\", \"interval\": 900, \"temperature\": 21.2, \"temp_units\": \"C\", \"gravity\": 1.1230, \"angle\": 45.00, \"battery\": " + batt + ", \"RSSI\": 31, \"corr-gravity\": 1.2230, \"gravity-unit\": \"G\", \"run-time\": 3.0 }";
assertEqual(s, v);
}
test(template_applyTemplate2) {
TemplatingEngine e;
char buffer[20];
myConfig.setMDNS("gravitymon");
e.initialize(45.0, 1.123, 1.223, 21.2, 2.98);
String s = e.create(TemplatingEngine::TEMPLATE_HTTP2);
String id = myConfig.getID();
String batt = convertFloatToString( myBatteryVoltage.getVoltage(), &buffer[0], 2);
batt.trim();
String v = "{\"name\" : \"gravitymon\", \"ID\": \"" + id + "\", \"token\" : \"\", \"interval\": 900, \"temperature\": 21.2, \"temp_units\": \"C\", \"gravity\": 1.1230, \"angle\": 45.00, \"battery\": " + batt + ", \"RSSI\": 31, \"corr-gravity\": 1.2230, \"gravity-unit\": \"G\", \"run-time\": 3.0 }";
assertEqual(s, v);
}
test(template_applyTemplate3) {
TemplatingEngine e;
char buffer[20];
myConfig.setMDNS("gravitymon");
e.initialize(45.0, 1.123, 1.223, 21.2, 2.98);
String s = e.create(TemplatingEngine::TEMPLATE_HTTP3);
String id = myConfig.getID();
String batt = convertFloatToString( myBatteryVoltage.getVoltage(), &buffer[0], 2);
batt.trim();
String v = "?name=gravitymon&id=" + id + "&token=&interval=900&temperature=21.2&temp-units=C&gravity=1.1230&angle=45.00&battery=" + batt + "&rssi=31&corr-gravity=1.2230&gravity-unit=G&run-time=3.0";
assertEqual(s, v);
}
test(template_applyTemplate4) {
TemplatingEngine e;
char buffer[20];
myConfig.setMDNS("gravitymon");
e.initialize(45.0, 1.123, 1.223, 21.2, 2.98);
String s = e.create(TemplatingEngine::TEMPLATE_INFLUX);
String id = myConfig.getID();
String batt = convertFloatToString( myBatteryVoltage.getVoltage(), &buffer[0], 2);
batt.trim();
String v = "measurement,host=gravitymon,device=" + id + ",temp-format=C,gravity-format=G gravity=1.1230,corr-gravity=1.2230,angle=45.00,temp=21.2,battery=" + batt + ",rssi=31\n";
assertEqual(s, v);
}
test(template_applyTemplate5) {
TemplatingEngine e;
char buffer[20];
myConfig.setMDNS("gravitymon");
e.initialize(45.0, 1.123, 1.223, 21.2, 2.98);
String s = e.create(TemplatingEngine::TEMPLATE_MQTT);
String batt = convertFloatToString( myBatteryVoltage.getVoltage(), &buffer[0], 2);
batt.trim();
String v = "ispindel/gravitymon/tilt:45.00|ispindel/gravitymon/temperature:21.2|ispindel/gravitymon/temp_units:C|ispindel/gravitymon/battery:" + batt + "|ispindel/gravitymon/gravity:1.1230|ispindel/gravitymon/interval:900|ispindel/gravitymon/RSSI:31|";
assertEqual(s, v);
} }
// EOF // EOF