// 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_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_enable(p1), A_ERR_SUCCESS); 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_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_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_update); RUN_TEST(_administration_validate_project_remove); RUN_TEST(_administration_validate_project_isvalid); RUN_TEST(_administration_validate_taxrate_add); RUN_TEST(_administration_validate_costcenter_add); RUN_TEST(_administration_validate_costcenter_update); RUN_TEST(_administration_validate_costcenter_isvalid); RUN_TEST(_administration_validate_contact_add); RUN_TEST(_administration_validate_contact_update); RUN_TEST(_administration_validate_contact_remove); RUN_TEST(_administration_validate_contact_isvalid); }