Skip to content

Instantly share code, notes, and snippets.

View elihart's full-sized avatar

Eli Hart elihart

  • Airbnb
  • San Francisco
View GitHub Profile
@elihart
elihart / InteractionReportOptionSelectedExample.json
Created November 20, 2019 19:06
InteractionReportOptionSelectedExample
"click": [
{
"onOptionsItemSelected": {
"itemId": "android:id\/home",
"title": "Location"
}
},
{
"supportFinishAfterTransition": {}
}
@elihart
elihart / InteractionReportFragmentChangeExample.json
Created November 20, 2019 19:07
InteractionReportFragmentChangeExample
"click": [
{
"Fragments changed": {
"Fragment name": "ManageRoomPhotosFragment",
"args": "ManageRoomPhotosArgs(id=100, name=\"Kitchen\")",
"state": "STOPPED"
}
}
]
@elihart
elihart / InteractionReportRequestExecutedExample.json
Created November 20, 2019 19:09
InteractionReportRequestExecutedExample
"click": [
{
"Request Executed": {
"GET": "https://api.airbnb.com/v2/trip_host_reviews?_format=for_funston&_limit=5&_offset=0&host_id=1&rating=5"
}
}
@elihart
elihart / InteractionReportMvRxStateChangeExample.json
Created November 20, 2019 19:09
InteractionReportMvRxStateChangeExample
"click": [
{
"MvRx State set": {
"CancellationPolicyState": {
"selectedPolicyKey": {
"newValue": "flexible",
"oldValue": "strict_14_with_grace_period"
}
}
}
@elihart
elihart / InteractionReportMvRxStateChangeWithMapExample.json
Created November 20, 2019 19:10
InteractionReportMvRxStateChangeWithMapExample
"State set": {
"RoomCountsState": {
"modifiedRoomCounts": {
"added keys": "[Bedroom=2]"
}
}
}
@elihart
elihart / MvRxViewModelExample.kt
Created November 20, 2019 20:21
MvRxViewModelExample
data class TextState(val text: String? = null) : MvRxState
class TextViewModel(state: TextState) : MvRxViewModel<TextState>(state) {
fun setText(text: String) {
setState {
copy(text = text)
}
}
}
@elihart
elihart / MvRxViewModelUnitTestSimpleExample.kt
Created November 20, 2019 20:22
MvRxViewModelUnitTestSimpleExample
@Test
fun setText() = TextViewModel::setText {
withParams("hello") expectState {
copy(text = "hello")
}
}
@elihart
elihart / MvRxViewModelTestClass.kt
Created November 20, 2019 20:23
MvRxViewModelTestClass
class TextViewModelTest : ViewModelTest<TextState, TextViewModel> {
override fun buildViewModel() = TextViewModel(TextState())
@Test
fun setText() = TextViewModel::setText {
withParams("hello") expectState {
copy(text = "hello")
}
}
@elihart
elihart / MvRxViewModelWithBoldOption.kt
Created November 20, 2019 20:26
MvRxViewModelWithBoldOption
data class TextOptions(val bold: Boolean = false)
data class TextState(val text: String? = null, val options: TextOptions = TextOptions()) : MvRxState
class TextViewModel(state: TextState) : MvRxViewModel<TextState>(state) {
fun setText(text: String) {
setState {
copy(text = text)
}
@elihart
elihart / MvRxViewModelBoldTest.kt
Created November 20, 2019 20:26
MvRxViewModelBoldTest
@Test
fun setBold() = TextViewModel::setBold {
initialState {
setFalse {  ::options {  ::bold } }
}
withParams(true) expectState {
setTrue {  ::options {  ::bold } }
}
}