You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As an online customer
I want the app to automatically load my latest image feed
So I can always enjoy the newest images of my friends
Scenarios (Acceptance criteria)
Given the customer has connectivity
When the customer requests to see their feed
Then the app should display the latest feed from remote
And replace the cache with the new feed
Narrative #2
As an offline customer
I want the app to show the latest saved version of my image feed
So I can always enjoy images of my friends
Scenarios (Acceptance criteria)
Given the customer doesn't have connectivity
And there’s a cached version of the feed
And the cache is less than seven days old
When the customer requests to see the feed
Then the app should display the latest feed saved
Given the customer doesn't have connectivity
And there’s a cached version of the feed
And the cache is seven days old or more
When the customer requests to see the feed
Then the app should display an error message
Given the customer doesn't have connectivity
And the cache is empty
When the customer requests to see the feed
Then the app should display an error message
Use Cases
- Load Feed From Remote Use Case
Data:
URL
Primary course (happy path):
Execute "Load Image Feed" command with above data.
System downloads data from the URL.
System validates downloaded data.
System creates image feed from valid data.
System delivers image feed.
Invalid data – error course (sad path):
System delivers invalid data error.
No connectivity – error course (sad path):
System delivers connectivity error.
- Load Feed From Cache Use Case
Primary course (happy path):
Execute "Load Image Feed" command
System fetches feed data from cache
System validades cache is less than 7 days old
System creates feed images from cache data
System delivers feed images
Retrieve cache error (sad path):
System delivers error message.
Cache is old (sad path):
System delivers no feed images
Empty cache (sad path):
System delivers no feed images
- Validate Cache Use Case
Primary course (happy path):
Execute "Validate Cache" command
System fetches feed data from cache
System validades cache is less than 7 days old
Retrieve cache error (sad path):
System deletes cache
Cache is old (sad path):
System deletes cache
- Cache Feed Use Case
Data:
Feed images
Primary course (happy path):
Execute "Save Feed Cache" command with above data
System deletes old cache
System encodes feed images
System timestamps newly created cache
System persists new cache data
System delivers success message
Delete cache error (sad path):
System delivers error
Saving cache error (sad path):
System delivers error
- Load Feed Image Data From Remote Use Case
Data:
URL
Primary course (happy path):
Execute "Load Remote Feed Image Data" with above data
System loads the image from the remote server
System delivers the remotely loaded image data
Cancel course:
System delivers no image data nor error.
Connectivity error (sad path):
System delivers connectivity error
Invalid response (sad path):
System delivers invalid data error
- Load Feed Image Data From Local Use Case
Data:
URL
Primary course (happy path):
Execute "Load Local Feed Image Data" with above data
System fetches local cache for Feed Image
System delivers stored data for Feed Image
Cancel course:
System delivers no image data nor error.
Not found (sad path):
System delivers notFound error
Failure retrieving (sad path):
System delivers failed error
- Cache Feed Image Data
Data:
URL
Data
Primary course (happy path):
Execute "Cache Feed Image Data" with above data.
System searches for current Feed Image in store
System updates the data property with the new image
Failure saving new data (sad path):
System delivers failed error
Flowchart
Model Specs
Feed Image
Property
Type
id
UUID
description
String (optional)
location
String (optional)
url
URL
Payload contract
GET /feed
200 RESPONSE
{
"items": [
{
"id": "a UUID",
"description": "a description",
"location": "a location",
"image": "https://a-image.url",
},
{
"id": "another UUID",
"description": "another description",
"image": "https://another-image.url"
},
{
"id": "even another UUID",
"location": "even another location",
"image": "https://even-another-image.url"
},
{
"id": "yet another UUID",
"image": "https://yet-another-image.url"
}
...
]
}
Image Comment Feature Specs
Story: Customer requests to see image comments
Narrative
As an online customer
I want the app to load image commments
So I can see how people are engaging with images in my feed
Scenarios (Acceptance criteria)
Given the customer has connectivity
When the customer requests to see comments on an image
Then the app should display all comments for that image
Given the customer doesn't have connectivity
When the customer requests to see comments on an image
Then the app should display an error message