Fixed couple more defects related to test screen 13/37513/2
authorsj108s <sj108s@us.att.com>
Wed, 21 Mar 2018 15:55:39 +0000 (21:25 +0530)
committersj108s <sj108s@us.att.com>
Thu, 22 Mar 2018 09:51:26 +0000 (15:21 +0530)
Fixed poll status button alignment and fixed minore defect in test
screen and updated test cases as per code change

Issue-ID: APPC-713
Change-Id: I530739fda78d6ca05fba4cbfaacef8ead3b7c23d
Signed-off-by: sj108s <sj108s@us.att.com>
src/app/test/test.component.html
src/app/test/test.component.spec.ts
src/app/test/test.component.ts

index 3519007..c2eb22e 100644 (file)
@@ -17,7 +17,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 
-ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ============LICENSE_END============================================
 -->
 <simple-notifications [options]="options"></simple-notifications>
@@ -26,7 +25,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
 
 <div class="card" style=" margin-bottom: 23px;">
     <div class="card-block" style="border-top: 5px solid #6ab344;border-top-right-radius: 7px;border-top-left-radius: 7px;">
-        <div class="row">
+        <div class="row" style="padding: 10px 15px">
             <div class="col-lg-3 col-sm-6 col-md-4 col-xs-12">
                 <label>Action:</label>
                 <input class="form-control" type="text" disabled value="{{action}}" />
@@ -43,7 +42,8 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
                 <input class="form-control" disabled type="text" [(ngModel)]="this.actionIdentifiers['vserver-id']" />
 
             </div>
-
+        </div>
+        <div class="row" style="padding: 10px 15px">
 
             <div class="col-12">
                 <div class="input-group">
@@ -98,9 +98,11 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
 
             <div class="col-md-12">
                 <div class="row justify-content-center" style="padding-top:0.3cm">
-                    <button style="margin-left:6%;" [disabled]="!enableTestButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="submit" (click)="testVnf()">Execute Test
+
+                    <button style="margin-left:6%;" [disabled]="!enableTestButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary"
+                        type="submit" (click)="testVnf()">Execute Test
                     </button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                
+
                 </div>
 
             </div>
@@ -110,7 +112,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
     </div>
 
     <div style="padding-left:60%;padding-bottom:0.5cm">
-      <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!enableDownload" (click)="download()">Download Raw Request/Response
+        <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!enableDownload" (click)="download()">Download Raw Request/Response
         </button>
         <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" type="button" [disabled]="!enableAbort" (click)="abortTest()">Abort Test
         </button>
@@ -121,22 +123,22 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
 <div class="card">
     <div class="card-block">
 
-        <div class="mdl-dialog__content" style="border:solid 1px grey;overflow:scroll;overflow-x:hidden;overflow-y:hidden;">
+        <div class="mdl-dialog__content" style="border:solid 1px grey;">
 
             <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" style="margin-left: 25%">
                 <input placeholder="Request Id" [(ngModel)]="requestId" class="mdl-textfield__input" id="requestId" required name="requestId">
-            </div>
-            <button type="submit" [disabled]="!enablePollButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" (click)=pollTestStatus()>Poll Test Status
+            </div><br/>
+            <button style="margin-left: 30%" type="submit" [disabled]="!enablePollButton" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" (click)=pollTestStatus()>Poll Test Status
             </button>
-
+            <br/><br/>
             <div class="col-md-12">
                 <span style="margin-left: 18.5%"><b>POLL TEST STATUS RESPONSE</b></span>
             </div>
 
             <div style="margin-left: 18.5%;height:100px;width:60%;border:solid 2px grey;overflow:scroll;overflow-x:hidden;overflow-y:hidden;">
 
-            <div *ngIf="showStatusResponseDiv">
-                <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div>
+                <div *ngIf="showStatusResponseDiv">
+                    <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div>
                     <table>
                         <thead></thead>
                         <tbody>
@@ -168,9 +170,9 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
                     </table>
                 </div>
                 <div *ngIf="!showStatusResponseDiv">
-                     <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div>
+                    <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div>
                     <span>{{statusResponse}}</span>
-                </div> 
+                </div>
 
                 <div *ngIf="errorResponse">
                     <p style="height:450px;" disabled class="text-center">
