Merge branch 'edit_fix' into 'master'
Fix edit button, add test Closes #276 See merge request pixeldroid/PixelDroid!329
This commit is contained in:
commit
b9d11aa153
@ -70,7 +70,9 @@ class EditPhotoTest {
|
||||
file.writeBitmap(image)
|
||||
uri = file.toUri()
|
||||
}
|
||||
val intent = Intent(context, PhotoEditActivity::class.java).putExtra("picture_uri", uri)
|
||||
val intent = Intent(context, PhotoEditActivity::class.java)
|
||||
.putExtra(PhotoEditActivity.PICTURE_URI, uri)
|
||||
.putExtra(PhotoEditActivity.PICTURE_POSITION, 0)
|
||||
|
||||
activityScenario = ActivityScenario.launch<PhotoEditActivity>(intent).onActivity{a -> activity = a}
|
||||
|
||||
|
@ -7,26 +7,21 @@ import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import android.view.View.VISIBLE
|
||||
import androidx.core.net.toUri
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.test.core.app.ActivityScenario
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.assertion.ViewAssertions.doesNotExist
|
||||
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.platform.app.InstrumentationRegistry
|
||||
import androidx.test.rule.GrantPermissionRule
|
||||
import com.h.pixeldroid.postCreation.PostCreationActivity
|
||||
import com.h.pixeldroid.postCreation.photoEdit.ThumbnailAdapter
|
||||
import com.h.pixeldroid.settings.AboutActivity
|
||||
import com.h.pixeldroid.testUtility.*
|
||||
import com.h.pixeldroid.utils.db.AppDatabase
|
||||
import org.hamcrest.CoreMatchers.not
|
||||
import org.junit.*
|
||||
import org.junit.rules.Timeout
|
||||
import org.junit.runner.RunWith
|
||||
@ -44,7 +39,8 @@ class PostCreationActivityTest {
|
||||
val globalTimeout: Timeout = Timeout.seconds(30)
|
||||
|
||||
@get:Rule
|
||||
val mRuntimePermissionRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
val mRuntimePermissionRule: GrantPermissionRule =
|
||||
GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
|
||||
private fun File.writeBitmap(bitmap: Bitmap) {
|
||||
outputStream().use { out ->
|
||||
@ -112,32 +108,65 @@ class PostCreationActivityTest {
|
||||
// should send on main activity
|
||||
onView(withId(R.id.retry_upload_button)).check(matches(not(isDisplayed())))
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Makes sure the [com.h.pixeldroid.postCreation.photoEdit.PhotoEditActivity] is launched
|
||||
* when the edit button is pressed
|
||||
*/
|
||||
@Test
|
||||
fun editImage() {
|
||||
Thread.sleep(1000)
|
||||
waitForView(R.id.postTextInputLayout)
|
||||
|
||||
onView(withId(R.id.image_grid)).perform(
|
||||
RecyclerViewActions.actionOnItemAtPosition<PostCreationActivity.PostCreationAdapter.ViewHolder>(
|
||||
0,
|
||||
CustomMatchers.clickChildViewWithId(R.id.galleryImage)
|
||||
)
|
||||
)
|
||||
Thread.sleep(1000)
|
||||
onView(withId(R.id.editPhotoButton)).perform(click())
|
||||
|
||||
onView(withId(R.id.recycler_view))
|
||||
.perform(
|
||||
RecyclerViewActions.actionOnItemAtPosition<ThumbnailAdapter.MyViewHolder>(
|
||||
2,
|
||||
CustomMatchers.clickChildViewWithId(R.id.thumbnail)
|
||||
)
|
||||
)
|
||||
Thread.sleep(1000)
|
||||
onView(withId(R.id.action_save)).perform(click())
|
||||
Thread.sleep(1000)
|
||||
onView(withId(R.id.carousel)).check(matches(isDisplayed()))
|
||||
waitForView(R.id.cropImageButton)
|
||||
}
|
||||
|
||||
/**
|
||||
* Switch from carousel to grid and back
|
||||
*/
|
||||
@Test
|
||||
fun carouselSwitch() {
|
||||
waitForView(R.id.postTextInputLayout)
|
||||
|
||||
onView(withId(R.id.switchToGridButton)).perform(click())
|
||||
|
||||
waitForView(R.id.galleryImage)
|
||||
|
||||
onView(withId(R.id.switchToCarouselButton)).perform(click())
|
||||
|
||||
waitForView(R.id.btn_previous)
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete images and check if it worked
|
||||
*/
|
||||
@Test
|
||||
fun deleteImages() {
|
||||
waitForView(R.id.postTextInputLayout)
|
||||
|
||||
onView(withId(R.id.removePhotoButton)).perform(click()).perform(click())
|
||||
|
||||
onView(withId(R.id.switchToGridButton)).perform(click())
|
||||
|
||||
onView(withId(R.id.galleryImage)).check(doesNotExist())
|
||||
onView(withId(R.id.addPhotoSquare)).check(matches(isDisplayed()))
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes sure the [com.h.pixeldroid.postCreation.camera.CameraActivity] is launched
|
||||
* when the add image button is pressed
|
||||
*/
|
||||
@Test
|
||||
fun addImage() {
|
||||
waitForView(R.id.postTextInputLayout)
|
||||
|
||||
onView(withId(R.id.addPhotoButton)).perform(click())
|
||||
|
||||
waitForView(R.id.camera_activity_fragment)
|
||||
}
|
||||
/*
|
||||
@Test
|
||||
fun cancelEdit() {
|
||||
onView(withId(R.id.image_grid)).perform(
|
||||
|
@ -16,6 +16,7 @@ import android.view.View.INVISIBLE
|
||||
import android.view.View.VISIBLE
|
||||
import android.widget.Toast
|
||||
import androidx.activity.result.ActivityResult
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.core.net.toFile
|
||||
import androidx.core.net.toUri
|
||||
@ -412,18 +413,18 @@ class PostCreationActivity : BaseActivity() {
|
||||
|
||||
}
|
||||
|
||||
private fun editResultContract(position: Int) = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
|
||||
private val editResultContract: ActivityResultLauncher<Intent> = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
|
||||
result: ActivityResult? ->
|
||||
if (result?.resultCode == Activity.RESULT_OK && result.data != null) {
|
||||
photoData[position].apply {
|
||||
imageUri = result.data!!.getStringExtra("result")!!.toUri()
|
||||
val position: Int = result.data!!.getIntExtra(PhotoEditActivity.PICTURE_POSITION, 0)
|
||||
photoData.getOrNull(position)?.apply {
|
||||
imageUri = result.data!!.getStringExtra(PhotoEditActivity.PICTURE_URI)!!.toUri()
|
||||
size = imageUri.getSize()
|
||||
}
|
||||
progress = null
|
||||
uploadId = null
|
||||
} ?: Toast.makeText(applicationContext, "Error while editing", Toast.LENGTH_SHORT).show()
|
||||
|
||||
binding.carousel.addData(photoData.map { CarouselItem(it.imageUri, it.imageDescription) })
|
||||
|
||||
photoData[position].progress = null
|
||||
photoData[position].uploadId = null
|
||||
} else if(result?.resultCode != Activity.RESULT_CANCELED){
|
||||
Toast.makeText(applicationContext, "Error while editing", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
@ -431,8 +432,8 @@ class PostCreationActivity : BaseActivity() {
|
||||
|
||||
private fun edit(position: Int) {
|
||||
val intent = Intent(this, PhotoEditActivity::class.java)
|
||||
.putExtra("picture_uri", photoData[position].imageUri)
|
||||
.putExtra("no upload", false)
|
||||
editResultContract(position).launch(intent)
|
||||
.putExtra(PhotoEditActivity.PICTURE_URI, photoData[position].imageUri)
|
||||
.putExtra(PhotoEditActivity.PICTURE_POSITION, position)
|
||||
editResultContract.launch(intent)
|
||||
}
|
||||
}
|
@ -65,6 +65,8 @@ class PhotoEditActivity : BaseActivity() {
|
||||
private lateinit var filterListFragment: FilterListFragment
|
||||
private lateinit var editImageFragment: EditImageFragment
|
||||
|
||||
private var picturePosition: Int? = null
|
||||
|
||||
private var brightnessFinal = BRIGHTNESS_START
|
||||
private var saturationFinal = SATURATION_START
|
||||
private var contrastFinal = CONTRAST_START
|
||||
@ -74,6 +76,9 @@ class PhotoEditActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
companion object{
|
||||
internal const val PICTURE_URI = "picture_uri"
|
||||
internal const val PICTURE_POSITION = "picture_position"
|
||||
|
||||
private var executor: ExecutorService = newSingleThreadExecutor()
|
||||
private var future: Future<*>? = null
|
||||
|
||||
@ -97,7 +102,8 @@ class PhotoEditActivity : BaseActivity() {
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
supportActionBar?.setHomeButtonEnabled(true)
|
||||
|
||||
initialUri = intent.getParcelableExtra("picture_uri")
|
||||
initialUri = intent.getParcelableExtra(PICTURE_URI)
|
||||
picturePosition = intent.getIntExtra(PICTURE_POSITION, 0)
|
||||
imageUri = initialUri
|
||||
|
||||
// Crop button on-click listener
|
||||
@ -342,7 +348,8 @@ class PhotoEditActivity : BaseActivity() {
|
||||
private fun sendBackImage(file: String) {
|
||||
val intent = Intent(this, PostCreationActivity::class.java)
|
||||
.apply {
|
||||
putExtra("result", file)
|
||||
putExtra(PICTURE_URI, file)
|
||||
putExtra(PICTURE_POSITION, picturePosition)
|
||||
addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
|
||||
}
|
||||
|
||||
|
@ -16,9 +16,6 @@ class DatabaseModule(private val context: Context) {
|
||||
return Room.databaseBuilder(
|
||||
context,
|
||||
AppDatabase::class.java, "pixeldroid"
|
||||
).allowMainThreadQueries()
|
||||
//TODO remove this for 1.0 release
|
||||
.fallbackToDestructiveMigration()
|
||||
.build()
|
||||
).allowMainThreadQueries().build()
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user