package com.bitmonlab.osiris.imports.map.dao.impl; import java.io.File; import java.io.InputStream; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.springframework.data.mongodb.core.MongoTemplate; import com.bitmonlab.osiris.imports.map.dao.impl.ImportFilesRepositoryCustomImpl; import com.mongodb.DB; import com.mongodb.gridfs.GridFS; import com.mongodb.gridfs.GridFSDBFile; import com.mongodb.gridfs.GridFSInputFile; @RunWith(PowerMockRunner.class) @PrepareForTest({ImportFilesRepositoryCustomImpl.class,GridFS.class}) public class ImportFilesRepositoryCustomImplTest { private String collectionNameMap = "files_map"; private String collectionNameOSM = "files_osm"; private String collectionNameObj = "files_obj"; @InjectMocks private ImportFilesRepositoryCustomImpl importFilesRepositoryCustomImpl; @Mock private MongoTemplate mongoTemplate; @Mock private File file; private String idApp = "appIDTest"; @Mock private DB db; @Mock private GridFS gridFS; @Mock private GridFSInputFile gridFSInputFile; @Mock private GridFSDBFile gridFSFile; @Mock private InputStream inputStream; @Test public void saveFileMap() throws Exception{ //Fixture Mockito.when(mongoTemplate.getDb()).thenReturn(db); PowerMockito.whenNew(GridFS.class).withArguments(db, collectionNameMap).thenReturn(gridFS); Mockito.when(gridFS.findOne(idApp)).thenReturn(gridFSFile); Mockito.when(gridFS.createFile(file)).thenReturn(gridFSInputFile); // Experimentations importFilesRepositoryCustomImpl.saveFileMap(idApp,file); // Expectations Mockito.verify(gridFS).remove(gridFSFile); Mockito.verify(gridFS).createFile(file); Mockito.verify(gridFSInputFile).setFilename(idApp); Mockito.verify(gridFSInputFile).save(); } @Test public void saveFileMapWithoutRemoving() throws Exception{ //Fixture Mockito.when(mongoTemplate.getDb()).thenReturn(db); PowerMockito.whenNew(GridFS.class).withArguments(db, collectionNameMap).thenReturn(gridFS); Mockito.when(gridFS.findOne(idApp)).thenReturn(null); Mockito.when(gridFS.createFile(file)).thenReturn(gridFSInputFile); // Experimentations importFilesRepositoryCustomImpl.saveFileMap(idApp,file); // Expectations Mockito.verify(gridFS).createFile(file); Mockito.verify(gridFSInputFile).setFilename(idApp); Mockito.verify(gridFSInputFile).save(); } @Test public void saveFileOSM() throws Exception{ //Fixture Mockito.when(mongoTemplate.getDb()).thenReturn(db); PowerMockito.whenNew(GridFS.class).withArguments(db, collectionNameOSM).thenReturn(gridFS); Mockito.when(gridFS.findOne(idApp)).thenReturn(gridFSFile); Mockito.when(gridFS.createFile(file)).thenReturn(gridFSInputFile); // Experimentations importFilesRepositoryCustomImpl.saveFileOSM(idApp,file); // Expectations Mockito.verify(gridFS).remove(gridFSFile); Mockito.verify(gridFS).createFile(file); Mockito.verify(gridFSInputFile).setFilename(idApp); Mockito.verify(gridFSInputFile).save(); } @Test public void saveFileOSMWithoutRemoving() throws Exception{ //Fixture Mockito.when(mongoTemplate.getDb()).thenReturn(db); PowerMockito.whenNew(GridFS.class).withArguments(db, collectionNameOSM).thenReturn(gridFS); Mockito.when(gridFS.findOne(idApp)).thenReturn(null); Mockito.when(gridFS.createFile(file)).thenReturn(gridFSInputFile); // Experimentations importFilesRepositoryCustomImpl.saveFileOSM(idApp,file); // Expectations Mockito.verify(gridFS).createFile(file); Mockito.verify(gridFSInputFile).setFilename(idApp); Mockito.verify(gridFSInputFile).save(); } @Test public void saveFileObj() throws Exception{ //Fixture Mockito.when(mongoTemplate.getDb()).thenReturn(db); PowerMockito.whenNew(GridFS.class).withArguments(db, collectionNameObj).thenReturn(gridFS); Mockito.when(gridFS.findOne(idApp)).thenReturn(gridFSFile); Mockito.when(gridFS.createFile(file)).thenReturn(gridFSInputFile); // Experimentations importFilesRepositoryCustomImpl.saveFileObj(idApp,file); // Expectations Mockito.verify(gridFS).remove(gridFSFile); Mockito.verify(gridFS).createFile(file); Mockito.verify(gridFSInputFile).setFilename(idApp); Mockito.verify(gridFSInputFile).save(); } @Test public void saveFileObjWithoutRemoving() throws Exception{ //Fixture Mockito.when(mongoTemplate.getDb()).thenReturn(db); PowerMockito.whenNew(GridFS.class).withArguments(db, collectionNameObj).thenReturn(gridFS); Mockito.when(gridFS.findOne(idApp)).thenReturn(null); Mockito.when(gridFS.createFile(file)).thenReturn(gridFSInputFile); // Experimentations importFilesRepositoryCustomImpl.saveFileObj(idApp,file); // Expectations Mockito.verify(gridFS).createFile(file); Mockito.verify(gridFSInputFile).setFilename(idApp); Mockito.verify(gridFSInputFile).save(); } }