-
Notifications
You must be signed in to change notification settings - Fork 201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
♻️ Enabled validation of nicknames, job titles, links, and images on the ProfileCard screen. #458
♻️ Enabled validation of nicknames, job titles, links, and images on the ProfileCard screen. #458
Conversation
Change image to non-null later
Detekt check failed. Please run |
…ile screen as well.
…to the ScreenRobot code.
nickname = "test", | ||
occupation = "test", | ||
link = "test", | ||
image = "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", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Could we create images by path or something similar? This base64 image makes code review difficult. I'm not sure if this would work, but could we create images like this?
@OptIn(ExperimentalEncodingApi::class)
fun drawCircleToBase64(size: IntSize = IntSize(100, 100)): String {
val imageBitmap = ImageBitmap(size.width, size.height)
val canvas = Canvas(imageBitmap)
canvas.drawCircle(
center = Offset(size.width / 2f, size.height / 2f),
radius = size.width.coerceAtMost(size.height) / 2f,
paint = Paint().apply {
color = Color.Blue
style = PaintingStyle.Fill
}
)
val buffer = IntArray(size.width * size.height)
imageBitmap.readPixels(buffer)
val byteArray = when (imageBitmap.config) {
ImageBitmapConfig.Argb8888 -> ByteArray(buffer.size) {
buffer[it].toByte()
}
else -> throw UnsupportedOperationException("Unsupported image config: ${imageBitmap.config}")
}
return Base64.encode(byteArray)
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@takahirom
If I use the code you suggested as is, the test does not proceed after 60 seconds time and seems to time out. 🤔
I will continue to look for a solution.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@takahirom
We have addressed this by adding a method to generate a Base64-encoded string of 400*400
white squares.
The reason we chose 400*400
is because the Twitter icon size is 400*400
.
…s of size 400*400 to be used only for testing.
run { | ||
setupProfileCardDataStore(ProfileCardInputStatus.AllNotEntered) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. DataStore could be considered a 'how' aspect of the test. Therefore, I suggest naming it like this: setupSavedProfileCard(ProfileCardInputStatus.AllNotEntered)
import kotlinx.coroutines.flow.Flow | ||
import kotlinx.coroutines.flow.flowOf | ||
|
||
public class FakeProfileCardDataStore : ProfileCardDataStore { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't need to change this in this PR, but my second thought on this is that we might be able to use DefaultProfileCardDataStore, and I think we can save the nickname or something similar when we call setupSavedProfileCard() as we can call suspend function. In this way, we can achieve high-fidelity tests.
The issue is that this implementation could potentially conflict with this PR. Do you have any thoughts on this? |
I see... 🤔 |
Well, we already have the PR, and we need to value the issue assignee to protect the opportunity for the contributor. Of course, we can't always protect it, though. So I think I might need to prioritize the other PR first. This might lead to a conflict. Sorry in advance. |
…feature/implement_validation_profile_edit_screen # Conflicts: # core/testing/src/main/java/io/github/droidkaigi/confsched/testing/robot/ProfileCardScreenRobot.kt # feature/profilecard/src/androidUnitTest/kotlin/io/github/droidkaigi/confsched/profilecard/ProfileCardScreenTest.kt # feature/profilecard/src/commonMain/kotlin/io/github/droidkaigi/confsched/profilecard/ProfileCardScreen.kt
@takahirom |
) : ProfileCardRepositoryRobot { | ||
override suspend fun saveProfileCard(profileCard: ProfileCard.Exists) { | ||
profileCardRepository.save(profileCard) | ||
class DefaultProfileCardDataStoreRobot @Inject constructor( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we need to change this in this PR, but since tests can see the DataStore name, it would be better to use a more abstract name. However, it's fine for now.
) | ||
|
||
return remember(nickname, occupation, link, image) { | ||
val nicknameError = if (nickname.isEmpty()) nicknameValidationErrorString else "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, I think this 'if the string is empty, show an error message' logic should be in the presenter.
As you might know, I recommend small PRs because they can be merged quickly |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your continuous efforts to improve our app!
Issue
Overview (Required)
Movie (Optional)
before.mp4