@@ -24,7 +24,8 @@ import { FETCH_START } from 'controllers/fetch/constants';
2424import { BaseAppState } from 'types/store' ;
2525import { showErrorNotification } from 'controllers/notification' ;
2626import { projectKeySelector } from 'controllers/project' ;
27- import { PROJECT_TEST_PLANS_PAGE } from 'controllers/pages' ;
27+ import { locationSelector , PROJECT_TEST_PLANS_PAGE } from 'controllers/pages' ;
28+ import { LocationInfo } from 'controllers/pages/typed-selectors' ;
2829
2930import {
3031 GET_TEST_PLANS ,
@@ -37,6 +38,7 @@ import {
3738 ACTIVE_TEST_PLAN_NAMESPACE ,
3839 TEST_PLAN_FOLDERS_NAMESPACE ,
3940 TEST_PLAN_TEST_CASES_NAMESPACE ,
41+ defaultTestPlanTestCasesQueryParams ,
4042} from './constants' ;
4143import { GetTestPlansParams , GetTestPlanParams } from './actionCreators' ;
4244import { Page } from '../../types/common' ;
@@ -87,39 +89,62 @@ function* getTestPlans(action: GetTestPlansAction): Generator {
8789}
8890
8991function * getTestPlan ( action : GetTestPlanAction ) : Generator {
92+ const projectKey = ( yield select ( projectKeySelector ) ) as string ;
93+ const location = ( yield select ( locationSelector ) ) as LocationInfo ;
94+ const { testPlanId, offset, limit } = action . payload ;
95+ const params = {
96+ limit : limit || defaultTestPlanTestCasesQueryParams . limit ,
97+ offset : offset || defaultTestPlanTestCasesQueryParams . offset ,
98+ } ;
99+
90100 try {
91- const projectKey = ( yield select ( projectKeySelector ) ) as string ;
92- const { testPlanId } = action . payload ;
101+ if (
102+ location . query ?. offset !== String ( offset ) ||
103+ location . query ?. limit !== String ( limit ) ||
104+ String ( location ?. prev ?. payload ?. testPlanId ) !== String ( location ?. payload ?. testPlanId )
105+ ) {
106+ yield put ( {
107+ type : FETCH_START ,
108+ payload : { projectKey } ,
109+ meta : { namespace : ACTIVE_TEST_PLAN_NAMESPACE } ,
110+ } ) ;
111+
112+ const data = ( yield call ( fetch , URLS . testPlanById ( projectKey , testPlanId ) ) ) as TestPlanDto ;
113+ const planFolders = ( yield call (
114+ fetch ,
115+ URLS . testFolders ( projectKey , { 'filter.eq.testPlanId' : testPlanId } ) ,
116+ ) ) as TestPlanFoldersDto ;
117+
118+ yield put ( fetchSuccessAction ( ACTIVE_TEST_PLAN_NAMESPACE , data ) ) ;
119+ yield put ( fetchSuccessAction ( TEST_PLAN_FOLDERS_NAMESPACE , planFolders ) ) ;
120+ }
121+ } catch ( error ) {
122+ const locationPayload = ( yield select (
123+ ( state : BaseAppState ) => state . location ?. payload ,
124+ ) ) as BaseAppState [ 'location' ] [ 'payload' ] ;
125+
126+ yield put ( fetchErrorAction ( ACTIVE_TEST_PLAN_NAMESPACE , error ) ) ;
127+ yield put ( {
128+ type : PROJECT_TEST_PLANS_PAGE ,
129+ payload : locationPayload ,
130+ } ) ;
131+ }
93132
133+ try {
94134 yield put ( {
95135 type : FETCH_START ,
96136 payload : { projectKey } ,
97- meta : { namespace : ACTIVE_TEST_PLAN_NAMESPACE } ,
137+ meta : { namespace : TEST_PLAN_TEST_CASES_NAMESPACE } ,
98138 } ) ;
99139
100- const data = ( yield call ( fetch , URLS . testPlanById ( projectKey , testPlanId ) ) ) as TestPlanDto ;
101- const planFolders = ( yield call (
102- fetch ,
103- URLS . testFolders ( projectKey , { 'filter.eq.testPlanId' : testPlanId } ) ,
104- ) ) as TestPlanFoldersDto ;
105140 const planTestCases = ( yield call (
106141 fetch ,
107- URLS . testPlanTestCases ( projectKey , testPlanId ) ,
142+ URLS . testPlanTestCases ( projectKey , testPlanId , params ) ,
108143 ) ) as TestPlanTestCaseDto ;
109144
110- yield put ( fetchSuccessAction ( ACTIVE_TEST_PLAN_NAMESPACE , data ) ) ;
111- yield put ( fetchSuccessAction ( TEST_PLAN_FOLDERS_NAMESPACE , planFolders ) ) ;
112145 yield put ( fetchSuccessAction ( TEST_PLAN_TEST_CASES_NAMESPACE , planTestCases ) ) ;
113146 } catch ( error ) {
114- const locationPayload = ( yield select (
115- ( state : BaseAppState ) => state . location ?. payload ,
116- ) ) as BaseAppState [ 'location' ] [ 'payload' ] ;
117-
118- yield put ( fetchErrorAction ( ACTIVE_TEST_PLAN_NAMESPACE , error ) ) ;
119- yield put ( {
120- type : PROJECT_TEST_PLANS_PAGE ,
121- payload : locationPayload ,
122- } ) ;
147+ yield put ( fetchErrorAction ( TEST_PLAN_TEST_CASES_NAMESPACE , error ) ) ;
123148 }
124149}
125150
0 commit comments