Skip to content

Commit

Permalink
Clean up deprecated use
Browse files Browse the repository at this point in the history
  • Loading branch information
yuriykulikov committed Aug 19, 2021
1 parent d340530 commit d72bffa
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 138 deletions.
145 changes: 36 additions & 109 deletions app/src/androidTest/java/com/better/alarm/test/PopupTest.java
Expand Up @@ -2,83 +2,75 @@

import static android.provider.AlarmClock.ACTION_SET_ALARM;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.longClick;
import static androidx.test.espresso.matcher.ViewMatchers.isChecked;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.allOf;

import android.content.Context;
import android.content.Intent;
import android.provider.AlarmClock;

import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;
import androidx.test.core.app.ActivityScenario;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;

import com.better.alarm.R;
import com.better.alarm.alert.AlarmAlertFullScreen;
import com.better.alarm.configuration.ContainerKt;
import com.better.alarm.configuration.InjectKt;
import com.better.alarm.configuration.Store;
import com.better.alarm.interfaces.Intents;
import com.better.alarm.model.AlarmSetter;
import com.better.alarm.model.AlarmValue;
import com.better.alarm.model.AlarmsReceiver;
import com.better.alarm.model.CalendarType;
import com.better.alarm.presenter.AlarmsListActivity;
import com.better.alarm.presenter.HandleSetAlarm;
import com.better.alarm.presenter.TransparentActivity;
import com.better.alarm.util.Optional;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;

import java.util.Calendar;
import java.util.Locale;

