Package com.pugh.sockso.web.action.api

Source Code of com.pugh.sockso.web.action.api.ArtistsActionTest

package com.pugh.sockso.web.action.api;

import com.pugh.sockso.Utils;
import com.pugh.sockso.tests.SocksoTestCase;
import com.pugh.sockso.tests.TestDatabase;
import com.pugh.sockso.tests.TestResponse;

import java.sql.SQLException;

public class ArtistsActionTest extends SocksoTestCase {

    private ArtistsAction action;
   
    private TestResponse res;
   
    private TestDatabase db;

    @Override
    protected void setUp() throws Exception {
        res = new TestResponse();
        db = new TestDatabase();
        db.fixture( "artistsAlbumsAndTracks" );
        action = new ArtistsAction();
        action.setDatabase( db );
        action.setResponse( res );
    }
   
    protected void createArtists( int numOfArtists ) throws SQLException {
        for ( int i=0; i<numOfArtists; i++ ) {
            String name = Utils.getRandomString( 20 );
            db.update( " insert into artists ( name, date_added ) values ( '" +name+ "', '2011-01-01 01:02:03' ) " );
        }
    }
   
    public void testActionCanHandleArtistsUrl() {
        assertTrue( action.canHandle(getRequest( "/api/artists")) );
        assertTrue( action.canHandle(getRequest( "/api/artists?foo=bar")) );
    }
   
    public void testActionDoesntHandleNonArtistsUrls() {
        assertFalse( action.canHandle(getRequest( "/api/artists/123")) );
        assertFalse( action.canHandle(getRequest( "/api/artists/123/tracks")) );
        assertFalse( action.canHandle(getRequest( "/api/albums")) );
    }
   
    public void testArtistsListed() throws Exception {
        action.setRequest(getRequest( "/api/artists" ));
        action.handleRequest();
        assertContains( res.getOutput(), "A Artist" );
        assertContains( res.getOutput(), "Empty Artist" );
    }
   
    public void testArtistListCanBeOffset() throws Exception {
        action.setRequest(getRequest( "/api/artists?offset=1" ));
        action.handleRequest();
        assertNotContains( res.getOutput(), "A Artist" );
        assertContains( res.getOutput(), "Empty Artist" );
    }
   
    public void testArtistListCanBeLimited() throws Exception {
        action.setRequest(getRequest( "/api/artists?limit=1" ));
        action.handleRequest();
        assertContains( res.getOutput(), "A Artist" );
        assertNotContains( res.getOutput(), "Empty Artist" );
    }
   
    public void testLimitIsDefaultWhenNotSpecified() throws Exception {
        createArtists( 110 );
        action.setRequest(getRequest( "/api/artists" ));
        action.handleRequest();
        assertSubstringCount( 100, res.getOutput(), "\"id\":" );
    }
   
    public void testLimitOfMinusOneMeansNoLimitApplies() throws Exception {
        createArtists( 150 );
        action.setRequest(getRequest( "/api/artists?limit=-1" ));
        action.handleRequest();
        assertSubstringCount( 152, res.getOutput(), "\"id\":" ); // 150 + 2 from fixture
    }
   
    public void testArtistsAreListedAlphabeticallyAscending() {
       
    }

    public void testArtistsListedIncludeDateArtistWasAdded() throws Exception {
        createArtists( 1 );
        action.setRequest(getRequest( "/api/artists" ));
        action.handleRequest();
        assertContains( res.getOutput(), "2011-01-01" );
    }

    public void testArtistNamesDoNotHaveXmlCharactersEncoded() throws Exception {
        db.update( "insert into artists ( name, date_added ) values ( '&<>\"', now() )" );
        action.setRequest(getRequest( "/api/artists" ));
        action.handleRequest();
        assertNotContains( res.getOutput(), "&amp;" );
        assertNotContains( res.getOutput(), "&lt;" );
        assertNotContains( res.getOutput(), "&gt;" );
        assertContains( res.getOutput(), "&<>" );
    }
   
}
TOP

Related Classes of com.pugh.sockso.web.action.api.ArtistsActionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.