. /** * @package Tests * @subpackage UnitTests * @copyright Copyright (C) 2002 - 2012 MantisBT Team - mantisbt-dev@lists.sourceforge.net * @link http://www.mantisbt.org */ require_once 'SoapBase.php'; /** * Test fixture for issue notes webservice methods. */ class IssueNoteTest extends SoapBase { /** * A test case that tests the following: * 1. Create an issue. * 2. Add a note to the issue by only specifying the text. * 3. Get the issue. * 4. Verify the note id against the one returned when adding the note. * 5. Verify the text as per specified earlier. * 6. Verify the defaulting of the rest of the fields. * 7. Verify that submitted / last updated times are the same. * 8. Verify that submitted / last updated matches today. * 9. Delete the issue. */ public function testAddNote() { $issueToAdd = $this->getIssueToAdd( 'IssueNoteTest.testAddNote' ); $issueId = $this->client->mc_issue_add( $this->userName, $this->password, $issueToAdd); $this->deleteAfterRun( $issueId ); $createdIssue = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $noteData = array( 'text' => "first note", 'note_type' => 2, 'note_attr' => 'attr_value' ); $issueNoteId = $this->client->mc_issue_note_add( $this->userName, $this->password, $issueId, $noteData); $issueWithNote = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $this->assertEquals( 1, count( $issueWithNote->notes ) ); $note = $issueWithNote->notes[0]; $this->assertEquals( $issueNoteId, $note->id ); $this->assertEquals( $this->userName, $note->reporter->name ); $this->assertEquals( $noteData['text'], $note->text ); $this->assertEquals( 10, $note->view_state->id ); $this->assertEquals( 'public', $note->view_state->name ); $this->assertEquals( $note->date_submitted, $note->last_modified ); $this->assertEquals( 2, $note->note_type ); $this->assertEquals( 'attr_value', $note->note_attr ); /* $timestamp = strtotime( $note->date_submitted ); $t_submited_date = date( "ymd", $timestamp ); $t_today_date = date( "ymd" ); $this->assertEquals( $t_today_date, $t_submited_date ); */ } /** * A test case that tests the following: * 1. Create an issue. * 2. Add a note to the issue by specifying the text and time_tracking. * 3. Get the issue. * 4. Verify the note id against the one returned when adding the note. * 5. Verify the time_tracking entry * 6. Delete the issue. */ public function testAddNoteWithTimeTracking() { $this->skipIfTimeTrackingIsNotEnabled(); $issueToAdd = $this->getIssueToAdd( 'IssueNoteTest.testAddNoteWithTimeTracking' ); $issueId = $this->client->mc_issue_add( $this->userName, $this->password, $issueToAdd); $noteData = array( 'text' => "first note", 'time_tracking' => "30" ); $issueNoteId = $this->client->mc_issue_note_add( $this->userName, $this->password, $issueId, $noteData); $issueWithNote = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $this->assertEquals( 1, count( $issueWithNote->notes ) ); $note = $issueWithNote->notes[0]; $this->assertEquals( 30, $note->time_tracking ); $this->client->mc_issue_delete( $this->userName, $this->password, $issueId); } /** * A test case that tests the following: * 1. Create an issue. * 2. Add a note to the issue. * 3. Get the issue. * 4. Verify that the issue has one note. * 5. Update this note * 6. Verify that the note has been updated * 7. Delete the note. * 8. Get the issue. * 9. Verify that the issue has no notes. * 10. Delete the issue. */ public function testAddThenUpdateThenDeleteNote() { $issueToAdd = $this->getIssueToAdd( 'IssueNoteTest.testAddThenUpdateThenDeleteNote' ); $issueId = $this->client->mc_issue_add( $this->userName, $this->password, $issueToAdd); $this->deleteAfterRun( $issueId ); $createdIssue = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $noteData = array( 'text' => "some note", ); $issueNoteId = $this->client->mc_issue_note_add( $this->userName, $this->password, $issueId, $noteData); $issueWithNote = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $this->assertEquals( 1, count( $issueWithNote->notes ) ); $noteDataNew = array( 'id' => $issueNoteId, 'text' => "some new note" ); $this->client->mc_issue_note_update( $this->userName, $this->password, $noteDataNew); $issueWithNewNote = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $this->assertEquals( 1, count( $issueWithNote->notes ) ); $this->assertEquals( $noteDataNew['text'], $issueWithNewNote->notes[0]->text ); $this->client->mc_issue_note_delete( $this->userName, $this->password, $issueNoteId); $issueWithNote = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $this->assertFalse( isset( $issueWithNote->notes ) ); } /** * A test case that tests the following: * 1. Create an issue. * 2. Attempt to add a note with no text. * 3. Make sure the SoapFault exception is thrown. * 4. Delete the issue. */ public function testAddNoteWithNoText() { $issueToAdd = $this->getIssueToAdd( 'IssueNoteTest.testAddNote' ); $issueId = $this->client->mc_issue_add( $this->userName, $this->password, $issueToAdd); $this->deleteAfterRun( $issueId ); $createdIssue = $this->client->mc_issue_get( $this->userName, $this->password, $issueId); $noteData = array( ); try { $issueNoteId = $this->client->mc_issue_note_add( $this->userName, $this->password, $issueId, $noteData); $this->assertTrue(false); } catch ( SoapFault $e ) { } } }