Mobius onboarding Guide
Mobius
Mobius is our recommended architecture for building Android applications. We also feel that it is much easier to learn Test-Driven Development by starting out to build apps using Mobius.
Day 1: Introduction to Mobius & TDD (4:50 hours)
Theory: Introduction to Mobius (1 hour)
Eliminating the moving parts using functional programming
Pure functions
State transition diagrams
Model
&Event
Pairing Activity: The counter app state transition diagram (1 hour)
The
update()
functionIntroducing the
UpdateSpec
classTest driving the counter
update()
functionWiring the
update()
function to the UI
Theory: Test-Driven Development (30 minutes)
Principles of TDD
The red, green, and refactor cycle
TDD as a design practice
Recap (20 minutes)
Key takeaways
Reading materials for the next day
Day 2: Mobius Effects & Effect Handlers (5:05 hours)
Reflection of Day 1 and discussion around reading materials (30 minutes)
Pairing Activity: Login Screen
update()
Exercise (2 hours)Introducing effects & effect handlers
Login example state transition diagram
Test driving the login update() function
Identifying the primitive obsession code smell (Watch this)
The “What to test?” problem
Relationship between the number of execution paths and tests
Test driving the
Username
andPassword
classesModeling async state transitions
Completing the
update()
function
Pairing Activity: Materializing effects using effect handlers (1:30 hours)
State verification vs. behavior verification
Introduction to Mockito
Low confidence behavior verification tests
Writing the first effect handler
Using the RxJava
SubtypeEffectHandler
Action
,Consumer
, andObservableTransformer
Errors of first-class citizens
Using
Scheduler
in tests
Pairing Activity: Introduction to Views and View Renderers (45 minutes)
Using mockito to verify view rendering logic
Recap (20 minutes)
Key takeaways
Day 3: Mobius, the final bits (5:35 hours)
Reflection of Day 2 (30 minutes)
Pairing Activity: Creating the shell (45 minutes)
Wiring all the Mobius components
Saving and restoring model state
The
@Parcelize
annotationCaveats of saving data using Android’s
Parcelable
interface
Pairing Activity: Subtle bugs introduced by async operations (45 minutes)
Handling normal flow of execution using the
init()
functionHandling edge cases using the
init()
functionUsing the
InitSpec
for testing normal flow and edge cases
Recap (20 minutes)
Day 4, 5, and (possibly 6): Building the NASA APOD Apps (14:50 - 22:50 hours)
Reflection of Day 3 (20 minutes)
Individual Activity: NASA APOD Application (8 - 16 hours)
Step 1: Drawing the state transition diagram
Step 2: Writing the
init()
theupdate()
testsStep 3: Writing Effect Handler tests
Step 4: View and View Renderer Tests
Step 5: Wire up the imperative shell
Code review and addressal (1:30 hours)
Recap (1 hour)
Points of Confusion
Effect
are more closer to intention for side-effect than performing a side-effectRepresenting decision making in state diagram
Last updated