package com.smash.revolance.ui.database;
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* ui-monitoring-database
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Copyright (C) 2012 - 2014 RevoLance
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
import org.apache.commons.io.FileUtils;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
/**
* User: wsmash
* Date: 14/09/13
* Time: 17:36
*/
public class FileSystemStorageTests
{
private static String dbRoot = "db";
private static IStorage storage;
@BeforeClass
public static void beforeTests() throws StorageException
{
storage = new FileSystemStorage( dbRoot );
storage.clear();
assertThat( storage.getKeys().isEmpty(), is( true ) );
}
@Test
public void storageShouldStoreDataInFileSystem() throws StorageException, IOException
{
storage.store( "key", "data" );
String content = FileUtils.readFileToString( new File( dbRoot, "key" ) );
assertThat( content, is( "data" ) );
}
@Test
public void storageShouldHandleFileAddedDirectlyInTheRootFolder() throws IOException, StorageException
{
File file = new File( dbRoot, "key" );
// Create the file since it does not exists yet!
FileUtils.writeStringToFile( file, "data" );
String content = storage.retrieve( "key" );
assertThat( content, is( "data" ) );
}
@Test(expected = StorageException.class)
public void storageShouldHandleDeletion() throws IOException, StorageException
{
storage.store( "key", "data" );
assertThat( storage.isKeyUsed( "key" ), is( true ) );
storage.delete( "key" );
assertThat( storage.isKeyUsed( "key" ), is( false ) );
storage.retrieve( "key" );
}
}