/**
* Created by Yuriy on 12.07.2017.
*/
@RunWith(AndroidJUnit4.class)
public class PopupTest extends BaseTest {
public ActivityTestRule<AlarmAlertFullScreen> alertActivity = new ActivityTestRule<AlarmAlertFullScreen>(
AlarmAlertFullScreen.class, false, /* autostart*/ false);
public ActivityTestRule<AlarmsListActivity> listActivity = new ActivityTestRule<AlarmsListActivity>(
AlarmsListActivity.class, false, /* autostart*/ true);
public ActivityTestRule<TransparentActivity> transparentActivity = new ActivityTestRule<TransparentActivity>(
TransparentActivity.class, false, /* autostart*/ false);
private Context getContext() {
return InstrumentationRegistry.getInstrumentation().getTargetContext();
}

public ActivityScenarioRule<AlarmsListActivity> listActivity = new ActivityScenarioRule<>(AlarmsListActivity.class);

@Rule
public TestRule chain = RuleChain
.outerRule(new ForceLocaleRule(Locale.US))
.around(listActivity)
.around(alertActivity)
.around(transparentActivity);
.around(listActivity);

@Before
public void set24HourMode() {
ContainerKt.overrideIs24hoursFormatOverride(true);
}

public int createAlarmAndFire() {
Intent createAlarm = new Intent();
createAlarm.setClass(listActivity.getActivity(), HandleSetAlarm.class);
createAlarm.setAction(ACTION_SET_ALARM);
createAlarm.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
createAlarm.putExtra(AlarmClock.EXTRA_HOUR, 0);
createAlarm.putExtra(AlarmClock.EXTRA_MINUTES, 0);
createAlarm.putExtra(AlarmClock.EXTRA_MESSAGE, "From outside");

listActivity.getActivity().startActivity(createAlarm);
listActivity.getScenario().onActivity(activity -> {
Intent createAlarm = new Intent();
createAlarm.setClass(activity, HandleSetAlarm.class);
createAlarm.setAction(ACTION_SET_ALARM);
createAlarm.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
createAlarm.putExtra(AlarmClock.EXTRA_HOUR, 0);
createAlarm.putExtra(AlarmClock.EXTRA_MINUTES, 0);
createAlarm.putExtra(AlarmClock.EXTRA_MESSAGE, "From outside");
activity.startActivity(createAlarm);
});

sleep();

listActivity.getScenario().recreate();

assertThatList()
.filter(enabled())
.items()
Expand All @@ -88,11 +80,11 @@ public int createAlarmAndFire() {

//simulate alarm fired
Intent intent = new Intent(AlarmSetter.ACTION_FIRED);
intent.setClass(listActivity.getActivity(), AlarmsReceiver.class);
intent.setClass(getContext(), AlarmsReceiver.class);
intent.putExtra(AlarmSetter.EXTRA_ID, id);
intent.putExtra(AlarmSetter.EXTRA_TYPE, CalendarType.NORMAL.name());

listActivity.getActivity().sendBroadcast(intent);
getContext().sendBroadcast(intent);

sleep();
return id;
Expand All @@ -102,9 +94,9 @@ public int createAlarmAndFire() {
public void dismissViaAlarmAlert() {
int id = createAlarmAndFire();

Intent startIntent = new Intent();
Intent startIntent = new Intent(getContext(), AlarmAlertFullScreen.class);
startIntent.putExtra(Intents.EXTRA_ID, id);
alertActivity.launchActivity(startIntent);
ActivityScenario.launch(startIntent);

sleep();

Expand All @@ -113,91 +105,21 @@ public void dismissViaAlarmAlert() {
deleteAlarm();
}

private void afterLongClickSnoozeAlarmCheckAndDelete() {
assertTimerView("--:--");
onView(withText("2")).perform(click());
assertTimerView("--:-2");
onView(withText("3")).perform(click());
assertTimerView("--:23");
onView(withText("5")).perform(click());
assertTimerView("-2:35");
onView(withText("9")).perform(click());
assertTimerView("23:59");
sleep();

onView(withText("OK")).perform(click());

sleep();

Optional<Store.Next> next = InjectKt.globalInject(Store.class).getValue()
.next()
.blockingFirst();


assertThat(next.isPresent()).isTrue();

Calendar nextTime = Calendar.getInstance();
nextTime.setTimeInMillis(next.get().nextNonPrealarmTime());

assertThat((int) nextTime.get(Calendar.HOUR_OF_DAY)).isEqualTo(23);
assertThat((int) nextTime.get(Calendar.MINUTE)).isEqualTo(59);
assertThat(next.get().alarm().isEnabled()).isTrue();

//disable the snoozed alarm
onView(allOf(withId(R.id.list_row_on_off_switch), isChecked())).perform(click());

sleep();

assertThatList()
.filter(enabled())
.items()
.isEmpty();

deleteAlarm();
}

@Ignore("Flakey")
@Test
public void snoozeViaClick() {
int id = createAlarmAndFire();

Intent startIntent = new Intent();
startIntent.putExtra(Intents.EXTRA_ID, id);
alertActivity.launchActivity(startIntent);

sleep();
onView(withText("Snooze")).perform(click());

deleteAlarm();
}

@Ignore
@Test
public void snoozeViaNotificationPicker() {
int id = createAlarmAndFire();

Intent startIntent = new Intent();
startIntent.putExtra(Intents.EXTRA_ID, id);
transparentActivity.launchActivity(startIntent);

deleteAlarm();
}

@Test
public void letAlarmExpireAndDismissIt() throws InterruptedException {
int id = createAlarmAndFire();

Intent startIntent = new Intent();
Intent startIntent = new Intent(getContext(), AlarmAlertFullScreen.class);
startIntent.putExtra(Intents.EXTRA_ID, id);
alertActivity.launchActivity(startIntent);
ActivityScenario.launch(startIntent);

//simulate timed out
Intent intent = new Intent(AlarmSetter.ACTION_FIRED);
intent.setClass(alertActivity.getActivity(), AlarmsReceiver.class);
intent.setClass(getContext(), AlarmsReceiver.class);
intent.putExtra(AlarmSetter.EXTRA_ID, id);
intent.putExtra(AlarmSetter.EXTRA_TYPE, CalendarType.AUTOSILENCE.name());

listActivity.getActivity().sendBroadcast(intent);
getContext().sendBroadcast(intent);
sleep();

//Popup must be closed in order for this to work
Expand All @@ -208,7 +130,12 @@ public void letAlarmExpireAndDismissIt() throws InterruptedException {

private void deleteAlarm() {
sleep();
ActivityScenario.launch(AlarmsListActivity.class);
deleteAlarm(0);
assertThatList().items().hasSize(2);
}

protected static void sleep() {

}
}
12 changes: 6 additions & 6 deletions app/src/androidTest/java/com/better/alarm/test/SettingsTest.java
Expand Up @@ -10,6 +10,7 @@
import androidx.test.espresso.action.GeneralLocation;
import androidx.test.espresso.action.Press;
import androidx.test.espresso.action.Tap;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.rule.ActivityTestRule;

Expand All @@ -29,8 +30,7 @@
*/
@RunWith(AndroidJUnit4.class)
public class SettingsTest extends BaseTest {
public ActivityTestRule<SettingsActivity> settings = new ActivityTestRule<SettingsActivity>(
SettingsActivity.class, false, /* autostart*/ true);
public ActivityScenarioRule<SettingsActivity> settings = new ActivityScenarioRule<>(SettingsActivity.class);

@Rule
public TestRule chain = RuleChain.outerRule(new ForceLocaleRule(Locale.US)).around(settings);
Expand All @@ -39,19 +39,19 @@ public class SettingsTest extends BaseTest {
public void controlVolume() {
sleep();
onView(withId(R.id.seekbar_dialog_seekbar_master_volume))
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_LEFT, Press.FINGER));
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_LEFT, Press.FINGER,0, 0));

sleep();
onView(withId(R.id.seekbar_dialog_seekbar_master_volume))
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_RIGHT, Press.FINGER));
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_RIGHT, Press.FINGER,0, 0));

sleep();
onView(withId(R.id.seekbar_dialog_seekbar_prealarm_volume))
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_LEFT, Press.FINGER));
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_LEFT, Press.FINGER,0, 0));

