diff --git a/app/src/androidTest/assets/views/habits/show/FrequencyCard/render.png b/app/src/androidTest/assets/views/habits/show/FrequencyCard/render.png new file mode 100644 index 000000000..1e050904c Binary files /dev/null and b/app/src/androidTest/assets/views/habits/show/FrequencyCard/render.png differ diff --git a/app/src/androidTest/assets/views/habits/show/HistoryCard/render.png b/app/src/androidTest/assets/views/habits/show/HistoryCard/render.png new file mode 100644 index 000000000..7cde393d2 Binary files /dev/null and b/app/src/androidTest/assets/views/habits/show/HistoryCard/render.png differ diff --git a/app/src/androidTest/assets/views/habits/show/OverviewCard/render.png b/app/src/androidTest/assets/views/habits/show/OverviewCard/render.png new file mode 100644 index 000000000..d3f6cb13c Binary files /dev/null and b/app/src/androidTest/assets/views/habits/show/OverviewCard/render.png differ diff --git a/app/src/androidTest/assets/views/habits/show/ScoreCard/render.png b/app/src/androidTest/assets/views/habits/show/ScoreCard/render.png new file mode 100644 index 000000000..e604ba958 Binary files /dev/null and b/app/src/androidTest/assets/views/habits/show/ScoreCard/render.png differ diff --git a/app/src/androidTest/assets/views/habits/show/StreakCard/render.png b/app/src/androidTest/assets/views/habits/show/StreakCard/render.png new file mode 100644 index 000000000..eca454e71 Binary files /dev/null and b/app/src/androidTest/assets/views/habits/show/StreakCard/render.png differ diff --git a/app/src/androidTest/assets/views/habits/show/SubtitleCard/render.png b/app/src/androidTest/assets/views/habits/show/SubtitleCard/render.png new file mode 100644 index 000000000..7e17a10b3 Binary files /dev/null and b/app/src/androidTest/assets/views/habits/show/SubtitleCard/render.png differ diff --git a/app/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java b/app/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java index e4e3715b6..6cd909f4d 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/BaseAndroidTest.java @@ -81,8 +81,8 @@ public class BaseAndroidTest targetContext = InstrumentationRegistry.getTargetContext(); testContext = InstrumentationRegistry.getContext(); - InterfaceUtils.setFixedTheme(R.style.AppBaseTheme); DateUtils.setFixedLocalTime(FIXED_LOCAL_TIME); + setTheme(R.style.AppBaseTheme); androidTestComponent = DaggerAndroidTestComponent.builder().build(); HabitsApplication.setComponent(androidTestComponent); @@ -106,6 +106,11 @@ public class BaseAndroidTest assertThat(installedProviders, hasItems(provider)); } + protected void awaitLatch() throws InterruptedException + { + assertTrue(latch.await(60, TimeUnit.SECONDS)); + } + protected void setTheme(@StyleRes int themeId) { InterfaceUtils.setFixedTheme(themeId); @@ -125,19 +130,20 @@ public class BaseAndroidTest } protected void waitForAsyncTasks() - throws InterruptedException, TimeoutException { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) + try { - Thread.sleep(1000); - return; - } - - BaseTask.waitForTasks(10000); - } + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) + { + Thread.sleep(1000); + return; + } - protected void awaitLatch() throws InterruptedException - { - assertTrue(latch.await(60, TimeUnit.SECONDS)); + BaseTask.waitForTasks(10000); + } + catch (Exception e) + { + fail(); + } } } diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/FrequencyCardTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/FrequencyCardTest.java new file mode 100644 index 000000000..25d7b2115 --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/FrequencyCardTest.java @@ -0,0 +1,65 @@ +/* + * 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.ui.habits.show.views; + +import android.support.test.runner.*; +import android.test.suitebuilder.annotation.*; +import android.view.*; + +import org.isoron.uhabits.*; +import org.isoron.uhabits.models.*; +import org.junit.*; +import org.junit.runner.*; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class FrequencyCardTest extends BaseViewTest +{ + public static final String PATH = "habits/show/FrequencyCard/"; + + private FrequencyCard view; + + private Habit habit; + + @Before + @Override + public void setUp() + { + super.setUp(); + habit = fixtures.createLongHabit(); + + view = (FrequencyCard) LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.frequencyCard); + + view.setHabit(habit); + view.refreshData(); + waitForAsyncTasks(); + + measureView(view, 800, 600); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } +} diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/HistoryCardTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/HistoryCardTest.java new file mode 100644 index 000000000..767306c53 --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/HistoryCardTest.java @@ -0,0 +1,65 @@ +/* + * 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.ui.habits.show.views; + +import android.support.test.runner.*; +import android.test.suitebuilder.annotation.*; +import android.view.*; + +import org.isoron.uhabits.*; +import org.isoron.uhabits.models.*; +import org.junit.*; +import org.junit.runner.*; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class HistoryCardTest extends BaseViewTest +{ + public static final String PATH = "habits/show/HistoryCard/"; + + private HistoryCard view; + + private Habit habit; + + @Before + @Override + public void setUp() + { + super.setUp(); + habit = fixtures.createLongHabit(); + + view = (HistoryCard) LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.historyCard); + + view.setHabit(habit); + view.refreshData(); + waitForAsyncTasks(); + + measureView(view, 800, 600); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } +} diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/OverviewCardTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/OverviewCardTest.java new file mode 100644 index 000000000..8dc3e344c --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/OverviewCardTest.java @@ -0,0 +1,65 @@ +/* + * 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.ui.habits.show.views; + +import android.support.test.runner.*; +import android.test.suitebuilder.annotation.*; +import android.view.*; + +import org.isoron.uhabits.*; +import org.isoron.uhabits.models.*; +import org.junit.*; +import org.junit.runner.*; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class OverviewCardTest extends BaseViewTest +{ + public static final String PATH = "habits/show/OverviewCard/"; + + private OverviewCard view; + + private Habit habit; + + @Before + @Override + public void setUp() + { + super.setUp(); + habit = fixtures.createLongHabit(); + + view = (OverviewCard) LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.overviewCard); + + view.setHabit(habit); + view.refreshData(); + waitForAsyncTasks(); + + measureView(view, 800, 300); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } +} diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/ScoreCardTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/ScoreCardTest.java new file mode 100644 index 000000000..8bbe942e1 --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/ScoreCardTest.java @@ -0,0 +1,65 @@ +/* + * 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.ui.habits.show.views; + +import android.support.test.runner.*; +import android.test.suitebuilder.annotation.*; +import android.view.*; + +import org.isoron.uhabits.*; +import org.isoron.uhabits.models.*; +import org.junit.*; +import org.junit.runner.*; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class ScoreCardTest extends BaseViewTest +{ + public static final String PATH = "habits/show/ScoreCard/"; + + private ScoreCard view; + + private Habit habit; + + @Before + @Override + public void setUp() + { + super.setUp(); + habit = fixtures.createLongHabit(); + + view = (ScoreCard) LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.scoreCard); + + view.setHabit(habit); + view.refreshData(); + waitForAsyncTasks(); + + measureView(view, 800, 600); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } +} diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/StreakCardTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/StreakCardTest.java new file mode 100644 index 000000000..684b039be --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/StreakCardTest.java @@ -0,0 +1,65 @@ +/* + * 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.ui.habits.show.views; + +import android.support.test.runner.*; +import android.test.suitebuilder.annotation.*; +import android.view.*; + +import org.isoron.uhabits.*; +import org.isoron.uhabits.models.*; +import org.junit.*; +import org.junit.runner.*; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class StreakCardTest extends BaseViewTest +{ + public static final String PATH = "habits/show/StreakCard/"; + + private StreakCard view; + + private Habit habit; + + @Before + @Override + public void setUp() + { + super.setUp(); + habit = fixtures.createLongHabit(); + + view = (StreakCard) LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.streakCard); + + view.setHabit(habit); + view.refreshData(); + waitForAsyncTasks(); + + measureView(view, 800, 600); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } +} diff --git a/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCardTest.java b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCardTest.java new file mode 100644 index 000000000..f9031ff3c --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCardTest.java @@ -0,0 +1,67 @@ +/* + * 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.ui.habits.show.views; + +import android.support.test.runner.*; +import android.test.suitebuilder.annotation.*; +import android.view.*; + +import org.isoron.uhabits.*; +import org.isoron.uhabits.models.*; +import org.isoron.uhabits.utils.*; +import org.junit.*; +import org.junit.runner.*; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class SubtitleCardTest extends BaseViewTest +{ + public static final String PATH = "habits/show/SubtitleCard/"; + + private SubtitleCard view; + + private Habit habit; + + @Before + @Override + public void setUp() + { + super.setUp(); + + habit = fixtures.createLongHabit(); + habit.setReminder(new Reminder(8, 30, DateUtils.ALL_WEEK_DAYS)); + + view = (SubtitleCard) LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.subtitleCard); + + view.setHabit(habit); + view.refreshData(); + + measureView(view, 800, 200); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } +} diff --git a/app/src/main/java/org/isoron/uhabits/models/Habit.java b/app/src/main/java/org/isoron/uhabits/models/Habit.java index 9c8713f3f..d5bf8f51c 100644 --- a/app/src/main/java/org/isoron/uhabits/models/Habit.java +++ b/app/src/main/java/org/isoron/uhabits/models/Habit.java @@ -156,22 +156,24 @@ public class Habit * this color into an android.graphics.Color, use ColorHelper.getColor(context, * habit.color). */ + @NonNull public Integer getColor() { return color; } - public void setColor(Integer color) + public void setColor(@NonNull Integer color) { this.color = color; } + @NonNull public String getDescription() { return description; } - public void setDescription(String description) + public void setDescription(@NonNull String description) { this.description = description; } diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitRootView.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitRootView.java index 265bbe21f..4713d014f 100644 --- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitRootView.java +++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/ShowHabitRootView.java @@ -51,7 +51,7 @@ public class ShowHabitRootView extends BaseRootView @BindView(R.id.overviewCard) OverviewCard overviewCard; - @BindView(R.id.strengthCard) + @BindView(R.id.scoreCard) ScoreCard scoreCard; @BindView(R.id.historyCard) diff --git a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCard.java b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCard.java index 0f075b163..0a9487f59 100644 --- a/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCard.java +++ b/app/src/main/java/org/isoron/uhabits/ui/habits/show/views/SubtitleCard.java @@ -42,12 +42,6 @@ public class SubtitleCard extends HabitCard @BindView(R.id.reminderLabel) TextView reminderLabel; - public SubtitleCard(Context context) - { - super(context); - init(); - } - public SubtitleCard(Context context, AttributeSet attrs) { super(context, attrs); @@ -76,8 +70,7 @@ public class SubtitleCard extends HabitCard private void init() { - Context context = getContext(); - inflate(context, R.layout.show_habit_subtitle, this); + inflate(getContext(), R.layout.show_habit_subtitle, this); ButterKnife.bind(this); if (isInEditMode()) initEditMode(); diff --git a/app/src/main/res/layout/show_habit_inner.xml b/app/src/main/res/layout/show_habit_inner.xml index 29446c624..a16548f53 100644 --- a/app/src/main/res/layout/show_habit_inner.xml +++ b/app/src/main/res/layout/show_habit_inner.xml @@ -46,7 +46,7 @@ android:paddingTop="12dp"/>