0

Перепроектируем классы для возможности тестирования

This commit is contained in:
2017-04-07 01:33:10 +03:00
parent 82f26515ef
commit 369ba8aa6c
14 changed files with 436 additions and 160 deletions

View File

@@ -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();
}
}
}

View File

@@ -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() {
}
}

View File

@@ -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());
}
}

View File

@@ -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());
}
}

View File

@@ -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>