소스 검색

complete tests on services

Olivier Massot 2 년 전
부모
커밋
ca0839c81c
2개의 변경된 파일58개의 추가작업 그리고 1개의 파일을 삭제
  1. 0 1
      tests/units/services/data/entityManager.test.ts
  2. 58 0
      tests/units/services/validation/subdomainValidation.test.ts

+ 0 - 1
tests/units/services/data/entityManager.test.ts

@@ -4,7 +4,6 @@ import ApiResource from "~/models/ApiResource";
 import ApiModel from "~/models/ApiModel";
 import ApiRequestService from "~/services/data/apiRequestService";
 import {Element, Repository} from "pinia-orm";
-import models from "~/models/models";
 
 
 

+ 58 - 0
tests/units/services/validation/subdomainValidation.test.ts

@@ -0,0 +1,58 @@
+import {describe, expect, test} from "vitest";
+import SubdomainValidation from "~/services/validation/subdomainValidation";
+import ApiRequestService from "~/services/data/apiRequestService";
+import {AssociativeArray} from "~/types/data";
+
+let subdomainValidation: SubdomainValidation
+let apiRequestService: ApiRequestService
+
+beforeEach(() => {
+    // @ts-ignore
+    apiRequestService = vi.fn() as ApiRequestService
+
+    subdomainValidation = new SubdomainValidation(apiRequestService)
+})
+
+describe('isValid', () => {
+    test('simple cases', () => {
+        expect(SubdomainValidation.isValid("abcd")).toBeTruthy()
+        expect(SubdomainValidation.isValid("abc-def")).toBeTruthy()
+        expect(SubdomainValidation.isValid("abc-123")).toBeTruthy()
+        expect(SubdomainValidation.isValid("abcdefghijklmnopqrstuvwxyz0123456789")).toBeTruthy()
+
+
+        expect(SubdomainValidation.isValid("0123456789-0123456789-0123456789-0123456789-0123456789-0123456789-0123456789")).toBeFalsy() // Too long
+        expect(SubdomainValidation.isValid("a")).toBeFalsy()
+        expect(SubdomainValidation.isValid("abc_def")).toBeFalsy()
+        expect(SubdomainValidation.isValid("abc%")).toBeFalsy()
+        expect(SubdomainValidation.isValid("ab/")).toBeFalsy()
+        expect(SubdomainValidation.isValid("ab cd")).toBeFalsy()
+        expect(SubdomainValidation.isValid("-abcd")).toBeFalsy()
+        expect(SubdomainValidation.isValid("abcd-")).toBeFalsy()
+    })
+})
+
+describe('isAvailable', () => {
+    test('is available', async () => {
+        apiRequestService.get = vi.fn(async (url: string, query: AssociativeArray) => {
+            if (url !== '/api/subdomains/is_available' || !query.hasOwnProperty('subdomain') || query['subdomain'] !== 'abc' ) {
+                throw new Error("Invalid arguments")
+            }
+            // @ts-ignore
+            return {"available": true} as Response
+        })
+
+        expect(await subdomainValidation.isAvailable('abc')).toBeTruthy()
+    })
+    test('is not available', async () => {
+        apiRequestService.get = vi.fn(async (url: string, query: AssociativeArray) => {
+            if (url !== '/api/subdomains/is_available' || !query.hasOwnProperty('subdomain') || query['subdomain'] !== 'abc' ) {
+                throw new Error("Invalid arguments")
+            }
+            // @ts-ignore
+            return {"available": false} as Response
+        })
+
+        expect(await subdomainValidation.isAvailable('abc')).toBeFalsy()
+    })
+})