Consumer service
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / services / ei / consumer.service.spec.ts
diff --git a/webapp-frontend/src/app/services/ei/consumer.service.spec.ts b/webapp-frontend/src/app/services/ei/consumer.service.spec.ts
new file mode 100644 (file)
index 0000000..352e1e3
--- /dev/null
@@ -0,0 +1,108 @@
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2019 Nordix Foundation
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * 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.
+ * ========================LICENSE_END===================================
+ */
+import { ConsumerService } from "./consumer.service";
+import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
+import { TestBed } from '@angular/core/testing';
+import { JobInfo, ConsumerStatus, OperationalState } from '@app/interfaces/consumer.types';
+
+describe('ConsumerService', () => {
+    let basePath = '/data-consumer/v1';
+    let service: ConsumerService;
+    let httpTestingController: HttpTestingController;
+    let expectedEIJobs: string[];
+    let expectedConsumerStatus: ConsumerStatus;
+    let expectedJobInfo: JobInfo;
+
+    beforeEach(() => TestBed.configureTestingModule({
+        imports: [
+            HttpClientTestingModule
+        ],
+        providers: [
+            ConsumerService
+        ]
+    }));
+
+    beforeEach(() => {
+        service = TestBed.inject(ConsumerService);
+        httpTestingController = TestBed.inject(HttpTestingController);
+        expectedEIJobs = ['job1', 'job2'];
+        expectedConsumerStatus = {
+            info_job_status: OperationalState.ENABLED,
+            producers: [
+                'producer1'
+            ]
+        }
+        expectedJobInfo = {
+          job_definition: 'data',
+          info_type_id: 'type1',
+          job_result_uri: 'uri',
+          job_owner: 'owner1',
+          status_notification_uri: 'status_uri'
+        }
+    })
+
+    it('should be created', () => {
+        service = TestBed.inject(ConsumerService);
+        expect(service).toBeTruthy();
+    });
+
+    it('should get all the jobs ids', () => {
+        service.getJobIds().subscribe(
+            jobs => expect(jobs).toEqual(expectedEIJobs, 'should return expected Jobs'),
+            fail
+        );
+
+        const req = httpTestingController.expectOne(basePath + '/' + service.jobsPath);
+        expect(req.request.method).toEqual('GET');
+
+        req.flush(expectedEIJobs); //Return expected jobs ids
+
+        httpTestingController.verify();
+    });
+
+
+    it('should return consumer status', () => {
+        service.getConsumerStatus('job1').subscribe(
+            consumerStatus => expect(consumerStatus).toEqual(expectedConsumerStatus, 'should return expected status'),
+            fail
+        );
+
+        const req = httpTestingController.expectOne(basePath + '/' + service.jobsPath + '/job1/' + service.consumerStatusPath);
+        expect(req.request.method).toEqual('GET');
+
+        req.flush(expectedConsumerStatus); //Return expected status
+
+        httpTestingController.verify();
+    });
+
+    it('should return the job info', () => {
+        service.getJobInfo('job1').subscribe(
+            jobInfo => expect(jobInfo).toEqual(expectedJobInfo, 'should return expected job info'),
+            fail
+        );
+
+        const req = httpTestingController.expectOne(basePath + '/' + service.jobsPath + '/job1');
+        expect(req.request.method).toEqual('GET');
+
+        req.flush(expectedJobInfo); //Return expected job info
+
+        httpTestingController.verify();
+    });
+});
\ No newline at end of file