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; import com.pugh.sockso.web.BadRequestException; public class AlbumActionTest extends SocksoTestCase { private AlbumAction action; private TestResponse res; @Override protected void setUp() throws Exception { TestDatabase db = new TestDatabase(); db.fixture( "albums" ); res = new TestResponse(); action = new AlbumAction(); action.setDatabase( db ); action.setResponse( res ); } public void testActionHandlesAlbumUrls() { assertTrue( action.canHandle(getRequest("/api/albums/123")) ); assertTrue( action.canHandle(getRequest("/api/albums/123?foo=bar")) ); } public void testActionDoesntHandleNonAlbumUrls() { assertFalse( action.canHandle(getRequest("/api/albums/1s23")) ); assertFalse( action.canHandle(getRequest("/api/albums")) ); assertFalse( action.canHandle(getRequest("/api/artists/456")) ); assertFalse( action.canHandle(getRequest("/api/albums/456/foobar")) ); } public void testAlbumDetailsListedWhenRequested() throws Exception { action.setRequest(getRequest( "/api/albums/1" )); action.handleRequest(); assertContains( res.getOutput(), "1" ); assertContains( res.getOutput(), "Zan Album" ); } public void testAlbumDetailsIncludesArtistDetails() throws Exception { action.setRequest(getRequest( "/api/albums/1" )); action.handleRequest(); assertContains( res.getOutput(), "A Artist" ); } public void testExceptionThrownWhenInvalidArtistIdSpecified() throws Exception { boolean gotException = false; action.setRequest(getRequest( "/api/albums/999999")); try { action.handleRequest(); } catch ( BadRequestException e ) { gotException=true; } if ( !gotException ) { fail( "Expected exception on invalid album id" ); } } }