#include #include #include "greatest.h" #include "timer.h" #include "strops.hpp" #include "administration.hpp" // Project ////////////////// TEST _administration_validate_project_add(void) { administration_create_empty(""); project p1 = administration_project_create_empty(); ASSERT_EQ(administration_project_add(p1), A_ERR_MISSING_DESCRIPTION); strops_copy(p1.description, "test project", sizeof(p1.description)); ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); PASS(); } TEST _administration_validate_project_import(void) { administration_create_empty(""); project p1 = administration_project_create_empty(); ASSERT_EQ(administration_project_import(p1), A_ERR_MISSING_DESCRIPTION); strops_copy(p1.description, "test project", sizeof(p1.description)); ASSERT_EQ(administration_project_import(p1), A_ERR_SUCCESS); PASS(); } TEST _administration_validate_project_update(void) { administration_create_empty(""); project p1 = administration_project_create_empty(); strops_copy(p1.description, "test project", sizeof(p1.description)); ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_project_update(p1), A_ERR_SUCCESS); strops_copy(p1.description, "", sizeof(p1.description)); ASSERT_EQ(administration_project_update(p1), A_ERR_MISSING_DESCRIPTION); strops_copy(p1.id, "-1", sizeof(p1.id)); strops_copy(p1.description, "test project 2", sizeof(p1.description)); ASSERT_EQ(administration_project_update(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_project_remove(void) { administration_create_empty(""); project p1 = administration_project_create_empty(); strops_copy(p1.description, "test project", sizeof(p1.description)); ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_project_remove(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); strops_copy(p1.id, "-1", sizeof(p1.id)); ASSERT_EQ(administration_project_remove(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_project_isvalid(void) { administration_create_empty(""); project p1 = administration_project_create_empty(); ASSERT_EQ(administration_project_is_valid(p1), A_ERR_MISSING_DESCRIPTION); strops_copy(p1.description, "test project", sizeof(p1.description)); ASSERT_EQ(administration_project_is_valid(p1), A_ERR_SUCCESS); PASS(); } // Tax rate ////////////////// TEST _administration_validate_taxrate_add(void) { administration_create_empty(""); tax_rate p1 = administration_tax_rate_create_empty(); ASSERT_EQ(administration_tax_rate_add(p1), A_ERR_SUCCESS); PASS(); } TEST _administration_validate_taxrate_import(void) { administration_create_empty(""); tax_rate p1 = administration_tax_rate_create_empty(); ASSERT_EQ(administration_tax_rate_import(p1), A_ERR_SUCCESS); PASS(); } TEST _administration_validate_taxrate_update(void) { administration_create_empty(""); tax_rate p1 = administration_tax_rate_create_empty(); ASSERT_EQ(administration_tax_rate_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_tax_rate_update(p1), A_ERR_SUCCESS); strops_copy(p1.id, "-1", sizeof(p1.id)); ASSERT_EQ(administration_tax_rate_update(p1), A_ERR_NOT_FOUND); PASS(); } // Cost center ////////////////// TEST _administration_validate_costcenter_add(void) { administration_create_empty(""); cost_center p1 = administration_cost_center_create_empty(); strops_copy(p1.code, "TEST", sizeof(p1.code)); strops_copy(p1.description, "description", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_cost_center_add(p1), A_ERR_CODE_EXISTS); strops_copy(p1.code, "", sizeof(p1.code)); ASSERT_EQ(administration_cost_center_add(p1), A_ERR_MISSING_CODE); strops_copy(p1.description, "", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_add(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); PASS(); } TEST _administration_validate_costcenter_import(void) { administration_create_empty(""); cost_center p1 = administration_cost_center_create_empty(); strops_copy(p1.code, "TEST", sizeof(p1.code)); strops_copy(p1.description, "description", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_import(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_cost_center_import(p1), A_ERR_CODE_EXISTS); strops_copy(p1.code, "", sizeof(p1.code)); ASSERT_EQ(administration_cost_center_import(p1), A_ERR_MISSING_CODE); strops_copy(p1.description, "", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_import(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); PASS(); } TEST _administration_validate_costcenter_update(void) { administration_create_empty(""); cost_center p1 = administration_cost_center_create_empty(); strops_copy(p1.code, "TEST", sizeof(p1.code)); strops_copy(p1.description, "description", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_cost_center_update(p1), A_ERR_SUCCESS); strops_copy(p1.code, "", sizeof(p1.code)); ASSERT_EQ(administration_cost_center_update(p1), A_ERR_MISSING_CODE); strops_copy(p1.description, "", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_update(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); strops_copy(p1.id, "-1", sizeof(p1.id)); strops_copy(p1.code, "TEST", sizeof(p1.code)); strops_copy(p1.description, "description", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_update(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_costcenter_isvalid(void) { administration_create_empty(""); cost_center p1 = administration_cost_center_create_empty(); strops_copy(p1.code, "TEST", sizeof(p1.code)); strops_copy(p1.description, "description", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_SUCCESS); strops_copy(p1.code, "", sizeof(p1.code)); ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_MISSING_CODE); strops_copy(p1.code, "", sizeof(p1.code)); strops_copy(p1.description, "", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); strops_copy(p1.code, "TEST", sizeof(p1.code)); strops_copy(p1.description, "description", sizeof(p1.description)); ASSERT_EQ(administration_cost_center_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_CODE_EXISTS); PASS(); } // Contact ////////////////// contact _create_test_contact() { contact p1 = administration_contact_create_empty(); strops_copy(p1.name, "John Johnsson", sizeof(p1.name)); strops_copy(p1.address.address1, "Address 1", sizeof(p1.address.address1)); strops_copy(p1.address.country_code, "FR", sizeof(p1.address.country_code)); strops_copy(p1.address.city, "Paris", sizeof(p1.address.city)); strops_copy(p1.address.postal, "12345", sizeof(p1.address.postal)); strops_copy(p1.email, "test@test.com", sizeof(p1.email)); p1.type = contact_type::CONTACT_CONSUMER; return p1; } TEST _administration_validate_contact_add(void) { administration_create_empty(""); contact p1 = _create_test_contact(); ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); strops_copy(p1.name, "", sizeof(p1.name)); ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME); strops_copy(p1.address.address1, "", sizeof(p1.address.address1)); ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops_copy(p1.address.city, "", sizeof(p1.address.city)); ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops_copy(p1.address.postal, "", sizeof(p1.address.postal)); ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops_copy(p1.address.country_code, "", sizeof(p1.address.country_code)); ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); PASS(); } TEST _administration_validate_contact_import(void) { administration_create_empty(""); contact p1 = _create_test_contact(); ASSERT_EQ(administration_contact_import(p1), A_ERR_SUCCESS); strops_copy(p1.name, "", sizeof(p1.name)); ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME); strops_copy(p1.address.address1, "", sizeof(p1.address.address1)); ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops_copy(p1.address.city, "", sizeof(p1.address.city)); ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops_copy(p1.address.postal, "", sizeof(p1.address.postal)); ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops_copy(p1.address.country_code, "", sizeof(p1.address.country_code)); ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); PASS(); } TEST _administration_validate_contact_update(void) { administration_create_empty(""); contact p1 = _create_test_contact(); ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_contact_update(p1), A_ERR_SUCCESS); strops_copy(p1.name, "", sizeof(p1.name)); ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME); strops_copy(p1.address.address1, "", sizeof(p1.address.address1)); ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops_copy(p1.address.city, "", sizeof(p1.address.city)); ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops_copy(p1.address.postal, "", sizeof(p1.address.postal)); ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops_copy(p1.address.country_code, "", sizeof(p1.address.country_code)); ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); strops_copy(p1.id, "-1", sizeof(p1.id)); strops_copy(p1.name, "John Johnsson", sizeof(p1.name)); strops_copy(p1.address.address1, "Address 1", sizeof(p1.address.address1)); strops_copy(p1.address.country_code, "FR", sizeof(p1.address.country_code)); strops_copy(p1.address.city, "Paris", sizeof(p1.address.city)); strops_copy(p1.address.postal, "12345", sizeof(p1.address.postal)); p1.type = contact_type::CONTACT_CONSUMER; ASSERT_EQ(administration_contact_update(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_contact_remove(void) { administration_create_empty(""); contact p1 = _create_test_contact(); ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_contact_remove(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); strops_copy(p1.id, "-1", sizeof(p1.id)); ASSERT_EQ(administration_contact_remove(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_contact_isvalid(void) { administration_create_empty(""); contact p1 = _create_test_contact(); ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_SUCCESS); ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_SUCCESS); strops_copy(p1.name, "", sizeof(p1.name)); ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME); strops_copy(p1.address.address1, "", sizeof(p1.address.address1)); ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops_copy(p1.address.city, "", sizeof(p1.address.city)); ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops_copy(p1.address.postal, "", sizeof(p1.address.postal)); ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops_copy(p1.address.country_code, "", sizeof(p1.address.country_code)); ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); PASS(); } SUITE(administration_validate) { RUN_TEST(_administration_validate_project_add); RUN_TEST(_administration_validate_project_import); RUN_TEST(_administration_validate_project_update); RUN_TEST(_administration_validate_project_remove); RUN_TEST(_administration_validate_project_isvalid); RUN_TEST(_administration_validate_taxrate_add); RUN_TEST(_administration_validate_taxrate_import); RUN_TEST(_administration_validate_taxrate_update); RUN_TEST(_administration_validate_costcenter_add); RUN_TEST(_administration_validate_costcenter_import); RUN_TEST(_administration_validate_costcenter_update); RUN_TEST(_administration_validate_costcenter_isvalid); RUN_TEST(_administration_validate_contact_add); RUN_TEST(_administration_validate_contact_import); RUN_TEST(_administration_validate_contact_update); RUN_TEST(_administration_validate_contact_remove); RUN_TEST(_administration_validate_contact_isvalid); }