package com.thebluealliance.androidclient.listitems; import com.facebook.testing.screenshot.Screenshot; import com.facebook.testing.screenshot.ViewHelpers; import com.thebluealliance.androidclient.datafeed.APICache; import com.thebluealliance.androidclient.models.Award; import com.thebluealliance.androidclient.models.Team; import com.thebluealliance.androidclient.testing.ModelMaker; import com.thebluealliance.api.model.IAwardRecipient; import org.junit.Test; import org.junit.runner.RunWith; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.view.LayoutInflater; import android.view.View; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RunWith(AndroidJUnit4.class) public class CardedAwardListElementTest { private static final int WIDTH_DP = 400; private static final List<IAwardRecipient> SINGLE_TEAM = new ArrayList<>(); private static final List<IAwardRecipient> MULTI_TEAM = new ArrayList<>(); private static final List<IAwardRecipient> INDIVIDUAL = new ArrayList<>(); private static final List<IAwardRecipient> INDIVIDUAL_NO_TEAM = new ArrayList<>(); private static final List<IAwardRecipient> MULTI_INDIVIDUAL = new ArrayList<>(); private static final Map<String, Team> TEAM_MAP = new HashMap<>(); static { SINGLE_TEAM.add(buildWinnerDict(null, "frc1124")); MULTI_TEAM.add(buildWinnerDict(null, "frc1124")); MULTI_TEAM.add(buildWinnerDict(null, "frc254")); INDIVIDUAL.add(buildWinnerDict("Foo Bar", "frc1124")); INDIVIDUAL_NO_TEAM.add(buildWinnerDict("Foo Bar", null)); MULTI_INDIVIDUAL.add(buildWinnerDict("Foo Bar", "frc1124")); MULTI_INDIVIDUAL.add(buildWinnerDict("Foo Baz", "frc254")); Team team = ModelMaker.getModel(Team.class, "frc1124"); TEAM_MAP.put("frc1124", team); TEAM_MAP.put("frc254", team); } @Test public void testRenderSingleTeam() { View view = getView(null, "Test Award", "2016test", SINGLE_TEAM, TEAM_MAP, null); ViewHelpers.setupView(view) .setExactWidthDp(WIDTH_DP) .layout(); Screenshot.snap(view) .record(); } @Test public void testRenderSelectedTeam() { View view = getView(null, "Test Award", "2016test", SINGLE_TEAM, TEAM_MAP, "1124"); ViewHelpers.setupView(view) .setExactWidthDp(WIDTH_DP) .layout(); Screenshot.snap(view) .record(); } @Test public void testRenderMultiWinner() { View view = getView(null, "Test Award", "2016test", MULTI_TEAM, TEAM_MAP, null); ViewHelpers.setupView(view) .setExactWidthDp(WIDTH_DP) .layout(); Screenshot.snap(view) .record(); } @Test public void testRenderIndividual() { View view = getView(null, "Test Award", "2016test", INDIVIDUAL, TEAM_MAP, null); ViewHelpers.setupView(view) .setExactWidthDp(WIDTH_DP) .layout(); Screenshot.snap(view) .record(); } @Test public void testRenderIndividualNoTeam() { View view = getView(null, "Test Award", "2016test", INDIVIDUAL_NO_TEAM, TEAM_MAP, null); ViewHelpers.setupView(view) .setExactWidthDp(WIDTH_DP) .layout(); Screenshot.snap(view) .record(); } @Test public void testRenderMultiIndividual() { View view = getView(null, "Test Award", "2016test", MULTI_INDIVIDUAL, TEAM_MAP, null); ViewHelpers.setupView(view) .setExactWidthDp(WIDTH_DP) .layout(); Screenshot.snap(view) .record(); } private View getView( APICache datafeed, String name, String eventKey, List<IAwardRecipient> winners, Map<String, Team> teams, String selectedTeamKey) { CardedAwardListElement element = new CardedAwardListElement(datafeed, name, eventKey, winners, teams, selectedTeamKey); Context targetContext = InstrumentationRegistry.getTargetContext(); LayoutInflater inflater = LayoutInflater.from(targetContext); return element.getView(targetContext, inflater, null); } private static IAwardRecipient buildWinnerDict(String awardee, String teamKey) { Award.AwardRecipient winner = new Award.AwardRecipient(); if (awardee != null) winner.setAwardee(awardee); if (teamKey != null) winner.setTeamKey(teamKey); return winner; } }