Package com.github.hakko.musiccabinet.dao.jdbc

Source Code of com.github.hakko.musiccabinet.dao.jdbc.JdbcLibraryDaoTest

package com.github.hakko.musiccabinet.dao.jdbc;

import static com.github.hakko.musiccabinet.service.library.LibraryUtil.set;
import static com.github.hakko.musiccabinet.util.UnittestLibraryUtil.getFile;

import java.util.Set;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.github.hakko.musiccabinet.dao.util.PostgreSQLFunction;
import com.github.hakko.musiccabinet.dao.util.PostgreSQLUtil;
import com.github.hakko.musiccabinet.domain.model.library.File;
import com.github.hakko.musiccabinet.exception.ApplicationException;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class JdbcLibraryDaoTest {

  @Autowired
  private JdbcLibraryAdditionDao additionDao;

  @Autowired
  private JdbcLibraryDeletionDao deletionDao;
 
  @Autowired
  private JdbcLibraryPresenceDao presenceDao;
 
  @Before
  public void clearLibrary() throws ApplicationException {
    PostgreSQLUtil.loadFunction(additionDao, PostgreSQLFunction.ADD_TO_LIBRARY);
    PostgreSQLUtil.loadFunction(additionDao, PostgreSQLFunction.DELETE_FROM_LIBRARY);
   
    additionDao.getJdbcTemplate().execute("truncate library.directory cascade");
  }
 
  @Test
  public void storesSiblingSubDirectories() {
    String root = "/a";
    Set<String> subDirs = set("/a/b", "/a/c");
   
    additionDao.addSubdirectories(root, subDirs);
    additionDao.updateLibrary();
   
    Assert.assertEquals(subDirs, presenceDao.getSubdirectories(root));
  }

  @Test
  public void storesNestedSubDirectories() {
    String a = "/a", b = "/a/b", c = "/a/b/c";
   
    additionDao.addSubdirectories(a, set(b));
    additionDao.addSubdirectories(b, set(c));
    additionDao.updateLibrary();
   
    Assert.assertEquals(set(b), presenceDao.getSubdirectories(a));
    Assert.assertEquals(set(c), presenceDao.getSubdirectories(b));
  }
 
  @Test
  public void deletesSiblingSubDirectories() {
    String a = "/a", b = "/a/b", c = "/a/c",
        d = "/a/d", e = "/a/d/e", f = "/a/d/f";
   
    additionDao.addSubdirectories(a, set(b, c));
    additionDao.addSubdirectories(a, set(d));
    additionDao.addSubdirectories(d, set(e, f));
    additionDao.updateLibrary();

    deletionDao.deleteSubdirectories(a, set(c, d));
    deletionDao.updateLibrary();
   
    Assert.assertEquals(set(b), presenceDao.getSubdirectories(a));
   
  }

  @Test
  public void deletesNestedSubDirectories() {
    String a = "/a", b = "/a/b", c = "/a/c",
        d = "/a/d", e = "/a/d/e", f = "/a/d/f";
   
    additionDao.addSubdirectories(a, set(b, c));
    additionDao.addSubdirectories(a, set(d));
    additionDao.addSubdirectories(d, set(e, f));
    additionDao.updateLibrary();

    deletionDao.deleteSubdirectories(a, set(d));
    deletionDao.updateLibrary();
   
    Assert.assertEquals(set(b, c), presenceDao.getSubdirectories(a));
   
  }

  @Test
  public void storesFile() {
    String d = "/d";
    File f = getFile(d, "f1");

    additionDao.addSubdirectories(null, set(d));
    additionDao.addFiles(d, set(f));
    additionDao.updateLibrary();
   
    Assert.assertEquals(set(f), presenceDao.getFiles(d));
  }

  @Test
  public void storesFiles() {
    String d1 = "/d1", d2 = "/d1/d2";
    File f1 = getFile(d1, "f1");
    File f2a = getFile(d2, "f2a");
    File f2b = getFile(d2, "f2b");

    additionDao.addSubdirectories(null, set(d1));
    additionDao.addSubdirectories(d1, set(d2));
    additionDao.addFiles(d1, set(f1));
    additionDao.addFiles(d2, set(f2a, f2b));
    additionDao.updateLibrary();
   
    Assert.assertEquals(set(f1), presenceDao.getFiles(d1));
    Assert.assertEquals(set(f2a, f2b), presenceDao.getFiles(d2));
  }

  @Test
  public void deletesDirectoryWithFiles() {
    String d1 = "/d1", d2 = "/d1/d2", d3 = "/d1/d2/d3";
    File f1 = getFile(d1, "f1");
    File f2 = getFile(d2, "f2");
    File f3 = getFile(d3, "f3");

    additionDao.addSubdirectories(null, set(d1));
    additionDao.addSubdirectories(d1, set(d2));
    additionDao.addSubdirectories(d2, set(d3));
    additionDao.addFiles(d1, set(f1));
    additionDao.addFiles(d2, set(f2));
    additionDao.addFiles(d3, set(f3));
    additionDao.updateLibrary();
   
    deletionDao.deleteSubdirectories(d1, set(d2));
    deletionDao.updateLibrary();
   
    Assert.assertEquals(set(f1), presenceDao.getFiles(d1));
    Assert.assertTrue(presenceDao.exists(d1));
    Assert.assertFalse(presenceDao.exists(d2));
    Assert.assertFalse(presenceDao.exists(d3));
  }
 
}
TOP

Related Classes of com.github.hakko.musiccabinet.dao.jdbc.JdbcLibraryDaoTest

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.