File tree Expand file tree Collapse file tree 5 files changed +37
-1
lines changed Expand file tree Collapse file tree 5 files changed +37
-1
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,9 @@ export default function InboxScreen({ error }) {
8
8
const archiveTask = ( archive , id ) => {
9
9
dispatch ( { type : archive ? "ARCHIVE_TASK" : "INBOX_TASK" , id } ) ;
10
10
} ;
11
+ const deleteTask = ( id ) => {
12
+ dispatch ( { type : "DELETE_TASK" , id } ) ;
13
+ } ;
11
14
12
15
const togglePinTask = ( state , id ) => {
13
16
dispatch ( {
@@ -41,6 +44,7 @@ export default function InboxScreen({ error }) {
41
44
onArchiveTask = { archiveTask }
42
45
onTogglePinTask = { togglePinTask }
43
46
onEditTitle = { editTitle }
47
+ onDeleteTask = { deleteTask }
44
48
/>
45
49
</ div >
46
50
) ;
Original file line number Diff line number Diff line change @@ -91,3 +91,22 @@ export const EditTask = {
91
91
) ;
92
92
} ,
93
93
} ;
94
+
95
+ export const DeleteTask = {
96
+ parameters : {
97
+ ...Default . parameters ,
98
+ } ,
99
+ play : async ( { canvasElement } ) => {
100
+ const canvas = within ( canvasElement ) ;
101
+ const getTask = ( id ) => canvas . findByRole ( "listitem" , { name : id } ) ;
102
+
103
+ const itemToDelete = await getTask ( "task-1" ) ;
104
+ const deleteButton = await findByRole ( itemToDelete , "button" , {
105
+ name : "delete" ,
106
+ } ) ;
107
+
108
+ // Click the pin button
109
+ await userEvent . click ( deleteButton ) ;
110
+ await expect ( canvas . getAllByRole ( "listitem" ) . length ) . toBe ( 5 ) ;
111
+ } ,
112
+ } ;
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ export default function Task({
4
4
onArchiveTask,
5
5
onTogglePinTask,
6
6
onEditTitle,
7
+ onDeleteTask,
7
8
} ) {
8
9
return (
9
10
< div
@@ -41,7 +42,13 @@ export default function Task({
41
42
onChange = { ( e ) => onEditTitle ( e . target . value , id ) }
42
43
/>
43
44
</ label >
44
-
45
+ < button
46
+ aria-label = "delete"
47
+ className = "delete-button"
48
+ onClick = { ( ) => onDeleteTask ( id ) }
49
+ >
50
+ < span className = "icon-trash" />
51
+ </ button >
45
52
{ state !== "TASK_ARCHIVED" && (
46
53
< button
47
54
className = "pin-button"
@@ -73,4 +80,6 @@ Task.propTypes = {
73
80
onTogglePinTask : PropTypes . func . isRequired ,
74
81
/** Event to change the task title */
75
82
onEditTitle : PropTypes . func . isRequired ,
83
+ /** Event to delete the task */
84
+ onDeleteTask : PropTypes . func . isRequired ,
76
85
} ;
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ export default {
7
7
onArchiveTask : { action : "onArchiveTask" } ,
8
8
onTogglePinTask : { action : "onTogglePinTask" } ,
9
9
onEditTitle : { action : "onEditTitle" } ,
10
+ onDeleteTask : { action : "onDeleteTask" } ,
10
11
} ,
11
12
} ;
12
13
Original file line number Diff line number Diff line change @@ -6,11 +6,13 @@ export default function TaskList({
6
6
onTogglePinTask,
7
7
onArchiveTask,
8
8
onEditTitle,
9
+ onDeleteTask,
9
10
} ) {
10
11
const events = {
11
12
onTogglePinTask,
12
13
onArchiveTask,
13
14
onEditTitle,
15
+ onDeleteTask,
14
16
} ;
15
17
16
18
const LoadingRow = (
@@ -69,6 +71,7 @@ TaskList.propTypes = {
69
71
onTogglePinTask : PropTypes . func . isRequired ,
70
72
onArchiveTask : PropTypes . func . isRequired ,
71
73
onEditTitle : PropTypes . func . isRequired ,
74
+ onDeleteTask : PropTypes . func . isRequired ,
72
75
} ;
73
76
74
77
TaskList . defaultProps = {
You can’t perform that action at this time.
0 commit comments