@@ -6,14 +6,19 @@ import { BehaviorSubject } from 'rxjs';
66import { AuthenticationService , ICurrentUser } from '../../services/authentication/authentication.service' ;
77import { UserDto } from '../../services/user/user.dto' ;
88import { UserService } from '../../services/user/user.service' ;
9-
109import { HomeComponent } from './home.component' ;
10+ import { ComplianceAndEnforcementService } from '../../services/compliance-and-enforcement/compliance-and-enforcement.service' ;
11+ import { ToastService } from '../../services/toast/toast.service' ;
12+ import { Router } from '@angular/router' ;
1113
1214describe ( 'HomeComponent' , ( ) => {
1315 let component : HomeComponent ;
1416 let fixture : ComponentFixture < HomeComponent > ;
1517 let mockAuthService : DeepMocked < AuthenticationService > ;
1618 let mockUserService : DeepMocked < UserService > ;
19+ let mockComplianceAndEnforcementService : DeepMocked < ComplianceAndEnforcementService > ;
20+ let mockToastService : DeepMocked < ToastService > ;
21+ let mockRouter : DeepMocked < Router > ;
1722
1823 beforeEach ( async ( ) => {
1924 mockAuthService = createMock ( ) ;
@@ -27,6 +32,10 @@ describe('HomeComponent', () => {
2732 email : 'secret' ,
2833 } ) ;
2934
35+ mockComplianceAndEnforcementService = createMock ( ) ;
36+ mockToastService = createMock ( ) ;
37+ mockRouter = createMock ( ) ;
38+
3039 await TestBed . configureTestingModule ( {
3140 declarations : [ HomeComponent ] ,
3241 imports : [ HttpClientTestingModule , RouterTestingModule ] ,
@@ -39,6 +48,18 @@ describe('HomeComponent', () => {
3948 provide : UserService ,
4049 useValue : mockUserService ,
4150 } ,
51+ {
52+ provide : ComplianceAndEnforcementService ,
53+ useValue : mockComplianceAndEnforcementService ,
54+ } ,
55+ {
56+ provide : ToastService ,
57+ useValue : mockToastService ,
58+ } ,
59+ {
60+ provide : Router ,
61+ useValue : mockRouter ,
62+ } ,
4263 ] ,
4364 } ) . compileComponents ( ) ;
4465
@@ -57,4 +78,54 @@ describe('HomeComponent', () => {
5778 expect ( welcomeTitle ) . toBeTruthy ( ) ;
5879 expect ( welcomeTitle . textContent . trim ( ) ) . toEqual ( 'Welcome agent to ALCS' ) ;
5980 } ) ;
81+
82+ describe ( 'createComplianceAndEnforcementFile' , ( ) => {
83+ it ( 'shows success toast if service create fails' , async ( ) => {
84+ mockComplianceAndEnforcementService . create . mockRejectedValue ( new Error ( ) ) ;
85+
86+ await component . createComplianceAndEnforcementFile ( ) ;
87+
88+ expect ( mockToastService . showErrorToast ) . toHaveBeenCalledWith ( 'Failed to create C&E file draft' ) ;
89+ } ) ;
90+
91+ it ( 'shows error toast if service create fails' , async ( ) => {
92+ mockComplianceAndEnforcementService . create . mockResolvedValue ( {
93+ uuid : '12345' ,
94+ fileNumber : '12345' ,
95+ dateSubmitted : null ,
96+ dateOpened : null ,
97+ dateClosed : null ,
98+ initialSubmissionType : null ,
99+ allegedContraventionNarrative : '' ,
100+ allegedActivity : [ ] ,
101+ intakeNotes : '' ,
102+ } ) ;
103+
104+ await component . createComplianceAndEnforcementFile ( ) ;
105+
106+ expect ( mockToastService . showSuccessToast ) . toHaveBeenCalledWith ( 'C&E file draft created' ) ;
107+ } ) ;
108+
109+ it ( 'shows error toast if service create fails' , async ( ) => {
110+ const responseDto = {
111+ uuid : '12345' ,
112+ fileNumber : '12345' ,
113+ dateSubmitted : null ,
114+ dateOpened : null ,
115+ dateClosed : null ,
116+ initialSubmissionType : null ,
117+ allegedContraventionNarrative : '' ,
118+ allegedActivity : [ ] ,
119+ intakeNotes : '' ,
120+ } ;
121+
122+ mockComplianceAndEnforcementService . create . mockResolvedValue ( responseDto ) ;
123+
124+ await component . createComplianceAndEnforcementFile ( ) ;
125+
126+ expect ( mockRouter . navigateByUrl ) . toHaveBeenCalledWith (
127+ `/compliance-and-enforcement/${ responseDto . fileNumber } /draft` ,
128+ ) ;
129+ } ) ;
130+ } ) ;
60131} ) ;
0 commit comments