diff options
| author | Jesse Morgan <jesse@jesterpm.net> | 2015-05-12 07:26:22 -0700 | 
|---|---|---|
| committer | Jesse Morgan <jesse@jesterpm.net> | 2015-05-12 07:26:22 -0700 | 
| commit | b5ad47d5b77bfc023b9d3d466f9fd9ed2c29a452 (patch) | |
| tree | f7409dd2e286bc5aac64b52d69cc1a11fb608e2a /tst/com | |
| parent | d4e0c770e3a79e5f36ce974f3ed4dd4834639f4f (diff) | |
Adding tests for TrainingRecordResource.
Diffstat (limited to 'tst/com')
| -rw-r--r-- | tst/com/p4square/grow/backend/resources/ResourceTestBase.java | 101 | ||||
| -rw-r--r-- | tst/com/p4square/grow/backend/resources/TrainingRecordResourceTest.java | 142 | 
2 files changed, 243 insertions, 0 deletions
diff --git a/tst/com/p4square/grow/backend/resources/ResourceTestBase.java b/tst/com/p4square/grow/backend/resources/ResourceTestBase.java new file mode 100644 index 0000000..b4d7864 --- /dev/null +++ b/tst/com/p4square/grow/backend/resources/ResourceTestBase.java @@ -0,0 +1,101 @@ +/* + * Copyright 2015 Jesse Morgan + */ + +package com.p4square.grow.backend.resources; + +import java.io.IOException; + +import org.restlet.Application; + +import com.p4square.grow.model.Playlist; +import com.p4square.grow.model.Question; +import com.p4square.grow.model.TrainingRecord; +import com.p4square.grow.model.UserRecord; + +import com.p4square.grow.backend.feed.FeedDataProvider; +import com.p4square.grow.provider.CollectionProvider; +import com.p4square.grow.provider.MapCollectionProvider; +import com.p4square.grow.provider.MapProvider; +import com.p4square.grow.provider.Provider; +import com.p4square.grow.provider.ProvidesAssessments; +import com.p4square.grow.provider.ProvidesQuestions; +import com.p4square.grow.provider.ProvidesStrings; +import com.p4square.grow.provider.ProvidesTrainingRecords; +import com.p4square.grow.provider.ProvidesUserRecords; +import com.p4square.grow.provider.ProvidesVideos; + +import org.junit.Before; + +/** + *  + * @author Jesse Morgan <jesse@jesterpm.net> + */ +public class ResourceTestBase { + +    protected TestApplication mApplication; + +    @Before +    public void setup() throws Exception { +        mApplication = new TestApplication(); +        Application.setCurrent(mApplication); +    } + +    public static class TestApplication extends Application implements +        ProvidesQuestions, ProvidesTrainingRecords, ProvidesUserRecords, +        ProvidesStrings, ProvidesAssessments +    { + +        private final Provider<String, UserRecord> mUserRecordProvider; +        private final Provider<String, Question> mQuestionProvider; +        private final Provider<String, TrainingRecord> mTrainingRecordProvider; +        private final Provider<String, String> mStringProvider; +        private final CollectionProvider<String, String, String> mAnswerProvider; + +        private Playlist mDefaultPlaylist; + +        public TestApplication() { +            mStringProvider = new MapProvider<String, String>(); +            mUserRecordProvider = new MapProvider<String, UserRecord>(); +            mQuestionProvider = new MapProvider<String, Question>(); +            mTrainingRecordProvider = new MapProvider<String, TrainingRecord>(); +            mAnswerProvider = new MapCollectionProvider<String, String, String>(); + +            mDefaultPlaylist = new Playlist(); +        } + +        @Override +        public Provider<String, UserRecord> getUserRecordProvider() { +            return mUserRecordProvider; +        } + +        @Override +        public Provider<String, Question> getQuestionProvider() { +            return mQuestionProvider; +        } + +        @Override +        public Provider<String, TrainingRecord> getTrainingRecordProvider() { +            return mTrainingRecordProvider; +        } + +        public void setDefaultPlaylist(Playlist playlist) { +            mDefaultPlaylist = playlist; +        } + +        @Override +        public Playlist getDefaultPlaylist() throws IOException { +            return mDefaultPlaylist; +        } + +        @Override +        public Provider<String, String> getStringProvider() { +            return mStringProvider; +        } + +        @Override +        public CollectionProvider<String, String, String> getAnswerProvider() { +            return mAnswerProvider; +        } +    } +} diff --git a/tst/com/p4square/grow/backend/resources/TrainingRecordResourceTest.java b/tst/com/p4square/grow/backend/resources/TrainingRecordResourceTest.java new file mode 100644 index 0000000..8fec4c8 --- /dev/null +++ b/tst/com/p4square/grow/backend/resources/TrainingRecordResourceTest.java @@ -0,0 +1,142 @@ +/* + * Copyright 2015 Jesse Morgan + */ + +package com.p4square.grow.backend.resources; + +import java.util.Map; +import java.util.HashMap; + +import org.restlet.data.Method; +import org.restlet.Request; +import org.restlet.Response; +import org.restlet.ext.jackson.JacksonRepresentation; + +import com.p4square.grow.model.Playlist; +import com.p4square.grow.model.TrainingRecord; + +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Tests for the TrainingRecordResource + * + * @author Jesse Morgan <jesse@jesterpm.net> + */ +public class TrainingRecordResourceTest extends ResourceTestBase { + +    private final String USER_ID = "1234"; + +    private TrainingRecordResource mResource; +    private Request mRequest; +    private Response mResponse; + +    @Before +    public void setup() throws Exception { +        super.setup(); + +        mResource = new TrainingRecordResource(); + +        mRequest = new Request(Method.GET, "/"); +        Map<String, Object> attributes = new HashMap<>(); +        attributes.put("userId", USER_ID); +        mRequest.setAttributes(attributes); +        mResponse = new Response(mRequest); + +        Playlist playlist = new Playlist(); +        playlist.add("introduction", "intro-1"); +        playlist.add("seeker", "seeker-1"); +        playlist.add("believer", "believer-1"); +        playlist.add("believer", "believer-2"); +        playlist.add("disciple", "disciple-1"); +        playlist.add("teacher", "teacher-1"); +        playlist.add("leader", "leader-1"); +        mApplication.setDefaultPlaylist(playlist); +    } + +    private <T> T run(Class<T> type) throws Exception { +        mResource.init(mApplication.getContext(), mRequest, mResponse); +        mResource.handle(); +        mResource.release(); + +        return new JacksonRepresentation<T>(mResponse.getEntity(), type).getObject(); +    } + +    @Test +    public void testSkipAssessedChaptersLow() throws Exception { +        // Set the User's score. +        mApplication.getAnswerProvider().put(USER_ID, "summary", "{\"score\": 0.0}"); + +        // Run the test +        TrainingRecord record = run(TrainingRecord.class); + +        // Assert correct videos required. +        Playlist actualPlaylist = record.getPlaylist(); +        assertTrue(actualPlaylist.find("intro-1").getRequired()); // Always required. +        assertTrue(actualPlaylist.find("seeker-1").getRequired()); // Required by assessment. +        assertTrue(actualPlaylist.find("believer-1").getRequired()); +        assertTrue(actualPlaylist.find("believer-1").getRequired()); +        assertTrue(actualPlaylist.find("disciple-1").getRequired()); +        assertTrue(actualPlaylist.find("teacher-1").getRequired()); +        assertTrue(actualPlaylist.find("leader-1").getRequired()); +    } + +    @Test +    public void testSkipAssessedChaptersSeeker() throws Exception { +        // Set the User's score. +        mApplication.getAnswerProvider().put(USER_ID, "summary", "{\"score\": 1.0}"); + +        // Run the test +        TrainingRecord record = run(TrainingRecord.class); + +        // Assert correct videos required. +        Playlist actualPlaylist = record.getPlaylist(); +        assertTrue(actualPlaylist.find("intro-1").getRequired()); // Always required. +        assertTrue(actualPlaylist.find("seeker-1").getRequired()); // Required by assessment. +        assertTrue(actualPlaylist.find("believer-1").getRequired()); +        assertTrue(actualPlaylist.find("believer-1").getRequired()); +        assertTrue(actualPlaylist.find("disciple-1").getRequired()); +        assertTrue(actualPlaylist.find("teacher-1").getRequired()); +        assertTrue(actualPlaylist.find("leader-1").getRequired()); +    } + +    @Test +    public void testSkipAssessedChaptersBeliever() throws Exception { +        // Set the User's score. +        mApplication.getAnswerProvider().put(USER_ID, "summary", "{\"score\": 2.0}"); + +        // Run the test +        TrainingRecord record = run(TrainingRecord.class); + +        // Assert correct videos required. +        Playlist actualPlaylist = record.getPlaylist(); +        assertTrue(actualPlaylist.find("intro-1").getRequired()); // Always required. +        assertFalse(actualPlaylist.find("seeker-1").getRequired()); // Not required by assessment. +        assertTrue(actualPlaylist.find("believer-1").getRequired()); // Required by assessment. +        assertTrue(actualPlaylist.find("believer-1").getRequired()); +        assertTrue(actualPlaylist.find("disciple-1").getRequired()); +        assertTrue(actualPlaylist.find("teacher-1").getRequired()); +        assertTrue(actualPlaylist.find("leader-1").getRequired()); +    } + +    @Test +    public void testSkipAssessedChaptersHigh() throws Exception { +        // Set the User's score. +        mApplication.getAnswerProvider().put(USER_ID, "summary", "{\"score\": 4.0}"); + +        // Run the test +        TrainingRecord record = run(TrainingRecord.class); + +        // Assert correct videos required. +        Playlist actualPlaylist = record.getPlaylist(); +        assertTrue(actualPlaylist.find("intro-1").getRequired()); // Always required. +        assertFalse(actualPlaylist.find("seeker-1").getRequired()); // Not required by assessment. +        assertFalse(actualPlaylist.find("believer-1").getRequired()); +        assertFalse(actualPlaylist.find("believer-1").getRequired()); +        assertFalse(actualPlaylist.find("disciple-1").getRequired()); +        assertTrue(actualPlaylist.find("teacher-1").getRequired()); // Required by assessment. +        assertTrue(actualPlaylist.find("leader-1").getRequired()); +    } +}  | 
