diff --git a/app/build.gradle b/app/build.gradle index 7f4a79a..40e8bf9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -68,11 +68,10 @@ dependencies { testImplementation "com.squareup.okhttp3:mockwebserver:4.2.1" androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test:rules:1.2.0' - - implementation "com.squareup.retrofit2:retrofit:2.6.2" implementation "com.squareup.retrofit2:converter-gson:2.6.2" diff --git a/app/src/androidTest/java/it/unisannio/ding/ids/wedroid/app/view/BoardsListsActivityTest.kt b/app/src/androidTest/java/it/unisannio/ding/ids/wedroid/app/view/BoardsListsActivityTest.kt new file mode 100644 index 0000000..6fe7e0a --- /dev/null +++ b/app/src/androidTest/java/it/unisannio/ding/ids/wedroid/app/view/BoardsListsActivityTest.kt @@ -0,0 +1,52 @@ +package it.unisannio.ding.ids.wedroid.app.view + +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.action.ViewActions.swipeDown +import androidx.test.espresso.action.ViewActions.swipeLeft +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.contrib.RecyclerViewActions +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import it.unisannio.ding.ids.wedroid.app.R +import it.unisannio.ding.ids.wedroid.app.view.adapter.BoardsListAdapter +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +@LargeTest +class BoardsListsActivityTest { + + @get:Rule + val activityRule = ActivityTestRule(BoardsListsActivity::class.java) + + fun swipeLeftToDelete() { + onView(withId(R.id.boardList)) + .perform( + RecyclerViewActions.actionOnItemAtPosition( + 0, swipeLeft() + ) + ) + } + + fun pullToRefresh() { + onView(withId(R.id.pullToRefresh)) + .perform(swipeDown()) + + } + + @Test + fun openNewBoardActivity() { + onView(withId(R.id.fab)) + .perform(click()) + + onView(withId(R.id.newBoardName)) + .check(matches(isDisplayed())) + } + +} + diff --git a/app/src/androidTest/java/it/unisannio/ding/ids/wedroid/app/view/NewBoardActivityTest.kt b/app/src/androidTest/java/it/unisannio/ding/ids/wedroid/app/view/NewBoardActivityTest.kt new file mode 100644 index 0000000..4f49761 --- /dev/null +++ b/app/src/androidTest/java/it/unisannio/ding/ids/wedroid/app/view/NewBoardActivityTest.kt @@ -0,0 +1,37 @@ +package it.unisannio.ding.ids.wedroid.app.view + +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.RootMatchers.withDecorView +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import it.unisannio.ding.ids.wedroid.app.R +import org.hamcrest.core.IsNot.not +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +@LargeTest +class NewBoardActivityTest { + + @get:Rule + val activityRule = ActivityTestRule(NewBoardActivity::class.java) + + @Test + fun showToastOnEmptyName() { + onView(withId(R.id.newBoardDone)) + .perform(click()) + + onView(withText(R.string.on_add_new_board_empty_name)) + .inRoot(withDecorView(not(activityRule.activity.window.decorView))) + .check(matches(isDisplayed())) + } + +} + diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/NewBoardActivity.java b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/NewBoardActivity.java index b0a48dd..85eb857 100644 --- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/NewBoardActivity.java +++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/NewBoardActivity.java @@ -9,6 +9,7 @@ import androidx.appcompat.widget.Toolbar; import android.view.View; import android.widget.EditText; import android.widget.Switch; +import android.widget.Toast; import it.unisannio.ding.ids.wedroid.app.R; @@ -28,6 +29,12 @@ public class NewBoardActivity extends AppCompatActivity { } public void onDone(View v) { + if (boardName.getText().toString().equals("")) { + Toast.makeText(this, R.string.on_add_new_board_empty_name, Toast.LENGTH_LONG) + .show(); + return; + } + Intent data = new Intent(); data.putExtra(BOARD_NAME, boardName.getText().toString()); data.putExtra(BOARD_PRIVATE, isPrivate.isChecked()); diff --git a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt index f4fb929..b9c995c 100644 --- a/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt +++ b/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/adapter/BoardsListAdapter.kt @@ -33,6 +33,9 @@ class BoardsListAdapter internal constructor( override fun onBindViewHolder(holder: BoardViewHolder, position: Int) { val board = boards[position] + holder.itemView.setOnClickListener { + // TODO start board activity + } holder.boardTitle.text = board.title } diff --git a/app/src/main/res/drawable/ic_add_black_24dp.xml b/app/src/main/res/drawable/ic_add_black_24dp.xml new file mode 100644 index 0000000..6b6146e --- /dev/null +++ b/app/src/main/res/drawable/ic_add_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_boards_lists.xml b/app/src/main/res/layout/activity_boards_lists.xml index 985531a..7282fa5 100644 --- a/app/src/main/res/layout/activity_boards_lists.xml +++ b/app/src/main/res/layout/activity_boards_lists.xml @@ -23,11 +23,11 @@ + android:id="@+id/fab" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|end" + android:layout_margin="@dimen/fab_margin" + app:srcCompat="@drawable/ic_add_black_24dp" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 215138e..1cb93e8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,4 +8,5 @@ Done There was a problem with the name of the new board It was not possible to add a new board + Name cannot be empty