@Test public void createWithStream_forNewContent_shouldCreateContent() throws IOException { // Given // we create some content FlatsyDatabase db = new FlatsyFlatFileDatabase(root); String uri = "births/data.json"; String uriNew = "births/new.json"; // When // we copy the file try (InputStream stream = Files.newInputStream(root.resolve(uri))) { db.create(new FlatsyObject(uriNew, db), stream); } // Then // files and folders exist and when we retrieve the file it has the content assertEquals(db.retrieve(new FlatsyObject(uri, db)), db.retrieve(new FlatsyObject(uriNew, db))); }
@Test public void retrieve_forInvalidURI_shouldReturnNull() throws IOException { // Given // a database FlatsyDatabase db = new FlatsyFlatFileDatabase(root); // When // we retrieve a valid uri FlatsyObject object = new FlatsyObject("bingy/bangy/bong.json", db); String invalidString = db.retrieve(object); // Then // we expect to have file content assertNull(invalidString); }
@Test public void create_newContentForExistingFolder_shouldCreateFile() throws IOException { // Given // we create some content FlatsyDatabase db = new FlatsyFlatFileDatabase(root); String newContent = "This is new content"; String newURI = "births/foo.json"; // When // we create the file FlatsyObject object = new FlatsyObject(newURI, db); db.create(object, newContent); // Then // when we retrieve the file it has the content assertEquals(newContent, db.retrieve(new FlatsyObject(newURI, db))); }
@Test public void create_forExistingContent_shouldOverwrite() throws IOException { // Given // we create some content FlatsyDatabase db = new FlatsyFlatFileDatabase(root); String content = "This is original content"; String uri = "births/original.json"; db.create(new FlatsyObject(uri, db), content); // When // we create new content String newContent = "This is new content"; db.create(new FlatsyObject(uri, db), newContent); // Then // when we retrieve the file it has the content assertEquals(newContent, db.retrieve(new FlatsyObject(uri, db))); }
@Test public void create_newContentForNonExistingFolder_shouldCreateStructure() throws IOException { // Given // we create some content FlatsyDatabase db = new FlatsyFlatFileDatabase(root); String newContent = "This is new content"; String newURI = "births/flatsyTest/foo.json"; String newFolderURI = "births/flatsyTest"; // When // we create the file FlatsyObject object = new FlatsyObject(newURI, db); db.create(object, newContent); // Then // files and folders exist and when we retrieve the file it has the content assertEquals(FlatsyObjectType.JSONFile, db.type(newURI)); assertEquals(FlatsyObjectType.Folder, db.type(newFolderURI)); assertEquals(newContent, db.retrieve(new FlatsyObject(newURI, db))); }
@Test public void retrieveFromStream_givenFile_shouldReturnStreamForRetrieve() throws IOException { // Given // a database FlatsyDatabase db = new FlatsyFlatFileDatabase(root); // When // we retrieve a valid uri String retrieved = null; FlatsyObject object = new FlatsyObject("births/data.json", db); try (InputStream stream = db.retrieveStream(object)) { StringWriter writer = new StringWriter(); IOUtils.copy(stream, writer, "UTF8"); retrieved = writer.toString(); } // Then // we compare to regular (and already tested) retrieve assertEquals(db.retrieve(object), retrieved); }