Dane do poprawki:
"authorNick" : "Benutzername",
"Salary" : {
"monthlyValue" : 120000,
"exchangeRate" : 1
},
Dzięki za cynk.
Dodałem ten pojedynczy przypadek do testów:
@RunWith(Parameterized.class)
public class SalaryValueScrapperTest extends ScrapperTest<Integer> {
@Parameters
public static List<Object[]> data() {
return Arrays.asList(new Object[][] {
// ...
{ true, 10000, "<p>Bylo:<br> Doświadczenie 7-13 lat<br> Wykształcenie: mgr inz<br> Stanowisko: Senior / Lead Java Developer<br> Zarobki: 120k-130k CHF rocznie (net 8.3k-9.3k miesiecznie)<br> Miasto: Zurych</p> \\n<p>" }
});
}
// ...
}
i zmieniłem w silniku:
- currency:
Dodałem CHF
do enuma z walutami, a w traitService:
// ...
String chf = RegexUtils.transformRegexToTreatAsSeparateWord("chf");
TraitService<CurrencySalary>()
// ...
.add(new TraitStrategy<>(chf, chf, x -> CurrencySalary.CHF))`
// ...
- value:
// ...
String yearlyPattern = ".*rocznie.*(\\.|<p>|<br>)";
// ...
TraitService<Integer> service = new TraitService<Integer>()
.add(new TraitStrategy<>(thousandsCommaPattern + yearlyPattern, valuePattern, new IntMapper(1000.0/12.0)))
// ...
Rezultaty:
db.getCollection("4programmers").find({"Message.Salary.currency":"CHF"}).count()
było: 0 jest: 1
db.getCollection("4programmers").aggregate([
{
$match: {
"date":{$lt: ISODate("2019-10-07T00:00:00.000Z")}
}
},
{
$group: {
_id: null,
averagas: {
$avg: "$Message.Salary.monthlyValue"
}
}
}
])
było: 8 669 jest: 8 626
W załączeniu json.
Jak znajdziecie inne błędy to możecie zgłaszać ;)