index 830effd..15dde6c 100644 (file)
@@ -17,7 +17,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 
-ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ============LICENSE_END============================================
 */
 
@@ -91,7 +90,7 @@ describe('TestComponent', () => {
         component.pollTestStatus();
 
         expect(service).toBeTruthy();
-        
+
     }));
 
     // Test download Method
@@ -178,9 +177,9 @@ describe('TestComponent', () => {
 
         it('should execute if file extension is XLS, XLSX', () => {
             let reader = new FileReader();
-            let file = new File(["testing"], "foo.XLS", {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})
+            let file = new File(["testing"], "foo.XLS", { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" })
             let fileExtension = 'XLS';
-            let event = { isTrusted: true, type: "change", target: {files: [file]} }
+            let event = { isTrusted: true, type: "change", target: { files: [file] } }
 
             component.upload(event);
 
@@ -190,10 +189,10 @@ describe('TestComponent', () => {
 
         it('should return an error if file extension is not XLS, XLSX', () => {
             let reader = new FileReader();
-            let file = new File(["testing"], "foo.doc", {type: ""})
+            let file = new File(["testing"], "foo.doc", { type: "" })
             let fileExtension = 'doc';
-            let event = { isTrusted: true, type: "change", target: {files: [file]} }
-            
+            let event = { isTrusted: true, type: "change", target: { files: [file] } }
+
             component.upload(event);
 
             expect(reader instanceof FileReader).toBeTruthy();
@@ -201,7 +200,7 @@ describe('TestComponent', () => {
         });
 
         it('Should return an error is files length is not equal to 1', () => {
-            
+
         });
     });
 
@@ -287,35 +286,35 @@ describe('TestComponent', () => {
         });
 
         it('should return response on success', inject([MockBackend], (mockBackend: MockBackend) => {
-           let mockData = 'testing';
-               let response = new ResponseOptions({
-                   body: JSON.stringify(mockData)
-               });
-               const baseResponse = new Response(response);
-               mockBackend.connections.subscribe(
-                   (c: MockConnection) => { 
-                       c.mockRespond(baseResponse)
-                   }
-               );
-
-               component.action  = 'ConfigModify';
-                       
-                       component.testVnf();
+            let mockData = 'testing';
+            let response = new ResponseOptions({
+                body: JSON.stringify(mockData)
+            });
+            const baseResponse = new Response(response);
+            mockBackend.connections.subscribe(
+                (c: MockConnection) => {
+                    c.mockRespond(baseResponse)
+                }
+            );
+
+            component.action = 'ConfigModify';
+
+            component.testVnf();
         }));
 
-        it('should return an error if fails', inject([HttpUtilService],( httpUtilService: HttpUtilService) => {
-                       let error = 'Error in connecting to APPC Server';
-                       let spy = spyOn(httpUtilService, 'post').and.returnValue(Observable.throw(error));
-                       component.action  = 'ConfigModify';
-                       
-                       component.testVnf();
+        it('should return an error if fails', inject([HttpUtilService], (httpUtilService: HttpUtilService) => {
+            let error = 'Error in connecting to APPC Server';
+            let spy = spyOn(httpUtilService, 'post').and.returnValue(Observable.throw(error));
+            component.action = 'ConfigModify';
 
-                       expect(spy).toHaveBeenCalled();
-                       expect(component.enableBrowse).toBeTruthy();
-                       expect(component.enableTestButton).toBeTruthy();
-                       expect(component.enablePollButton).toBeTruthy();
-                       expect(component.enableCounterDiv).toBeFalsy();
-               }));
+            component.testVnf();
+
+            expect(spy).toHaveBeenCalled();
+            expect(component.enableBrowse).toBeTruthy();
+            expect(component.enableTestButton).toBeTruthy();
+            expect(component.enablePollButton).toBeTruthy();
+            expect(component.enableCounterDiv).toBeFalsy();
+        }));
 
         it('test setTimeout', inject([NgProgress], (ngProgress: NgProgress) => {
             let spy = spyOn(ngProgress, 'done');
@@ -334,64 +333,80 @@ describe('TestComponent', () => {
 
         it('should call fake server', inject([MockBackend], (mockBackend: MockBackend) => {
             component.requestId = new Date().getTime().toString();
-                       component.actionIdentifiers['vnf-id'] = 123456;
-                       let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"FAILED\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ;
-               let response = new ResponseOptions({
-                   body: JSON.stringify(mockData)
-               });
-               const baseResponse = new Response(response);
-               mockBackend.connections.subscribe(
-                   (c: MockConnection) => c.mockRespond(baseResponse)
-               );
-                       
-                       component.pollTestStatus();
+            component.actionIdentifiers['vnf-id'] = 123456;
+            let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"FAILED\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } };
+            let response = new ResponseOptions({
+                body: JSON.stringify(mockData)
+            });
+            const baseResponse = new Response(response);
+            mockBackend.connections.subscribe(
+                (c: MockConnection) => c.mockRespond(baseResponse)
+            );
+
+            component.pollTestStatus();
         }));
 
         it('should call fake server if status is success', inject([MockBackend], (mockBackend: MockBackend) => {
-                       component.requestId = new Date().getTime().toString();
-                       component.actionIdentifiers['vnf-id'] = 123456;
-                       let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"SUCCESS\",\"status\":\"SUCCESS\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ;
-               let response = new ResponseOptions({
-                   body: JSON.stringify(mockData)
-               });
-               const baseResponse = new Response(response);
-               mockBackend.connections.subscribe(
-                   (c: MockConnection) => c.mockRespond(baseResponse)
-               );
-                       
-                       component.pollTestStatus();
-               }));
-
-               it('should execute else part if timeStamp && status && statusReason are false', inject([MockBackend], (mockBackend: MockBackend) => {
-                       component.requestId = new Date().getTime().toString();
-                       component.actionIdentifiers['vnf-id'] = 123456;
-                       let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ;
-               let response = new ResponseOptions({
-                   body: JSON.stringify(mockData)
-               });
-               const baseResponse = new Response(response);
-               mockBackend.connections.subscribe(
-                   (c: MockConnection) => c.mockRespond(baseResponse)
-               );
-                       
-                       component.pollTestStatus();
-               }));
-
-               it('should return an error if fails', inject([MockBackend], (mockBackend: MockBackend) => {
-                       let error = 'Error Connecting to APPC server';
-                       component.requestId = new Date().getTime().toString();
-                       component.actionIdentifiers['vnf-id'] = 123456;
-               let mockData = '';
-               let response = new ResponseOptions({
-                   body: JSON.stringify(mockData)
-               });
-               const baseResponse = new Response(response);
-               mockBackend.connections.subscribe(
-                   (c: MockConnection) => c.mockError(new Error(error))
-               );
-
-                       component.pollTestStatus();
-               }));
+            component.requestId = new Date().getTime().toString();
+            component.actionIdentifiers['vnf-id'] = 123456;
+            let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"SUCCESS\",\"status\":\"SUCCESS\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } };
+            let response = new ResponseOptions({
+                body: JSON.stringify(mockData)
+            });
+            const baseResponse = new Response(response);
+            mockBackend.connections.subscribe(
+                (c: MockConnection) => c.mockRespond(baseResponse)
+            );
+
+            component.pollTestStatus();
+        }));
+
+        it('should check error condition on polling where timestamp and test status are not available', inject([MockBackend], (mockBackend: MockBackend) => {
+            component.requestId = new Date().getTime().toString();
+            component.actionIdentifiers['vnf-id'] = 123456;
+            //let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } } ;
+            let mockData = { "output": { "common-header": { "timestamp": "2018-03-21T14:20:30.910Z", "api-ver": "2.00", "request-id": "1521642030910", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 }, "originator-id": "CDT", "sub-request-id": "1521642030910" }, "status": { "message": "INVALID INPUT PARAMETER - vserver-id", "code": 301 } } };
+            let response = new ResponseOptions({
+                body: JSON.stringify(mockData)
+            });
+            const baseResponse = new Response(response);
+            mockBackend.connections.subscribe(
+                (c: MockConnection) => c.mockRespond(baseResponse)
+            );
+
+            component.pollTestStatus();
+        }));
+
+        it('should execute else part if timeStamp && status && statusReason are false', inject([MockBackend], (mockBackend: MockBackend) => {
+            component.requestId = new Date().getTime().toString();
+            component.actionIdentifiers['vnf-id'] = 123456;
+            let mockData = { "output": { "common-header": { "originator-id": "CDT", "sub-request-id": "653018029941", "timestamp": "2018-02-12T07:27:21.448Z", "api-ver": "2.00", "request-id": "653018029941", "flags": { "force": "TRUE", "mode": "NORMAL", "ttl": 3600 } }, "payload": "{\"status-reason\":\"FAILED\",\"status\":\"\"}", "status": { "message": "SUCCESS - request has been processed successfully", "code": 400 } } };
+            let response = new ResponseOptions({
+                body: JSON.stringify(mockData)
+            });
+            const baseResponse = new Response(response);
+            mockBackend.connections.subscribe(
+                (c: MockConnection) => c.mockRespond(baseResponse)
+            );
+
+            component.pollTestStatus();
+        }));
+
+        it('should return an error if fails', inject([MockBackend], (mockBackend: MockBackend) => {
+            let error = 'Error Connecting to APPC server';
+            component.requestId = new Date().getTime().toString();
+            component.actionIdentifiers['vnf-id'] = 123456;
+            let mockData = '';
+            let response = new ResponseOptions({
+                body: JSON.stringify(mockData)
+            });
+            const baseResponse = new Response(response);
+            mockBackend.connections.subscribe(
+                (c: MockConnection) => c.mockError(new Error(error))
+            );
+
+            component.pollTestStatus();
+        }));
     });
 
     // Test getUrlEndPoint Method
index a7516ec..2fd8525 100644 (file)
@@ -17,7 +17,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 
-ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ============LICENSE_END============================================
 */
 
@@ -194,7 +193,7 @@ export class TestComponent implements OnInit {
                 this.showStatusResponseDiv = false;
                 this.errorResponse = '';
                 this.statusResponse = '';
-                this.enableDownload=true;
+                this.enableDownload = true;
                 let arrData = (<AOA>(XLSX.utils.sheet_to_json(ws, { blankrows: false })));
 
 
@@ -210,10 +209,10 @@ export class TestComponent implements OnInit {
                 // Refactor
                 this.payload = this.processUploadedFile(arrData);
                 this.uploadedFileResult();
-              };
+            };
 
             reader.readAsBinaryString(target.files[0]);
-            
+
 
         }
         else {
@@ -236,7 +235,7 @@ export class TestComponent implements OnInit {
         }
     }
 
-processUploadedFile(arrData) {
+    processUploadedFile(arrData) {
         let tempPayload = {};
         for (var i = 0; i < arrData.length; i++) {
             var element = arrData[i];
@@ -252,7 +251,7 @@ processUploadedFile(arrData) {
 
                 }
             }
-          
+
             if (element['List Name'] === 'payload') {
                 var listName1 = element['List Name_1'];
                 var listName2 = element['List Name_2'];
@@ -280,7 +279,7 @@ processUploadedFile(arrData) {
         return tempPayload;
     }
 
-      uploadedFileResult() {
+    uploadedFileResult() {
         if (this.action && this.actionIdentifiers['vnf-id']) {
             this.nService.success('Success', 'SpreadSheet uploaded successfully');
         }
@@ -459,23 +458,29 @@ processUploadedFile(arrData) {
                     }
                     else {
                         this.showStatusResponseDiv = false;
+                        if (this.subscribe && this.subscribe != undefined) {
+                            this.subscribe.unsubscribe();
+                            this.enablePollButton = true;
+                        }
+
                     }
 
-                    
                 },
                 error => {
                     this.statusResponse = null;
                     this.showStatusResponseDiv = false;
                     this.errorResponse = 'Error Connecting to APPC server';
                     this.enableCounterDiv = false;
-                    if (this.subscribe && this.subscribe != undefined) this.subscribe.unsubscribe();
+                    if (this.subscribe && this.subscribe != undefined) {
+                        this.subscribe.unsubscribe();
+                        this.enablePollButton = true;
+                    }
                 });
-
         }
         else {
             this.nService.error("Error", "Please enter vnf Id & request Id");
         }
-        
+
     }
 
     getUrlEndPoint(action) {