4 changed files with 167 additions and 5 deletions
@ -0,0 +1,79 @@
@@ -0,0 +1,79 @@
|
||||
/* |
||||
* Copyright 2020 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.springframework.data.mongodb.gridfs; |
||||
|
||||
import static org.assertj.core.api.Assertions.*; |
||||
import static org.mockito.Mockito.*; |
||||
|
||||
import java.io.ByteArrayInputStream; |
||||
import java.io.InputStream; |
||||
|
||||
import org.bson.Document; |
||||
import org.bson.types.ObjectId; |
||||
import org.junit.jupiter.api.BeforeEach; |
||||
import org.junit.jupiter.api.Test; |
||||
import org.springframework.data.mongodb.MongoDatabaseFactory; |
||||
import org.springframework.data.mongodb.core.convert.MongoConverter; |
||||
|
||||
/** |
||||
* @author Christoph Strobl |
||||
*/ |
||||
class GridFsTemplateUnitTests { |
||||
|
||||
private GridFsTemplateStub template; |
||||
|
||||
@BeforeEach |
||||
void beforeEach() { |
||||
template = new GridFsTemplateStub(); |
||||
} |
||||
|
||||
@Test // DATAMONGO-2574
|
||||
void contentMetadataDoesNotOverrideContentTypeIfSet() { |
||||
|
||||
template.onStoreReturn(new ObjectId()); |
||||
template.store(new ByteArrayInputStream(new byte[] {}), "filename", "json", new Document("meta", "data")); |
||||
|
||||
assertThat(template.capturedUpload().getOptions().getContentType()).isEqualTo("json"); |
||||
assertThat(template.capturedUpload().getOptions().getMetadata()).containsEntry("meta", "data"); |
||||
} |
||||
|
||||
private static class GridFsTemplateStub extends GridFsTemplate { |
||||
|
||||
private Object onStoreResult; |
||||
private GridFsObject<?, InputStream> capturedUpload; |
||||
|
||||
GridFsTemplateStub() { |
||||
super(mock(MongoDatabaseFactory.class), mock(MongoConverter.class)); |
||||
} |
||||
|
||||
@Override |
||||
public <T> T store(GridFsObject<T, InputStream> upload) { |
||||
|
||||
this.capturedUpload = upload; |
||||
return (T) onStoreResult; |
||||
} |
||||
|
||||
GridFsTemplateStub onStoreReturn(Object result) { |
||||
|
||||
this.onStoreResult = result; |
||||
return this; |
||||
} |
||||
|
||||
GridFsObject<?, InputStream> capturedUpload() { |
||||
return capturedUpload; |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,83 @@
@@ -0,0 +1,83 @@
|
||||
/* |
||||
* Copyright 2020 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.springframework.data.mongodb.gridfs; |
||||
|
||||
import static org.assertj.core.api.Assertions.*; |
||||
import static org.mockito.Mockito.*; |
||||
|
||||
import reactor.core.publisher.Flux; |
||||
import reactor.core.publisher.Mono; |
||||
|
||||
import java.io.InputStream; |
||||
|
||||
import org.bson.Document; |
||||
import org.bson.types.ObjectId; |
||||
import org.junit.jupiter.api.BeforeEach; |
||||
import org.junit.jupiter.api.Test; |
||||
import org.reactivestreams.Publisher; |
||||
import org.springframework.core.io.buffer.DataBuffer; |
||||
import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory; |
||||
import org.springframework.data.mongodb.core.convert.MongoConverter; |
||||
|
||||
/** |
||||
* @author Christoph Strobl |
||||
*/ |
||||
class ReactiveGridFsTemplateUnitTests { |
||||
|
||||
private ReactiveGridFsTemplateStub template; |
||||
|
||||
@BeforeEach |
||||
void beforeEach() { |
||||
template = new ReactiveGridFsTemplateStub(); |
||||
} |
||||
|
||||
@Test // DATAMONGO-2574
|
||||
void contentMetadataDoesNotOverrideContentTypeIfSet() { |
||||
|
||||
template.onStoreReturn(new ObjectId()); |
||||
template.store(Flux.empty(), "filename", "json", new Document("meta", "data")); |
||||
|
||||
assertThat(template.capturedUpload().getOptions().getContentType()).isEqualTo("json"); |
||||
assertThat(template.capturedUpload().getOptions().getMetadata()).containsEntry("meta", "data"); |
||||
} |
||||
|
||||
private static class ReactiveGridFsTemplateStub extends ReactiveGridFsTemplate { |
||||
|
||||
private Object onStoreResult; |
||||
private GridFsObject<?, Publisher<DataBuffer>> capturedUpload; |
||||
|
||||
ReactiveGridFsTemplateStub() { |
||||
super(mock(ReactiveMongoDatabaseFactory.class), mock(MongoConverter.class)); |
||||
} |
||||
|
||||
@Override |
||||
public <T> Mono<T> store(GridFsObject<T, Publisher<DataBuffer>> upload) { |
||||
|
||||
capturedUpload = upload; |
||||
return Mono.just((T) onStoreResult); |
||||
} |
||||
|
||||
ReactiveGridFsTemplateStub onStoreReturn(Object result) { |
||||
|
||||
this.onStoreResult = result; |
||||
return this; |
||||
} |
||||
|
||||
GridFsObject<?, Publisher<DataBuffer>> capturedUpload() { |
||||
return capturedUpload; |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue