/**
* Copyright (c) 2012, Lindsay Bradford and other Contributors.
* All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the BSD 3-Clause licence which accompanies
* this distribution, and is available at
* http://opensource.org/licenses/BSD-3-Clause
*/
package blacksmyth.personalfinancier.control;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
import blacksmyth.general.file.IFileSystemBridge;
import blacksmyth.personalfinancier.dependencies.json.IJSonSerialisationBridge;
import blacksmyth.personalfinancier.dependencies.json.JSonObjectFileConverter;
public class JSonObjectFileConverterTest {
private JSonObjectFileConverter<String> testConverter;
private IFileSystemBridge mockFileSystemBridge;
private IJSonSerialisationBridge<String> mockJSonBridge;
private static final String FILE_JSON_CONTENT = "fileLoadResult";
private static final String JSON_PARSE_RESULT = "JSonSaveResult";
@SuppressWarnings({"unchecked", "cast"})
@Before
public void testSetup() {
testConverter = new JSonObjectFileConverter<String>();
mockFileSystemBridge = mock(IFileSystemBridge.class);
when(
mockFileSystemBridge.loadTextFile(
any(String.class)
)
).thenReturn(
FILE_JSON_CONTENT
);
testConverter.setFileSystemBridge(mockFileSystemBridge);
mockJSonBridge =
(IJSonSerialisationBridge<String>) mock(IJSonSerialisationBridge.class);
when(
mockJSonBridge.toJSon(
any(String.class)
)
).thenReturn(
JSON_PARSE_RESULT
);
testConverter.setJSonBridge(mockJSonBridge);
}
@Test(expected=AssertionError.class)
public void ToFileFromObject_InvalidConfig_AssertionError() {
JSonObjectFileConverter<String> converter = new JSonObjectFileConverter<String>();
converter.toFileFromObject("test", "fart");
}
@Test(expected=AssertionError.class)
public void ToObjectFromFile_InvalidConfig_AssertionError() {
JSonObjectFileConverter<String> converter = new JSonObjectFileConverter<String>();
converter.toObjectFromFile("test");
}
@Test
public void ToFileFromObject_ValidConfig_ActionTaken() {
testConverter.toFileFromObject("test", "fart");
verify(mockJSonBridge).toJSon("fart");
verify(mockFileSystemBridge).saveTextFile("test", JSON_PARSE_RESULT);
}
@Test
public void ToObjectFromFile_ValidConfig_ActionTaken() {
testConverter.toObjectFromFile("test");
verify(mockFileSystemBridge).loadTextFile("test");
verify(mockJSonBridge).fromJSon(FILE_JSON_CONTENT);
}
}