Skip to content

Commit

Permalink
added feed definitions to all modules #123
Browse files Browse the repository at this point in the history
  • Loading branch information
isuru89 committed Aug 5, 2022
1 parent 264a57f commit 492e90b
Show file tree
Hide file tree
Showing 20 changed files with 291 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ public ElementParser getParser() {

public abstract AbstractProcessor<? extends AbstractRule, ? extends Signal> createProcessor(AbstractRule rule, RuleExecutionContextSupport ruleExecutionContext);

/**
* Returns a mapping of possible feed definitions this module can generate.
* The returned map should contain, feed type as key and its spec class as value.
*
* @return a map of feed definitions.
*/
public Map<String, Class<? extends Serializable>> getFeedDefinitions() {
return Map.of();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

import io.github.oasis.core.context.RuleExecutionContextSupport;
import io.github.oasis.core.context.RuntimeContextSupport;
import io.github.oasis.core.elements.AbstractDef;
import io.github.oasis.core.elements.AbstractRule;
import io.github.oasis.core.elements.AbstractSink;
import io.github.oasis.core.elements.SignalCollector;
Expand All @@ -40,6 +39,7 @@
import io.github.oasis.elements.badges.rules.PeriodicStreakNRule;
import io.github.oasis.elements.badges.rules.StreakNBadgeRule;
import io.github.oasis.elements.badges.rules.TimeBoundedStreakNRule;
import io.github.oasis.elements.badges.spec.BadgeFeedData;
import io.github.oasis.elements.badges.spec.BadgeSpecification;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -60,6 +60,11 @@ void beforeEach() {
module = new BadgesModule();
}

@Test
void shouldHaveCorrectId() {
Assertions.assertEquals(BadgesModule.ID, module.getId());
}

@Test
void getSupportedDefinitions() {
var supportedDefinitions = module.getParser().getAcceptingDefinitions().getDefinitions();
Expand Down Expand Up @@ -119,6 +124,16 @@ void createProcessorForUnknownRule() {
Assertions.assertNull(module.createProcessor(new UnknownRule("abc"), contextSupport));
}

@Test
void testFeedDefinitions() {
var def = module.getFeedDefinitions();
Assertions.assertEquals(2, def.size());
Assertions.assertTrue(def.containsKey(BadgeIDs.FEED_TYPE_BADGE_EARNED));
Assertions.assertTrue(def.containsKey(BadgeIDs.FEED_TYPE_BADGE_REMOVED));
Assertions.assertEquals(BadgeFeedData.class, def.get(BadgeIDs.FEED_TYPE_BADGE_REMOVED));
Assertions.assertEquals(BadgeFeedData.class, def.get(BadgeIDs.FEED_TYPE_BADGE_EARNED));
}

private static class UnknownRule extends AbstractRule {
public UnknownRule(String id) {
super(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
*/
public final class ChallengeIDs {

public static final String FEED_TYPE_CHALLENGE_WON = "CHALLENGE_WON";

public static String getGameUseChallengesSummary(int gameId, long userId) {
return String.format("{g%d}:u%d:challenges", gameId, userId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public Optional<FeedEntry> generateFeedEntry() {
.byPlugin(ChallengesModule.ID)
.eventTimestamp(getOccurredTimestamp())
.scope(FeedEntry.FeedScope.fromEventScope(getEventScope(), getRuleId()))
.type("CHALLENGE_WON")
.type(ChallengeIDs.FEED_TYPE_CHALLENGE_WON)
.data(ChallengeFeedData.builder()
.ruleId(getRuleId())
.position(getPosition())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@
import io.github.oasis.core.context.RuntimeContextSupport;
import io.github.oasis.core.elements.*;
import io.github.oasis.core.exception.OasisException;
import io.github.oasis.elements.challenges.spec.ChallengeFeedData;
import io.github.oasis.elements.challenges.stats.ChallengeStats;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
* @author Isuru Weerarathna
Expand Down Expand Up @@ -71,4 +74,11 @@ public AbstractSink createSink(Class<? extends AbstractSink> sinkReq, RuntimeCon
}
return null;
}

@Override
public Map<String, Class<? extends Serializable>> getFeedDefinitions() {
return Map.of(
ChallengeIDs.FEED_TYPE_CHALLENGE_WON, ChallengeFeedData.class
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@

import io.github.oasis.core.context.RuleExecutionContextSupport;
import io.github.oasis.core.context.RuntimeContextSupport;
import io.github.oasis.core.elements.AbstractDef;
import io.github.oasis.core.elements.AbstractProcessor;
import io.github.oasis.core.elements.AbstractRule;
import io.github.oasis.core.elements.AbstractSink;
import io.github.oasis.core.elements.Signal;
import io.github.oasis.core.elements.SignalCollector;
import io.github.oasis.core.external.Db;
import io.github.oasis.elements.challenges.spec.ChallengeFeedData;
import io.github.oasis.elements.challenges.spec.ChallengeSpecification;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -48,6 +48,11 @@ void beforeEach() {
module = new ChallengesModule();
}

@Test
void shouldHaveCorrectId() {
Assertions.assertEquals(ChallengesModule.ID, module.getId());
}

@Test
void getSupportedDefinitions() {
var supportedDefinitions = module.getParser().getAcceptingDefinitions().getDefinitions();
Expand All @@ -57,6 +62,14 @@ void getSupportedDefinitions() {
Assertions.assertEquals(supportedDefinitions.get(0).getAcceptedDefinitions().getSpecificationClz(), ChallengeSpecification.class);
}

@Test
void shouldDeclareCorrectFeedDefinitions() {
var def = module.getFeedDefinitions();
Assertions.assertEquals(1, def.size());
Assertions.assertTrue(def.containsKey(ChallengeIDs.FEED_TYPE_CHALLENGE_WON));
Assertions.assertEquals(ChallengeFeedData.class, def.get(ChallengeIDs.FEED_TYPE_CHALLENGE_WON));
}

@Test
void getParser() {
Assertions.assertTrue(module.getParser() instanceof ChallengeParser);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
*/
public final class MilestoneIDs {

public static final String FEED_TYPE_MILESTONE_REACHED = "MILESTONE_REACHED";

public static String getUserKeyUnderGameMilestone(long userId) {
return String.valueOf(userId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public Optional<FeedEntry> generateFeedEntry() {
return Optional.of(FeedEntry.builder()
.byPlugin(MilestonesModule.ID)
.eventTimestamp(getOccurredTimestamp())
.type("MILESTONE_REACHED")
.type(MilestoneIDs.FEED_TYPE_MILESTONE_REACHED)
.scope(FeedEntry.FeedScope.fromEventScope(getEventScope(), getRuleId()))
.data(MilestoneFeedData.builder()
.ruleId(getRuleId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@
import io.github.oasis.core.context.RuleExecutionContextSupport;
import io.github.oasis.core.context.RuntimeContextSupport;
import io.github.oasis.core.elements.*;
import io.github.oasis.elements.milestones.spec.MilestoneFeedData;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
* @author Isuru Weerarathna
Expand Down Expand Up @@ -63,4 +66,11 @@ public AbstractSink createSink(Class<? extends AbstractSink> sinkReq, RuntimeCon
}
return null;
}

@Override
public Map<String, Class<? extends Serializable>> getFeedDefinitions() {
return Map.of(
MilestoneIDs.FEED_TYPE_MILESTONE_REACHED, MilestoneFeedData.class
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import io.github.oasis.core.elements.Signal;
import io.github.oasis.core.elements.SignalCollector;
import io.github.oasis.core.external.Db;
import io.github.oasis.elements.milestones.spec.MilestoneFeedData;
import io.github.oasis.elements.milestones.spec.MilestoneSpecification;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
Expand Down Expand Up @@ -58,6 +59,19 @@ void getSupportedDefinitions() {

}

@Test
void shouldHaveCorrectId() {
Assertions.assertEquals(MilestonesModule.ID, module.getId());
}

@Test
void shouldDeclareCorrectFeedDefinitions() {
var def = module.getFeedDefinitions();
Assertions.assertEquals(1, def.size());
Assertions.assertTrue(def.containsKey(MilestoneIDs.FEED_TYPE_MILESTONE_REACHED));
Assertions.assertEquals(MilestoneFeedData.class, def.get(MilestoneIDs.FEED_TYPE_MILESTONE_REACHED));
}

@Test
void getParser() {
Assertions.assertTrue(module.getParser() instanceof MilestoneParser);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
*/
public final class PointIDs {

public static final String FEED_TYPE_POINTS_SCORED = "POINTS_SCORED";

public static String getGameUserPointsSummary(int gameId, long userId) {
return String.format("{g%d}:u%d:points", gameId, userId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public Optional<FeedEntry> generateFeedEntry() {
return Optional.of(FeedEntry.builder()
.byPlugin(PointsModule.ID)
.eventTimestamp(getOccurredTimestamp())
.type("POINT_SCORED")
.type(PointIDs.FEED_TYPE_POINTS_SCORED)
.scope(FeedEntry.FeedScope.fromEventScope(getEventScope(), getRuleId()))
.data(PointFeedData.builder()
.pointId(getPointId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,12 @@
import io.github.oasis.core.elements.Signal;
import io.github.oasis.core.exception.OasisException;
import io.github.oasis.core.external.Db;
import io.github.oasis.engine.element.points.spec.PointFeedData;
import io.github.oasis.engine.element.points.stats.PointStats;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
* @author Isuru Weerarathna
Expand Down Expand Up @@ -80,5 +83,12 @@ public AbstractSink createSink(Class<? extends AbstractSink> sinkReq, RuntimeCon
return null;
}

@Override
public Map<String, Class<? extends Serializable>> getFeedDefinitions() {
return Map.of(
PointIDs.FEED_TYPE_POINTS_SCORED, PointFeedData.class
);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,14 @@

import io.github.oasis.core.context.RuleExecutionContextSupport;
import io.github.oasis.core.context.RuntimeContextSupport;
import io.github.oasis.core.elements.AbstractDef;
import io.github.oasis.core.elements.AbstractProcessor;
import io.github.oasis.core.elements.AbstractRule;
import io.github.oasis.core.elements.AbstractSink;
import io.github.oasis.core.elements.Signal;
import io.github.oasis.core.elements.SignalCollector;
import io.github.oasis.core.exception.OasisException;
import io.github.oasis.core.external.Db;
import io.github.oasis.engine.element.points.spec.PointFeedData;
import io.github.oasis.engine.element.points.spec.PointSpecification;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -48,6 +49,16 @@ void beforeEach() {
pointsModule = new PointsModule();
}

@Test
void testInit() throws OasisException {
var spy = Mockito.spy(pointsModule);
var ctx = Mockito.mock(RuntimeContextSupport.class);
var db = Mockito.mock(Db.class);
Mockito.when(ctx.getDb()).thenReturn(db);

spy.init(ctx);
}

@Test
void getSupportedDefinitions() {
var supportedDefinitions = pointsModule.getParser().getAcceptingDefinitions().getDefinitions();
Expand All @@ -57,6 +68,19 @@ void getSupportedDefinitions() {
Assertions.assertEquals(supportedDefinitions.get(0).getAcceptedDefinitions().getSpecificationClz(), PointSpecification.class);
}

@Test
void shouldHaveCorrectId() {
Assertions.assertEquals(PointsModule.ID, pointsModule.getId());
}

@Test
void shouldDeclareCorrectFeedDefinitions() {
var def = pointsModule.getFeedDefinitions();
Assertions.assertEquals(1, def.size());
Assertions.assertTrue(def.containsKey(PointIDs.FEED_TYPE_POINTS_SCORED));
Assertions.assertEquals(PointFeedData.class, def.get(PointIDs.FEED_TYPE_POINTS_SCORED));
}

@Test
void getParser() {
Assertions.assertTrue(pointsModule.getParser() instanceof PointParser);
Expand Down
Loading

0 comments on commit 492e90b

Please sign in to comment.