src.dualinventive.com/dinet/libdipp/tests/rpc/classes_project.cpp

133 lines
5.2 KiB
C++

/**
* @file classes_project.cpp
* @brief <brief>
* @date Sep 28, 2015
* @author rheijden
* @copyright 2015 Dual Inventive Technology Centre B.V.
*
* <description>
*/
#include <memory>
#include <iostream>
#include <di/rpc/Class.h>
#include <di/rpc/Reader.h>
#include <gtest/gtest.h>
using namespace std;
using namespace Di::Rpc;
TEST(RPC_Classes_Project, no_params) {
shared_ptr<Msg> m;
Reader r = Reader();
EXPECT_EQ(r.read("{\"dinetrpc\":1,\"project:id\":1,\"params\":null,\"time\":202181316000,\"req\":\"project:release\", \"id\":1}",
&m), 0);
EXPECT_EQ("project:release", m->getClassMethod());
EXPECT_EQ(1U, m->getProjectId());
EXPECT_EQ(202181316000U, m->getTime());
shared_ptr<Project> p = make_shared<Project>(m);
EXPECT_EQ(0U, p->projectDevices.size());
EXPECT_EQ(0U, p->projectDesignDevices.size());
EXPECT_EQ(0U, p->projectPlanningDevices.size());
p.reset();
m.reset();
}
TEST(RPC_Classes_Project, no_project) {
shared_ptr<Msg> m;
Reader r = Reader();
EXPECT_EQ(r.read("{\"dinetrpc\":1,\"project:id\":1,\"params\":{\"project\":null},\"time\":202181316000,\"req\":\"project:release\", \"id\":1}",
&m), 0);
EXPECT_EQ("project:release", m->getClassMethod());
EXPECT_EQ(1U, m->getProjectId());
EXPECT_EQ(202181316000U, m->getTime());
shared_ptr<Project> p = make_shared<Project>(m);
EXPECT_EQ(0U, p->projectDevices.size());
EXPECT_EQ(0U, p->projectDesignDevices.size());
EXPECT_EQ(0U, p->projectPlanningDevices.size());
p.reset();
m.reset();
}
TEST(RPC_Classes_Project, planning_device) {
shared_ptr<Msg> m;
Reader r = Reader();
EXPECT_EQ(r.read("{\"dinetrpc\":1,\"project:id\":1,\"params\":{\"project\":{\"planning\":{\"devices\":[{\"device:uid\":\"device\", \"role\":1, \"channel\":\"1\"}]}}},\"time\":202181316000,\"req\":\"project:release\", \"id\":1}",
&m), 0);
EXPECT_EQ("project:release", m->getClassMethod());
EXPECT_EQ(1U, m->getProjectId());
EXPECT_EQ(202181316000U, m->getTime());
shared_ptr<Project> p = make_shared<Project>(m);
EXPECT_EQ(0U, p->projectDevices.size());
EXPECT_EQ(0U, p->projectDesignDevices.size());
EXPECT_EQ(1U, p->projectPlanningDevices.size());
p.reset();
m.reset();
}
TEST(RPC_Classes_Project, design_device) {
shared_ptr<Msg> m;
Reader r = Reader();
EXPECT_EQ(r.read("{\"dinetrpc\":1,\"project:id\":1,\"params\":{\"project\":{\"design\":{\"devices\":[{\"device:uid\":\"device\", \"role\":\"strike_in\", \"channel\":1}]}}},\"time\":202181316000,\"req\":\"project:release\", \"id\":1}",
&m), 0);
EXPECT_EQ("project:release", m->getClassMethod());
EXPECT_EQ(1U, m->getProjectId());
EXPECT_EQ(202181316000U, m->getTime());
shared_ptr<Project> p = make_shared<Project>(m);
EXPECT_EQ(0U, p->projectDevices.size());
EXPECT_EQ(1U, p->projectDesignDevices.size());
EXPECT_EQ(0U, p->projectPlanningDevices.size());
p.reset();
m.reset();
}
TEST(RPC_Classes_Project, devices) {
shared_ptr<Msg> m;
Reader r = Reader();
EXPECT_EQ(r.read("{\"dinetrpc\":1,\"project:id\":1, \"id\":1,\"params\":{\"devices\":[{\"device:uid\":1, \"role\":\"strike_in\", \"channel\":\"1\"}]},\"time\":202181316000,\"req\":\"project:release\"}",
&m), 0);
EXPECT_EQ("project:release", m->getClassMethod());
EXPECT_EQ(1U, m->getProjectId());
EXPECT_EQ(202181316000U, m->getTime());
shared_ptr<Project> p = make_shared<Project>(m);
EXPECT_EQ(1U, p->projectDevices.size());
EXPECT_EQ(0U, p->projectDesignDevices.size());
EXPECT_EQ(0U, p->projectPlanningDevices.size());
p.reset();
m.reset();
}
TEST(RPC_Classes_Project, fullRcProject) {
shared_ptr<Msg> m;
Reader r = Reader();
EXPECT_EQ(r.read("{\"dinetrpc\":1,\"time\":1470733748175,\"id\":12,\"project:id\":9,\"user:id\":6,\"req\":\"project:return\",\"params\":{\"project\":{\"setup\":{\"project:id\":9,\"type\":\"rc\",\"roles\":{\"setup\":{\"store\":[{\"user:id\":6}],\"release\":[{\"user:id\":6}],\"return\":[{\"user:id\":6}]},\"planning\":{\"store\":[{\"user:id\":6}],\"verify\":[{\"user:id\":6}],\"validate\":[{\"user:id\":6}]},\"design\":{\"store\":[{\"user:id\":6}],\"verify\":[{\"user:id\":6}],\"validate\":[{\"user:id\":6}]}}},\"planning\":{\"groups\":[{\"id\":1,\"name\":\"Rik\",\"operators\":[{\"user:id\":6,\"from\":1470009600,\"to\":1597881540}]}],\"devices\":[]},\"design\":{\"devices\":[{\"device:uid\":\"01000000000000000000000000000623\",\"group:id\":1}]}}},\"async\":\"queue\"}",
&m), 0);
EXPECT_EQ("project:return", m->getClassMethod());
EXPECT_EQ(9U, m->getProjectId());
EXPECT_EQ(1470733748175U, m->getTime());
shared_ptr<Project> p = make_shared<Project>(m);
EXPECT_STREQ("rc", p->type.c_str());
EXPECT_EQ(0U, p->projectDevices.size());
EXPECT_EQ(1U, p->projectDesignDevices.size());
EXPECT_EQ("01000000000000000000000000000623", p->projectDesignDevices[0].deviceUid);
EXPECT_EQ(1U, p->projectDesignDevices[0].groupId);
EXPECT_EQ(0U, p->projectPlanningDevices.size());
EXPECT_EQ(1U, p->projectPlanningGroups.size());
EXPECT_EQ("Rik", p->projectPlanningGroups[0].name);
EXPECT_EQ(1U, p->projectPlanningGroups[0].groupId);
EXPECT_EQ(1U, p->projectPlanningGroups[0].operators.size());
EXPECT_EQ(6U, p->projectPlanningGroups[0].operators[0].userId);
EXPECT_EQ(1470009600U, p->projectPlanningGroups[0].operators[0].from);
EXPECT_EQ(1597881540U, p->projectPlanningGroups[0].operators[0].to);
p.reset();
m.reset();
}