@Test public void shouldStoreDocumentWithUnusedKeyAndWithNonNullMetadata() { Document doc = Schematic.newDocument("k1", "value1", "k2", 2); Document metadata = Schematic.newDocument("mimeType", "text/plain"); String key = "can be anything"; SchematicEntry prior = db.put(key, doc, metadata); assert prior == null : "Should not have found a prior entry"; // Read back from the database ... SchematicEntry entry = db.get(key); assert entry != null : "Should have found the entry"; // Verify the content ... Document read = entry.getContentAsDocument(); assert read != null; assert "value1".equals(read.getString("k1")); assert 2 == read.getInteger("k2"); assert entry.getContentAsBinary() == null : "Should not have a Binary value for the entry's content"; assert read.containsAll(doc); assert read.equals(doc); // Verify the metadata ... Document readMetadata = entry.getMetadata(); assert readMetadata != null; assert readMetadata.getString("mimeType").equals(metadata.getString("mimeType")); assert readMetadata.containsAll(metadata); // metadata contains more than what we specified ... assert !readMetadata.equals(metadata) : "Expected:\n" + metadata + "\nFound: \n" + readMetadata; }
@Test public void shouldStoreDocumentWithUnusedKeyAndWithNullMetadata() { Document doc = Schematic.newDocument("k1", "value1", "k2", 2); String key = "can be anything"; SchematicEntry prior = db.put(key, doc, null); assert prior == null : "Should not have found a prior entry"; SchematicEntry entry = db.get(key); assert entry != null : "Should have found the entry"; // Verify the content ... Document read = entry.getContentAsDocument(); assert read != null; assert "value1".equals(read.getString("k1")); assert 2 == read.getInteger("k2"); assert entry.getContentAsBinary() == null : "Should not have a Binary value for the entry's content"; assert read.containsAll(doc); assert read.equals(doc); // Verify the metadata ... Document readMetadata = entry.getMetadata(); assert readMetadata != null; assert readMetadata.getString("id").equals(key); }
@Test public void shouldStoreDocumentAndFetchAndModifyAndRefetch() throws Exception { // Store the document ... Document doc = Schematic.newDocument("k1", "value1", "k2", 2); Document metadata = Schematic.newDocument("mimeType", "text/plain"); String key = "can be anything"; SchematicEntry prior = db.put(key, doc, metadata); assert prior == null : "Should not have found a prior entry"; // Read back from the database ... SchematicEntry entry = db.get(key); assert entry != null : "Should have found the entry"; // Verify the content ... Document read = entry.getContentAsDocument(); assert read != null; assert "value1".equals(read.getString("k1")); assert 2 == read.getInteger("k2"); assert entry.getContentAsBinary() == null : "Should not have a Binary value for the entry's content"; assert read.containsAll(doc); assert read.equals(doc); // Modify using an editor ... try { // tm.begin(); EditableDocument editable = entry.editDocumentContent(); editable.setBoolean("k3", true); editable.setNumber("k4", 3.5d); } finally { // tm.commit(); } // Now re-read ... SchematicEntry entry2 = db.get(key); Document read2 = entry2.getContentAsDocument(); assert read2 != null; assert "value1".equals(read2.getString("k1")); assert 2 == read2.getInteger("k2"); assert true == read2.getBoolean("k3"); assert 3.4d < read2.getDouble("k4"); }