@@ -3,13 +3,24 @@ import ModuleMenu from './ModuleMenu';
3
3
4
4
import styles from './PlannerModule.scss' ;
5
5
6
- function makeModuleMenu ( ) {
6
+ function makeModuleMenu ( isInTimetable : boolean ) {
7
7
const removeModule = jest . fn ( ) ;
8
8
const editCustomData = jest . fn ( ) ;
9
+ const addModuleToTimetable = jest . fn ( ) ;
10
+ const viewSemesterTimetable = jest . fn ( ) ;
9
11
return {
10
12
removeModule,
11
13
editCustomData,
12
- wrapper : mount ( < ModuleMenu removeModule = { removeModule } editCustomData = { editCustomData } /> ) ,
14
+ addModuleToTimetable,
15
+ wrapper : mount (
16
+ < ModuleMenu
17
+ isInTimetable = { isInTimetable }
18
+ removeModule = { removeModule }
19
+ editCustomData = { editCustomData }
20
+ addModuleToTimetable = { addModuleToTimetable }
21
+ viewSemesterTimetable = { viewSemesterTimetable }
22
+ /> ,
23
+ ) ,
13
24
} ;
14
25
}
15
26
@@ -26,16 +37,32 @@ function isMenuRight(wrapper: ReactWrapper) {
26
37
}
27
38
28
39
test ( 'should show button only on render' , ( ) => {
29
- const { wrapper } = makeModuleMenu ( ) ;
40
+ const { wrapper } = makeModuleMenu ( false ) ;
30
41
expect ( findButton ( wrapper ) . exists ( ) ) . toBe ( true ) ;
31
42
} ) ;
32
43
33
44
test ( 'should show dropdown when button is clicked' , ( ) => {
34
- const { wrapper } = makeModuleMenu ( ) ;
45
+ const { wrapper } = makeModuleMenu ( false ) ;
35
46
wrapper . find ( 'button' ) . at ( 0 ) . simulate ( 'click' ) ;
36
47
expect ( isExpanded ( wrapper ) . exists ( ) ) . toBe ( true ) ;
37
48
} ) ;
38
49
50
+ test ( 'should show add to timetable if module is not included' , ( ) => {
51
+ const { wrapper } = makeModuleMenu ( false ) ;
52
+ wrapper . find ( 'button' ) . at ( 0 ) . simulate ( 'click' ) ;
53
+ expect ( wrapper . text ( ) ) . toContain ( 'Edit Unit and Title' ) ;
54
+ expect ( wrapper . text ( ) ) . toContain ( 'Add to Timetable' ) ;
55
+ expect ( wrapper . text ( ) ) . toContain ( 'Remove' ) ;
56
+ } ) ;
57
+
58
+ test ( 'should show view in timetable if module is included' , ( ) => {
59
+ const { wrapper } = makeModuleMenu ( true ) ;
60
+ wrapper . find ( 'button' ) . at ( 0 ) . simulate ( 'click' ) ;
61
+ expect ( wrapper . text ( ) ) . toContain ( 'Edit Unit and Title' ) ;
62
+ expect ( wrapper . text ( ) ) . toContain ( 'View in Timetable' ) ;
63
+ expect ( wrapper . text ( ) ) . toContain ( 'Remove' ) ;
64
+ } ) ;
65
+
39
66
test ( 'should fix its overflow given a small window innerwidth' , ( ) => {
40
67
Object . defineProperty ( window , 'innerHeight' , {
41
68
writable : true ,
@@ -44,7 +71,7 @@ test('should fix its overflow given a small window innerwidth', () => {
44
71
} ) ;
45
72
window . dispatchEvent ( new Event ( 'resize' ) ) ;
46
73
47
- const { wrapper } = makeModuleMenu ( ) ;
74
+ const { wrapper } = makeModuleMenu ( false ) ;
48
75
wrapper . find ( 'button' ) . at ( 0 ) . simulate ( 'click' ) ;
49
76
expect ( isMenuRight ( wrapper ) . exists ( ) ) . toBe ( true ) ;
50
77
} ) ;
0 commit comments