sleep();
onView(withId(R.id.seekbar_dialog_seekbar_prealarm_volume))
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_RIGHT, Press.FINGER));
.perform(new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER_RIGHT, Press.FINGER,0, 0));
}

@Test
Expand Down
Expand Up @@ -215,7 +215,7 @@ class AlertService(
soundAlarmDisposable = CompositeDisposable(pluginDisposables)
}

private fun <U, D> Observable<U>.zipWithIndex(function: (U, Int) -> D): Observable<D> {
private fun <U : Any, D : Any> Observable<U>.zipWithIndex(function: (U, Int) -> D): Observable<D> {
return zipWith(generateSequence(0) { it + 1 }.asIterable()) { next, index -> function.invoke(next, index) }
}
}
20 changes: 8 additions & 12 deletions app/src/main/java/com/better/alarm/configuration/Inject.kt
@@ -1,33 +1,29 @@
package com.better.alarm.configuration

import com.better.alarm.logger.LoggerFactory
import org.koin.core.context.KoinContextHandler
import org.koin.core.context.GlobalContext
import org.koin.core.parameter.ParametersDefinition
import org.koin.core.qualifier.Qualifier

/**
* globalInject lazily given dependency for Android koincomponent
* globalInject lazily given dependency
* @param qualifier - bean qualifier / optional
* @param scope
* @param parameters - injection parameters
*/
inline fun <reified T : Any> globalInject(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
) = lazy { KoinContextHandler.get().get<T>(qualifier, parameters) }
) = lazy { GlobalContext.get().get<T>(qualifier, parameters) }

inline fun <reified T : Any> globalGet(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
) = KoinContextHandler.get().get<T>(qualifier, parameters)
) = GlobalContext.get().get<T>(qualifier, parameters)

fun globalLogger(tag: String) = lazy { KoinContextHandler.get().get<LoggerFactory>().createLogger(tag) }
fun globalLogger(tag: String) = lazy { GlobalContext.get().get<LoggerFactory>().createLogger(tag) }

/**
* globalInject lazily given dependency for Android koincomponent
* @param qualifier - bean qualifier / optional
* @param scope
* @param parameters - injection parameters
* globalInject lazily given dependency
* @param clazz
*/
@Deprecated("Java", ReplaceWith("globalInject()"))
fun <T : Any> globalInject(clazz: Class<T>) = lazy { KoinContextHandler.get().get<T>(clazz = clazz.kotlin) }
fun <T : Any> globalInject(clazz: Class<T>) = lazy { GlobalContext.get().get(clazz = clazz.kotlin) }
9 changes: 0 additions & 9 deletions app/src/main/java/com/better/alarm/logger/Logger.kt
Expand Up @@ -58,7 +58,6 @@ class Logger private constructor(
}

/** Java */
@Deprecated("Use debug", replaceWith = ReplaceWith("this.debug { message }"))
fun d(message: Any) {
logIfApplicable(LogLevel.DBG, message, null)
}
Expand All @@ -83,14 +82,6 @@ class Logger private constructor(
}

companion object {
private fun formatTag(): String {
val caller = Thread.currentThread().stackTrace[5]
val fileName = caller.fileName
val logClass = fileName.substring(0, fileName.length - 5)
val methodName = caller.methodName
return "[$logClass.$methodName]"
}

@JvmStatic
fun create(): Logger {
return Logger()
Expand Down
Expand Up @@ -86,7 +86,7 @@ class HandleSetAlarm : Activity() {
createNewAlarm(hours, minutes, label)
} else {
val edited = alarmsManager.getAlarm(sameAlarm.id)
if (edited != null) {
if (edited != null && !edited.data.isEnabled) {
logger.debug { "Editing existing alarm ${sameAlarm.id}" }
edited.apply { enable(true) }
} else {
Expand Down

0 comments on commit d72bffa

Please sign in to comment.