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 AlbumsActionTest extends SocksoTestCase {
private AlbumsAction action;
private TestResponse res;
@Override
protected void setUp() throws Exception {
TestDatabase db = new TestDatabase();
db.fixture( "albums" );
res = new TestResponse();
action = new AlbumsAction();
action.setDatabase( db );
action.setResponse( res );
}
public void testActionCanHandleAlbumsUrls() {
assertTrue( action.canHandle(getRequest("/api/albums")) );
assertTrue( action.canHandle(getRequest("/api/albums?offset=123")) );
}
public void testActionDoesnthandleNonAlbumsUrls() {
assertFalse( action.canHandle(getRequest("/api/artists")) );
assertFalse( action.canHandle(getRequest("/api/albums/123")) );
assertFalse( action.canHandle(getRequest("/api/albums/foo")) );
}
public void testAllAlbumsListedWhenRequested() throws Exception {
action.setRequest(getRequest( "/api/albums" ));
action.handleRequest();
assertContains( res.getOutput(), "Another Album" );
assertContains( res.getOutput(), "Beta Third" );
assertContains( res.getOutput(), "Zan Album" );
}
public void testAlbumsCanBeLimited() throws Exception {
action.setRequest(getRequest( "/api/albums?limit=2" ));
action.handleRequest();
assertContains( res.getOutput(), "Another Album" );
assertContains( res.getOutput(), "Beta Third" );
assertNotContains( res.getOutput(), "Zan Album" );
}
public void testAlbumsCanBeOffset() throws Exception {
action.setRequest(getRequest( "/api/albums?limit=3&offset=1" ));
action.handleRequest();
assertNotContains( res.getOutput(), "Another Album" );
assertContains( res.getOutput(), "Beta Third" );
assertContains( res.getOutput(), "Zan Album" );
}
public void testDefaultLimitUsedWhenNoLimitSpecified() {
}
public void testLimitOfMinusOneMeansNoLimit() throws Exception {
action.setRequest(getRequest( "/api/albums?limit=-1" ));
action.handleRequest();
assertContains( res.getOutput(), "Another Album" );
assertContains( res.getOutput(), "Beta Third" );
assertContains( res.getOutput(), "Zan Album" );
}
public void testArtistsListedWithAlbums() throws Exception {
action.setRequest(getRequest( "/api/albums" ));
action.handleRequest();
assertContains( res.getOutput(), "A Artist" );
}
}