Package com.pugh.sockso.web.action.covers

Source Code of com.pugh.sockso.web.action.covers.LocalCovererTest

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

import com.pugh.sockso.Constants;
import com.pugh.sockso.Properties;
import com.pugh.sockso.StringProperties;
import com.pugh.sockso.db.Database;
import com.pugh.sockso.tests.SocksoTestCase;

import java.io.File;

import java.sql.PreparedStatement;
import java.sql.ResultSet;

import static org.easymock.EasyMock.*;


public class LocalCovererTest extends SocksoTestCase {


    private LocalCoverer coverer;

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        coverer = new LocalCoverer();
    }

    @Override
    protected void tearDown() throws Exception {
        coverer = null;
    }

    public void testGetLocalCoverFileName() {

        final Properties p = createNiceMock(Properties.class);
        expect(p.get((String) anyObject(), (String) anyObject())).andReturn("artist").times(1);
        expect(p.get((String) anyObject(), (String) anyObject())).andReturn("album").times(1);
        replay(p);

        coverer.setProperties(p);

        assertTrue(coverer.getLocalCoverFileName("ar123").equals("artist"));
        assertTrue(coverer.getLocalCoverFileName("al456").equals("album"));

        verify(p);
    }

    public void testIsArtist() {

        assertTrue(coverer.isArtist("ar123"));
        assertFalse(coverer.isArtist("al456"));
        assertFalse(coverer.isArtist(""));
        assertFalse(coverer.isArtist(null));
    }

    public void testGetLocalCoverDirectories() throws Exception {

        final ResultSet rs = createMock(ResultSet.class);
        expect(rs.next()).andReturn(true).times(1);
        expect(rs.getString("path")).andReturn("something");
        expect(rs.next()).andReturn(true).times(1);
        expect(rs.getString("path")).andReturn("something");
        expect(rs.next()).andReturn(false).times(1);
        rs.close();
        replay(rs);

        final PreparedStatement st = createMock(PreparedStatement.class);
        expect(st.executeQuery()).andReturn(rs);
        st.close();
        replay(st);

        final Database db = createMock(Database.class);
        expect(db.prepare((String) anyObject())).andReturn(st);
        replay(db);

        coverer.setDatabase(db);
        final File[] dirs = coverer.getLocalCoverDirectories("ar123");

        assertNotNull(coverer);
        assertEquals(1, dirs.length);
        assertTrue(dirs[0].getName().equals("something"));

        verify(db);
        verify(st);
        verify(rs);
    }

    public void testGetLocalCoverFilesAlbum() {

        coverer.setProperties(new StringProperties());

        final String coverFileName = "album",
                folder = "/home/music/album",
                file = folder + "/track.mp3";
        final File[] trackDirs = new File[]{
            new File(file)
        };
        final File[] files = coverer.getLocalCoverFiles(trackDirs, coverFileName, false);

        assertNotNull(files);
        assertEquals(3, files.length);
        assertEquals(new File(folder + "/album.jpg"), files[0]);
    }

    public void testGetLocalCoverFilesArtist() {

        coverer.setProperties(new StringProperties());

        final String coverFileName = "artist",
                folder = "/home/music/album",
                file = folder + "/track.mp3";
        final File[] trackDirs = new File[]{
            new File(file)
        };
        final File[] files = coverer.getLocalCoverFiles(trackDirs, coverFileName, true);

        assertNotNull(files);
        assertEquals(6, files.length);
        assertEquals(new File(folder + "/artist.jpg"), files[0]);
        assertEquals(new File("/home/music/artist.jpg"), files[3]);

    }

    public void testGetlocalCoverFilesFallbackAlbum() {

        coverer.setProperties(new StringProperties());

        final String coverFileName = "album",
                folder = "test/data/covers/artist - album",
                file = folder + "/track.mp3";

        final File[] trackDirs = new File[]{
            new File(file)
        };

        File[] files = coverer.getLocalCoverFiles(trackDirs, coverFileName, false);

        assertNotNull(files);
        assertEquals(3, files.length);
        assertEquals(new File(folder + "/album.jpg"), files[0]);

        // Fallback property set to NO should behave identically
        // as set to NULL
        coverer.getProperties().set(Constants.COVERS_FILE_FALLBACK, Properties.NO);
        files = coverer.getLocalCoverFiles(trackDirs, coverFileName, false);
        assertNotNull(files);
        assertEquals(3, files.length);
        assertEquals(new File(folder + "/album.jpg"), files[0]);

        coverer.getProperties().set(Constants.COVERS_FILE_FALLBACK, Properties.YES);
        files = coverer.getLocalCoverFiles(trackDirs, coverFileName, false);
        assertNotNull(files);
        assertEquals(4, files.length);
        assertEquals(new File(folder + "/album.jpg"), files[0]);
        assertEquals(new File(folder + "/fallback-file.png"), files[3]);
    }

    public void testGetLocalCoverFilesFallbackArtist() {

        coverer.setProperties(new StringProperties());

        final String coverFileName = "artist",
                folder = "test/data/covers/artist - album",
                file = folder + "/track.mp3";
        final File[] trackDirs = new File[]{
            new File(file)
        };
        File[] files = coverer.getLocalCoverFiles(trackDirs, coverFileName, true);

        assertNotNull(files);
        assertEquals(6, files.length);
        assertEquals(new File(folder + "/artist.jpg"), files[0]);
        assertEquals(new File("test/data/covers/artist.jpg"), files[3]);

        // Fallback property set to NO should behave identically
        // as set to NULL
        coverer.getProperties().set(Constants.COVERS_FILE_FALLBACK, Properties.NO);
        files = coverer.getLocalCoverFiles(trackDirs, coverFileName, true);
        assertNotNull(files);
        assertEquals(6, files.length);
        assertEquals(new File(folder + "/artist.jpg"), files[0]);
        assertEquals(new File("test/data/covers/artist.jpg"), files[3]);

        coverer.getProperties().set(Constants.COVERS_FILE_FALLBACK, Properties.YES);
        files = coverer.getLocalCoverFiles(trackDirs, coverFileName, true);
        assertNotNull(files);
        assertEquals(7, files.length);
        assertEquals(new File(folder + "/artist.jpg"), files[0]);
        assertEquals(new File("test/data/covers/artist.jpg"), files[3]);
        assertEquals(new File(folder + "/fallback-file.png"), files[6]);
    }
}
TOP

Related Classes of com.pugh.sockso.web.action.covers.LocalCovererTest

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.