From 9c553a213617831c9d64df210a9d88151731d2b5 Mon Sep 17 00:00:00 2001 From: paulamoller Date: Sat, 20 Oct 2018 19:34:22 +0200 Subject: [PATCH] #298: improve code --- .../manager_app/ChildListActivityTest.java | 24 +++++++++---------- .../database/repository/ChildRepository.java | 8 +++++++ .../view/child_list/ChildListActivity.java | 18 +++++++------- .../child_list/ChildRecyclerViewAdapter.java | 5 ++-- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/Friendly-plans/app/src/androidTest/java/pg/autyzm/friendly_plans/manager_app/ChildListActivityTest.java b/Friendly-plans/app/src/androidTest/java/pg/autyzm/friendly_plans/manager_app/ChildListActivityTest.java index 6bd20e78..01c67467 100644 --- a/Friendly-plans/app/src/androidTest/java/pg/autyzm/friendly_plans/manager_app/ChildListActivityTest.java +++ b/Friendly-plans/app/src/androidTest/java/pg/autyzm/friendly_plans/manager_app/ChildListActivityTest.java @@ -10,6 +10,7 @@ import static android.support.test.espresso.contrib.RecyclerViewActions.scrollToPosition; import static android.support.test.espresso.matcher.ViewMatchers.assertThat; import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant; +import static android.support.test.espresso.matcher.ViewMatchers.isEnabled; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.not; @@ -174,19 +175,6 @@ public void whenChildRemoveIconIsClickedButNoConfirmationGivenExpectChildIsOnThe + testedChildPosition)))); } - @Test - public void whenChildIsClickedAndSelectedExpectDBChildStatusChangeToActive() { - final int testedChildPosition = 5; - closeSoftKeyboard(); - onView(withId(R.id.rv_child_list)) - .perform(RecyclerViewActions.actionOnItemAtPosition(testedChildPosition, click())); - onView(withId(R.id.id_set_active_child)).perform(click()); - - assertThat(childRepository.getByIsActive().size(), is(1)); - assertThat(childRepository.getByIsActive().get(0).getSurname(), - is(EXPECTED_LAST_NAME + testedChildPosition)); - } - @Test public void whenOtherChildIsSelectedActiveExpectPreviousActiveChildNoLongerActiveInDB() { final int firstTestedChildPosition = 5; @@ -211,4 +199,14 @@ public void whenOtherChildIsSelectedActiveExpectPreviousActiveChildNoLongerActiv is(EXPECTED_LAST_NAME + secondTestedChildPosition)); } + @Test + public void whenChildIsSelectedExpectButtonIsEnabled() { + final int testedChildPosition = 5; + closeSoftKeyboard(); + + onView(withId(R.id.id_set_active_child)).check(matches(not(isEnabled()))); + onView(withId(R.id.rv_child_list)) + .perform(RecyclerViewActions.actionOnItemAtPosition(testedChildPosition, click())); + onView(withId(R.id.id_set_active_child)).check(matches(isEnabled())); + } } diff --git a/Friendly-plans/app/src/main/java/database/repository/ChildRepository.java b/Friendly-plans/app/src/main/java/database/repository/ChildRepository.java index cc9b7c9c..7e58199c 100644 --- a/Friendly-plans/app/src/main/java/database/repository/ChildRepository.java +++ b/Friendly-plans/app/src/main/java/database/repository/ChildRepository.java @@ -26,6 +26,14 @@ public void setIsActive(Child child, boolean isActive) { daoSession.getChildDao().update(child); } + public void setAllInactive (){ + List children = daoSession.getChildDao().loadAll(); + for (Child child : children){ + child.setIsActive(false); + } + daoSession.getChildDao().updateInTx(children); + }; + public List getBySurname(String surname) { return daoSession.getChildDao() .queryBuilder() diff --git a/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildListActivity.java b/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildListActivity.java index c07dd9c4..d8a111cf 100644 --- a/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildListActivity.java +++ b/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildListActivity.java @@ -13,7 +13,6 @@ import android.widget.Button; import database.entities.Child; import database.repository.ChildRepository; -import java.util.List; import javax.inject.Inject; import pg.autyzm.friendly_plans.App; import pg.autyzm.friendly_plans.R; @@ -34,6 +33,7 @@ public class ChildListActivity extends AppCompatActivity implements ChildListAct private ChildRecyclerViewAdapter childListAdapter; private Integer selectedChildPosition; + private Button setActiveChildButton; ChildRecyclerViewAdapter.ChildItemClickListener childItemClickListener = new ChildRecyclerViewAdapter.ChildItemClickListener() { @@ -68,6 +68,7 @@ public void onClick(DialogInterface dialog, int which) { @Override public void onChildItemClick(int position) { childListAdapter.setSelectedChildPosition(position); + setActiveChildButton.setEnabled(true); selectedChildPosition = position; } }; @@ -100,10 +101,13 @@ private void setUpViews() { recyclerView.setAdapter(childListAdapter); childListAdapter.setChildItems(childRepository.getAll()); - Button setActiveChildButton = (Button) findViewById(R.id.id_set_active_child); + setActiveChildButton = (Button) findViewById(R.id.id_set_active_child); + setActiveChildButton.setEnabled(childRepository.getByIsActive().size() > 0); setActiveChildButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - setActiveChild(); + if (selectedChildPosition != null) { + setActiveChild(); + } Intent intent = new Intent(ChildListActivity.this, MainActivity.class); startActivity(intent); } @@ -136,15 +140,9 @@ private void removeChild(long itemId) { } private void setActiveChild() { + childRepository.setAllInactive(); Child selectedChild = childListAdapter.getChild(selectedChildPosition); childRepository.setIsActive(selectedChild, true); - - List childList = childRepository.getAll(); - for (Child child : childList) { - if (child.getId() != selectedChild.getId()) { - childRepository.setIsActive(child, false); - } - } } @Nullable diff --git a/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildRecyclerViewAdapter.java b/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildRecyclerViewAdapter.java index 23afaaba..2434eafc 100644 --- a/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildRecyclerViewAdapter.java +++ b/Friendly-plans/app/src/main/java/pg/autyzm/friendly_plans/manager_app/view/child_list/ChildRecyclerViewAdapter.java @@ -36,6 +36,7 @@ public ChildRecyclerViewAdapter.ChildListViewHolder onCreateViewHolder(ViewGroup int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_child, parent, false); + return new ChildRecyclerViewAdapter.ChildListViewHolder(view, childItemClickListener, childItemList); } @@ -46,7 +47,7 @@ public void onBindViewHolder(ChildRecyclerViewAdapter.ChildListViewHolder holder if (childItemList != null && !childItemList.isEmpty()) { Child childItem = childItemList.get(position); holder.childName.setText(childItem.getName() + " " + childItem.getSurname()); - if (isPositonActive(position)) { + if (isPositionActive(position)) { holder.itemView.setBackgroundColor(Color.parseColor("#cccccc")); } else { holder.itemView.setBackgroundColor(Color.TRANSPARENT); @@ -54,7 +55,7 @@ public void onBindViewHolder(ChildRecyclerViewAdapter.ChildListViewHolder holder } } - public boolean isPositonActive(int position) { + public boolean isPositionActive(int position) { return (selectedChildPosition != null && selectedChildPosition == position) || ( selectedChildPosition == null && childItemList.get(position).getIsActive()); }