From 3ad3cf54ecee1162abab3a83d1a8782521093d24 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Fri, 5 Aug 2016 07:53:53 -0400 Subject: [PATCH] Add tests for HabitCardView --- .../habits/list/HabitCardView/render.png | Bin 0 -> 5150 bytes .../list/HabitCardView/render_changed.png | Bin 0 -> 5528 bytes .../list/HabitCardView/render_selected.png | Bin 0 -> 5238 bytes .../habits/list/views/HabitCardViewTest.java | 91 ++++++++++++++++++ .../habits/list/views/CheckmarkPanelView.java | 1 + .../habits/list/views/HabitCardView.java | 62 ++++++------ 6 files changed, 121 insertions(+), 33 deletions(-) create mode 100644 app/src/androidTest/assets/views/habits/list/HabitCardView/render.png create mode 100644 app/src/androidTest/assets/views/habits/list/HabitCardView/render_changed.png create mode 100644 app/src/androidTest/assets/views/habits/list/HabitCardView/render_selected.png create mode 100644 app/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/HabitCardViewTest.java diff --git a/app/src/androidTest/assets/views/habits/list/HabitCardView/render.png b/app/src/androidTest/assets/views/habits/list/HabitCardView/render.png new file mode 100644 index 0000000000000000000000000000000000000000..9144a507758918f7e7e6b61fec850d0e1e0500a0 GIT binary patch literal 5150 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 WTw$>a-S{W_YruMDy5)DBU;GEl2dpaq literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/views/habits/list/HabitCardView/render_selected.png b/app/src/androidTest/assets/views/habits/list/HabitCardView/render_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..97b15373d1b7648708dab2a281a4250a9c4797ad GIT binary patch literal 5238 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 ab#PMdQjDB{_CXnU9K_h_Mz!IecmD&JBlU6s literal 0 HcmV?d00001 diff --git a/app/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/HabitCardViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/HabitCardViewTest.java new file mode 100644 index 000000000..2ca386e18 --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/HabitCardViewTest.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits.activities.habits.list.views; + +import android.support.test.runner.*; +import android.test.suitebuilder.annotation.*; + +import org.isoron.uhabits.*; +import org.isoron.uhabits.models.*; +import org.isoron.uhabits.utils.*; +import org.junit.*; +import org.junit.runner.*; + +import static org.mockito.Mockito.mock; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class HabitCardViewTest extends BaseViewTest +{ + private HabitCardView view; + + public static final String PATH = "habits/list/HabitCardView/"; + + private HabitCardView.Controller controller; + + private Habit habit; + + @Override + public void setUp() + { + super.setUp(); + setTheme(R.style.AppBaseTheme); + + habit = fixtures.createLongHabit(); + CheckmarkList checkmarks = habit.getCheckmarks(); + + long today = DateUtils.getStartOfToday(); + long day = DateUtils.millisecondsInOneDay; + int[] values = checkmarks.getValues(today - 5 * day, today); + + controller = mock(HabitCardView.Controller.class); + + view = new HabitCardView(targetContext); + view.setHabit(habit); + view.setCheckmarkValues(values); + view.setSelected(false); + view.setScore(habit.getScores().getTodayValue()); + view.setController(controller); + measureView(view, dpToPixels(400), dpToPixels(50)); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } + + @Test + public void testRender_selected() throws Exception + { + view.setSelected(true); + measureView(view, dpToPixels(400), dpToPixels(50)); + assertRenders(view, PATH + "render_selected.png"); + } + + @Test + public void testChangeModel() throws Exception + { + habit.setName("Wake up early"); + habit.setColor(2); + habit.getObservable().notifyListeners(); + assertRenders(view, PATH + "render_changed.png"); + } +} diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.java index 6ab6fd3c9..de6173f62 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.java @@ -154,6 +154,7 @@ public class CheckmarkPanelView extends LinearLayout CheckmarkButtonView buttonView) { if (controller == null) return; + if(!(getContext() instanceof ListHabitsActivity)) return; ListHabitsActivity activity = (ListHabitsActivity) getContext(); CheckmarkButtonControllerFactory buttonControllerFactory = activity diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java index c2fa4f7e0..938ecd137 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.java @@ -43,6 +43,16 @@ public class HabitCardView extends FrameLayout implements ModelObservable.Listener { + private static final String EDIT_MODE_HABITS[] = { + "Wake up early", + "Wash dishes", + "Exercise", + "Meditate", + "Play guitar", + "Wash clothes", + "Get a haircut" + }; + @BindView(R.id.checkmarkPanel) CheckmarkPanelView checkmarkPanel; @@ -105,15 +115,6 @@ public class HabitCardView extends FrameLayout postInvalidate(); } - private void refresh() - { - int color = getActiveColor(habit); - label.setText(habit.getName()); - label.setTextColor(color); - scoreRing.setColor(color); - checkmarkPanel.setColor(color); - } - public void setScore(int score) { float percentage = (float) score / Score.MAX_VALUE; @@ -141,11 +142,6 @@ public class HabitCardView extends FrameLayout triggerRipple(x, y); } - protected void detachFromHabit() - { - if (habit != null) habit.getObservable().removeListener(this); - } - @Override protected void onDetachedFromWindow() { @@ -158,6 +154,11 @@ public class HabitCardView extends FrameLayout if (habit != null) habit.getObservable().addListener(this); } + private void detachFromHabit() + { + if (habit != null) habit.getObservable().removeListener(this); + } + private int getActiveColor(Habit habit) { int mediumContrastColor = res.getColor(R.attr.mediumContrastTextColor); @@ -189,27 +190,12 @@ public class HabitCardView extends FrameLayout @SuppressLint("SetTextI18n") private void initEditMode() { - String habits[] = { - "Wake up early", - "Wash dishes", - "Exercise", - "Meditate", - "Play guitar", - "Wash clothes", - "Get a haircut" - }; - Random rand = new Random(); int color = ColorUtils.getAndroidTestColor(rand.nextInt(10)); - int[] values = { - rand.nextInt(3), - rand.nextInt(3), - rand.nextInt(3), - rand.nextInt(3), - rand.nextInt(3) - }; - - label.setText(habits[rand.nextInt(habits.length)]); + int[] values = new int[5]; + for (int i = 0; i < 5; i++) values[i] = rand.nextInt(3); + + label.setText(EDIT_MODE_HABITS[rand.nextInt(EDIT_MODE_HABITS.length)]); label.setTextColor(color); scoreRing.setColor(color); scoreRing.setPercentage(rand.nextFloat()); @@ -217,6 +203,16 @@ public class HabitCardView extends FrameLayout checkmarkPanel.setCheckmarkValues(values); } + private void refresh() + { + int color = getActiveColor(habit); + label.setText(habit.getName()); + label.setTextColor(color); + scoreRing.setColor(color); + checkmarkPanel.setColor(color); + postInvalidate(); + } + private void triggerRipple(final float x, final float y) { final Drawable background = innerFrame.getBackground();