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

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

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

import com.pugh.sockso.music.Artist;
import com.pugh.sockso.tests.SocksoTestCase;
import com.pugh.sockso.tests.TestResponse;
import com.pugh.sockso.web.BadRequestException;
import com.pugh.sockso.web.RelatedArtists;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.easymock.classextension.EasyMock.*;

public class ArtistRelatedActionTest extends SocksoTestCase {

    private ArtistRelatedAction action;
   
    private TestResponse res;

    @Override
    protected void setUp() throws Exception {
        RelatedArtists related = createMock( RelatedArtists.class );
        List<Artist> artists = new ArrayList<Artist>();
        artists.add(new Artist.Builder().id(1).name("FooFoo").dateAdded(new Date()).build());
        artists.add(new Artist.Builder().id(2).name("BarBar").dateAdded(new Date()).build());
       
        expect( related.getRelatedArtistsFor(1) ).andReturn( artists );
        expect( related.getRelatedArtistsFor(99) ).andThrow( new BadRequestException("") );
        replay( related );
        res = new TestResponse();
        action = new ArtistRelatedAction( related );
        action.setResponse( res );
    }
   
    public void testActionHandlesRelatedArtistUrls() {
        assertTrue( action.canHandle(getRequest("/api/artists/123/related")) );
        assertTrue( action.canHandle(getRequest("/api/artists/123/related?foo=bar")) );
    }
   
    public void testActionDoesntHandleNonRelatedArtistUrls() {
        assertFalse( action.canHandle(getRequest("/api/artists/asd/related")) );
        assertFalse( action.canHandle(getRequest("/api/albums/123/related")) );
        assertFalse( action.canHandle(getRequest("/api/artists/123")) );
    }
   
    public void testRelatedArtistsDisplayedForArtistRequested() throws Exception {
        action.setRequest(getRequest( "/api/artists/1/related" ));
        action.handleRequest();
        assertContains( res.getOutput(), "FooFoo" );
        assertContains( res.getOutput(), "BarBar" );
    }
   
    public void testExceptionThrownOnInvalidArtistId() throws Exception {
        boolean gotException = false;
        try {
            action.setRequest(getRequest( "/api/artists/99/related" ));
            action.handleRequest();
        }
        catch ( BadRequestException e ) {
            gotException = true;
        }
        if ( !gotException ) {
            fail( "Expected invalid artist ID to throw exception" );
        }
    }
   
}
TOP

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

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.