package com.pugh.sockso.web.action.api; import com.pugh.sockso.tests.SocksoTestCase; import com.pugh.sockso.tests.TestDatabase; import com.pugh.sockso.tests.TestResponse; public class AlbumTracksActionTest extends SocksoTestCase { private AlbumTracksAction action; private TestResponse res; @Override protected void setUp() throws Exception { TestDatabase db = new TestDatabase(); db.fixture( "albumTracks" ); res = new TestResponse(); action = new AlbumTracksAction(); action.setDatabase( db ); action.setResponse( res ); } public void testCanhandleReturnsForValidUrls() { assertTrue( action.canHandle(getRequest("/api/albums/123/tracks")) ); assertTrue( action.canHandle(getRequest("/api/albums/123/tracks?foo=bar")) ); } public void testCanhandleReturnsFalseForInvalidUrls() { assertFalse( action.canHandle(getRequest("/api/albums/asd/tracks?foo=bar")) ); assertFalse( action.canHandle(getRequest("/api/albums/asd/tracks")) ); assertFalse( action.canHandle(getRequest("/api/artists/123/tracks")) ); } public void testExceptionThrownWhenInvalidAlbumSpecified() { boolean gotException = false; action.setRequest(getRequest("/api/albums/99999/tracks")); try { action.handleRequest(); } catch ( Exception e ) { gotException = true; } if ( !gotException ) { fail( "Expected exception when invalid artist ID specified" ); } } public void testAlbumTracksListedWhenValidAlbumSpecified() throws Exception { action.setRequest(getRequest( "/api/albums/1/tracks" )); action.handleRequest(); assertContains( res.getOutput(), "My Track 1" ); assertContains( res.getOutput(), "My Track 2" ); } public void testTracksFromOtherAlbumsNotIncluded() throws Exception { action.setRequest(getRequest( "/api/albums/1/tracks" )); action.handleRequest(); assertNotContains( res.getOutput(), "My Track 3" ); } }