@Test public void testCreateStudent() throws EntityAlreadyExistsException, InvalidParametersException { StudentAttributes s = new StudentAttributes(); s.name = "valid student"; s.email = "*****@*****.**"; s.team = "validTeamName"; s.comments = ""; s.googleId = "validGoogleId"; ______TS("fail : invalid params"); s.course = "invalid id space"; try { studentsDb.createEntity(s); Assert.fail(); } catch (InvalidParametersException e) { AssertHelper.assertContains( String.format(COURSE_ID_ERROR_MESSAGE, s.course, REASON_INCORRECT_FORMAT), e.getMessage()); } LogicTest.verifyAbsentInDatastore(s); ______TS("success : valid params"); s.course = "valid-course"; studentsDb.createEntity(s); LogicTest.verifyPresentInDatastore(s); StudentAttributes retrievedStudent = studentsDb.getStudentForGoogleId(s.course, s.googleId); assertEquals(true, retrievedStudent.isEnrollInfoSameAs(s)); assertEquals(null, studentsDb.getStudentForGoogleId(s.course + "not existing", s.googleId)); assertEquals(null, studentsDb.getStudentForGoogleId(s.course, s.googleId + "not existing")); assertEquals( null, studentsDb.getStudentForGoogleId(s.course + "not existing", s.googleId + "not existing")); ______TS("fail : duplicate"); try { studentsDb.createEntity(s); Assert.fail(); } catch (EntityAlreadyExistsException e) { AssertHelper.assertContains( String.format(StudentsDb.ERROR_CREATE_ENTITY_ALREADY_EXISTS, s.getEntityTypeAsString()) + s.getIdentificationString(), e.getMessage()); } ______TS("null params check"); try { studentsDb.createEntity(null); Assert.fail(); } catch (AssertionError a) { assertEquals(Const.StatusCodes.DBLEVEL_NULL_INPUT, a.getMessage()); } }
private StudentAttributes createNewStudent(String email) throws InvalidParametersException { StudentAttributes s = new StudentAttributes(); s.name = "valid student 2"; s.course = "valid-course"; s.email = email; s.team = "valid team name"; s.comments = ""; s.googleId = ""; try { studentsDb.createEntity(s); } catch (EntityAlreadyExistsException e) { // Okay if it's already inside } return s; }
@Test public void testUpdateStudent() throws InvalidParametersException, EntityDoesNotExistException { // Create a new student with valid attributes StudentAttributes s = createNewStudent(); studentsDb.updateStudent( s.course, s.email, "new-name", "new-team", "*****@*****.**", "new.google.id", "lorem ipsum dolor si amet"); ______TS("non-existent case"); try { studentsDb.updateStudent( "non-existent-course", "*****@*****.**", "no-name", "non-existent-team", "non.existent.ID", "blah", "blah"); signalFailureToDetectException(); } catch (EntityDoesNotExistException e) { assertEquals( StudentsDb.ERROR_UPDATE_NON_EXISTENT_STUDENT + "non-existent-course/[email protected]", e.getMessage()); } // Only check first 2 params (course & email) which are used to identify the student entry. The // rest are actually allowed to be null. ______TS("null course case"); try { studentsDb.updateStudent( null, s.email, "new-name", "new-team", "*****@*****.**", "new.google.id", "lorem ipsum dolor si amet"); signalFailureToDetectException(); } catch (AssertionError a) { assertEquals(Const.StatusCodes.DBLEVEL_NULL_INPUT, a.getMessage()); } ______TS("null email case"); try { studentsDb.updateStudent( s.course, null, "new-name", "new-team", "*****@*****.**", "new.google.id", "lorem ipsum dolor si amet"); signalFailureToDetectException(); } catch (AssertionError a) { assertEquals(Const.StatusCodes.DBLEVEL_NULL_INPUT, a.getMessage()); } ______TS("duplicate email case"); s = createNewStudent(); // Create a second student with different email address StudentAttributes s2 = createNewStudent("*****@*****.**"); try { studentsDb.updateStudent( s.course, s.email, "new-name", "new-team", s2.email, "new.google.id", "lorem ipsum dolor si amet"); signalFailureToDetectException(); } catch (InvalidParametersException e) { assertEquals( StudentsDb.ERROR_UPDATE_EMAIL_ALREADY_USED + s2.name + "/" + s2.email, e.getMessage()); } ______TS("typical success case"); String originalEmail = s.email; s.name = "new-name-2"; s.team = "new-team-2"; s.email = "new-email-2"; s.googleId = "new-id-2"; s.comments = "this are new comments"; studentsDb.updateStudent( s.course, originalEmail, s.name, s.team, s.email, s.googleId, s.comments); StudentAttributes updatedStudent = studentsDb.getStudentForEmail(s.course, s.email); assertTrue(updatedStudent.isEnrollInfoSameAs(s)); }