Перепроектируем классы для возможности тестирования
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2017-04-07
|
||||
*/
|
||||
package kinosearch.kinosearch3.cinema;
|
||||
|
||||
import de.flapdoodle.embed.mongo.Command;
|
||||
import de.flapdoodle.embed.mongo.MongodExecutable;
|
||||
import de.flapdoodle.embed.mongo.MongodProcess;
|
||||
import de.flapdoodle.embed.mongo.MongodStarter;
|
||||
import de.flapdoodle.embed.mongo.config.IMongodConfig;
|
||||
import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
|
||||
import de.flapdoodle.embed.mongo.config.Net;
|
||||
import de.flapdoodle.embed.mongo.config.RuntimeConfigBuilder;
|
||||
import de.flapdoodle.embed.mongo.distribution.Version;
|
||||
import de.flapdoodle.embed.process.config.IRuntimeConfig;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class AbstractScannerTest {
|
||||
private static MongodProcess mongodProcess;
|
||||
|
||||
@BeforeClass
|
||||
public static void initBase() throws IOException {
|
||||
IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder()
|
||||
.defaultsWithLogger(Command.MongoD, LoggerFactory.getLogger("Mongod"))
|
||||
.build();
|
||||
MongodStarter starter = MongodStarter.getInstance(runtimeConfig);
|
||||
|
||||
IMongodConfig mongodConfig = new MongodConfigBuilder()
|
||||
.version(Version.V3_0_5)
|
||||
.net(new Net("127.0.0.1",27017, false))
|
||||
.build();
|
||||
MongodExecutable mongodExecutable = starter.prepare(mongodConfig);
|
||||
mongodProcess = mongodExecutable.start();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void shutdownBase() {
|
||||
mongodProcess.stop();
|
||||
try {
|
||||
Thread.sleep(5000L);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2017-04-06
|
||||
*/
|
||||
package kinosearch.kinosearch3.cinema;
|
||||
|
||||
import kinosearch.kinosearch3.spider.FileDownloader;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class FakeFileDownloader implements FileDownloader {
|
||||
@Override
|
||||
public void addFile(String url, File saveTo) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2017-04-07
|
||||
*/
|
||||
package kinosearch.kinosearch3.cinema.onlinelife;
|
||||
|
||||
import kinosearch.kinosearch3.cinema.AbstractScannerTest;
|
||||
import kinosearch.kinosearch3.spider.CinemaDocument;
|
||||
import org.junit.*;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.data.mongodb.core.MongoOperations;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration("/kinosearch/kinosearch3/spider/test-spring.xml")
|
||||
public class OnlinelifeScannerTest extends AbstractScannerTest {
|
||||
@Autowired
|
||||
@Qualifier("onlinelifeScanner")
|
||||
private ScannerImpl scanner;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mongoTemplate")
|
||||
private MongoOperations mongoOperations;
|
||||
|
||||
@After
|
||||
public void resetBase() {
|
||||
mongoOperations.dropCollection("cinema");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void browseAndSaveTest() {
|
||||
scanner.browseAndSave("http://www.online-life.cc/76-pol-sekretnyy-materialchik-onlayn.html");
|
||||
Assert.assertEquals(1, mongoOperations.findAll(CinemaDocument.class).size());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2017-04-06
|
||||
*/
|
||||
package kinosearch.kinosearch3.cinema.seasonvar;
|
||||
|
||||
import com.mongodb.CommandResult;
|
||||
import kinosearch.kinosearch3.cinema.AbstractScannerTest;
|
||||
import kinosearch.kinosearch3.spider.CinemaDocument;
|
||||
import org.junit.*;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.data.mongodb.core.MongoOperations;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration("/kinosearch/kinosearch3/spider/test-spring.xml")
|
||||
public class SeasonvarScannerTest extends AbstractScannerTest {
|
||||
@Autowired
|
||||
@Qualifier("seasonvarScanner")
|
||||
private ScannerImpl scanner;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("mongoTemplate")
|
||||
private MongoOperations mongoOperations;
|
||||
|
||||
@After
|
||||
public void resetBase() {
|
||||
mongoOperations.dropCollection("cinema");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void browseAndSaveTest() {
|
||||
scanner.browseAndSave("http://seasonvar.ru/serial-13451-A_ty_dumal_chto_tvoya_zhena_v_onlajn_igre_na_samom_dele_ne_devushka.html");
|
||||
Assert.assertEquals(1, mongoOperations.findAll(CinemaDocument.class).size());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||
http://www.springframework.org/schema/data/mongo
|
||||
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
|
||||
|
||||
<mongo:mongo id="mongo" host="127.0.0.1" port="27017"/>
|
||||
<mongo:db-factory id="mongoDbFactory" dbname="fakeBase" mongo-ref="mongo"/>
|
||||
|
||||
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
|
||||
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
|
||||
</bean>
|
||||
|
||||
<bean id="repository" class="kinosearch.kinosearch3.spider.MongoDBRepository">
|
||||
<constructor-arg name="mongoOperations" ref="mongoTemplate"/>
|
||||
</bean>
|
||||
|
||||
<bean id="fileDownloader" class="kinosearch.kinosearch3.cinema.FakeFileDownloader"/>
|
||||
|
||||
<bean id="browser" class="kinosearch.kinosearch3.browser.ApacheBrowser" scope="prototype">
|
||||
<property name="encoding" value="utf-8"/>
|
||||
</bean>
|
||||
|
||||
<bean id="onlinelifeScanner" class="kinosearch.kinosearch3.cinema.onlinelife.ScannerImpl">
|
||||
<constructor-arg name="fileDownloader" ref="fileDownloader"/>
|
||||
<constructor-arg name="browser" ref="browser"/>
|
||||
<constructor-arg name="saveToDir" value="file:R:/onlinelife"/>
|
||||
<constructor-arg name="repository" ref="repository"/>
|
||||
</bean>
|
||||
|
||||
<bean id="seasonvarScanner" class="kinosearch.kinosearch3.cinema.seasonvar.ScannerImpl">
|
||||
<constructor-arg name="fileDownloader" ref="fileDownloader"/>
|
||||
<constructor-arg name="browser" ref="browser"/>
|
||||
<constructor-arg name="saveTo" value="file:R:/seasonvar"/>
|
||||
<constructor-arg name="repository" ref="repository"/>
|
||||
</bean>
|
||||
</beans>
|
||||
Reference in New Issue
Block a user