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.User; public class PlaylistsActionTest extends SocksoTestCase { private PlaylistsAction action; private TestResponse res; @Override protected void setUp() throws Exception { TestDatabase db = new TestDatabase(); db.fixture( "playlists" ); res = new TestResponse(); action = new PlaylistsAction(); action.setDatabase( db ); action.setResponse( res ); action.setRequest( getRequest("/api/playlists") ); } public void testActionHandlesPlaylistsUrl() { assertTrue( action.canHandle(getRequest("/api/playlists")) ); assertTrue( action.canHandle(getRequest("/api/playlists?offset=100")) ); assertTrue( action.canHandle(getRequest("/api/playlists/site")) ); assertTrue( action.canHandle(getRequest("/api/playlists/user")) ); assertTrue( action.canHandle(getRequest("/api/playlists/user/123")) ); assertTrue( action.canHandle(getRequest("/api/playlists/user/123?limit=123")) ); } public void testActionDoesntHandleNonPlaylistUrls() { assertFalse( action.canHandle(getRequest("/api/playlists/123")) ); assertFalse( action.canHandle(getRequest("/api/albums")) ); } public void testPlaylistsAreListedWhenRequested() throws Exception { action.handleRequest(); assertContains( res.getOutput(), "A Playlist" ); assertContains( res.getOutput(), "Bar Bar" ); assertContains( res.getOutput(), "Foo Foo" ); } public void testPlaylistsForUsersIncludeTheUsersInformation() throws Exception { action.handleRequest(); assertContains( res.getOutput(), "MyUser" ); } public void testOnlySitePlaylistsListedWhenRequestedBySiteUrl() throws Exception { action.setRequest( getRequest("/api/playlists/site") ); action.handleRequest(); assertContains( res.getOutput(), "Foo Foo" ); assertContains( res.getOutput(), "Bar Bar" ); assertNotContains( res.getOutput(), "A Playlist" ); } public void testOnlyCurrentUsersPlaylistsListedWhenRequestedByUserUrl() throws Exception { action.setRequest( getRequest("/api/playlists/user") ); action.setUser( new User(1,"foo") ); action.handleRequest(); assertContains( res.getOutput(), "A Playlist" ); assertNotContains( res.getOutput(), "Foo Foo" ); assertNotContains( res.getOutput(), "Bar Bar" ); } public void testNoPlaylistsListedWhenUserUrlRequestedAndNoCurrentUser() throws Exception { action.setRequest( getRequest("/api/playlists/user") ); action.setUser( null ); action.handleRequest(); assertNotContains( res.getOutput(), "A Playlist" ); assertNotContains( res.getOutput(), "Foo Foo" ); assertNotContains( res.getOutput(), "Bar Bar" ); } public void testPlaylistsOnlyForSpecifiedUserAreListedWhenAUserIsSpecified() throws Exception { action.setRequest( getRequest("/api/playlists/user/1") ); action.handleRequest(); assertContains( res.getOutput(), "A Playlist" ); assertNotContains( res.getOutput(), "Foo Foo" ); assertNotContains( res.getOutput(), "Bar Bar" ); } }