package com.vistatec.ocelot.services; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.jmock.Expectations; import org.jmock.Mockery; import org.junit.Before; import org.junit.Test; import com.vistatec.ocelot.events.ItsDocStatsUpdateLqiEvent; import com.vistatec.ocelot.events.ItsDocStatsRecalculateEvent; import com.vistatec.ocelot.events.LQIEditEvent; import com.vistatec.ocelot.events.LQIModificationEvent; import com.vistatec.ocelot.events.SegmentEditEvent; import com.vistatec.ocelot.events.SegmentTargetResetEvent; import com.vistatec.ocelot.events.api.OcelotEventQueue; import com.vistatec.ocelot.its.model.LanguageQualityIssue; import com.vistatec.ocelot.rules.RulesTestHelpers; import com.vistatec.ocelot.segment.model.OcelotSegment; import com.vistatec.ocelot.segment.model.SimpleSegment; import com.vistatec.ocelot.xliff.XLIFFDocument; public class TestSegmentService { private final Mockery mockery = new Mockery(); private SegmentService segmentService; private final OcelotEventQueue mockEventQueue = mockery.mock(OcelotEventQueue.class); @Before public void before() { this.segmentService = new SegmentServiceImpl(mockEventQueue); } @Test public void testResetSegmentTarget() { final OcelotSegment seg = new SimpleSegment.Builder() .segmentNumber(1) .source("source") .target("target") .originalTarget("original_target") .build(); final XLIFFDocument xliff = mockery.mock(XLIFFDocument.class); mockery.checking(new Expectations() {{ oneOf(mockEventQueue).post(with(any(SegmentEditEvent.class))); allowing(xliff).getSegments(); will(returnValue(Collections.singletonList(seg))); }}); segmentService.resetSegmentTarget(new SegmentTargetResetEvent(xliff, seg)); assertTrue(seg.getTarget().getDisplayText().equals( seg.getOriginalTarget().getDisplayText())); } @Test public void testItsDocStatsLoadSegments() { final List<OcelotSegment> segments = new ArrayList<>(); segments.add(new SimpleSegment.Builder() .segmentNumber(1) .source("source") .target("target") .originalTarget("original_target") .build()); final XLIFFDocument xliff = mockery.mock(XLIFFDocument.class); mockery.checking(new Expectations() {{ oneOf(mockEventQueue).post(with(any(ItsDocStatsRecalculateEvent.class))); allowing(xliff).getSegments(); will(returnValue(segments)); }}); assertEquals(0, segmentService.getNumSegments()); segmentService.setSegments(xliff); assertEquals(1, segmentService.getNumSegments()); mockery.assertIsSatisfied(); } @Test public void testEditLQI() { mockery.checking(new Expectations() {{ oneOf(mockEventQueue).post(with(any(ItsDocStatsUpdateLqiEvent.class))); oneOf(mockEventQueue).post(with(any(SegmentEditEvent.class))); oneOf(mockEventQueue).post(with(any(LQIModificationEvent.class))); }}); LanguageQualityIssue lqi = RulesTestHelpers.lqi("omission", 85); OcelotSegment seg = new SimpleSegment.Builder() .segmentNumber(1) .source("source") .target("target") .originalTarget("original_target") .build(); seg.addLQI(lqi); LanguageQualityIssue modifiedLqi = RulesTestHelpers.lqi("grammar", 75); assertTrue(!seg.getLQI().isEmpty()); assertTrue(seg.getLQI().get(0).getType().equals("omission")); assertTrue(seg.getLQI().get(0).getSeverity() == 85); segmentService.editLQI(new LQIEditEvent(modifiedLqi, lqi, seg, lqi)); assertTrue(!seg.getLQI().isEmpty()); assertTrue(seg.getLQI().get(0).getType().equals("grammar")); assertTrue(seg.getLQI().get(0).getSeverity() == 75); } }