Эх сурвалжийг харах

feat: visit & comp click with ngModel value change

RyaneMax 9 сар өмнө
parent
commit
c36173ce5a

+ 33 - 3
cypress/e2e/spec.cy.ts

@@ -1,6 +1,36 @@
-describe('My First Test', () => {
-  it('Visits the initial project page', () => {
+describe('未来全栈教学案例库 项目启动', () => {
+  it('访问项目首页', () => {
     cy.visit('/')
-    cy.contains('app is running')
+    cy.contains('案例')
+  })
+
+  it('首页跳转编辑案例页,完成编辑测试', () => {
+    cy.visit('/')
+
+    // 查找包含特定文本的 ion-button 并点击 
+    // 注意,contains参数2 可以用正则表达式匹配部分内容,如果用字符串,需要写全部内容,否则匹配不到
+    cy.contains('ion-button', /输入编辑/, { timeout: 10000 }).click();
+    cy.contains('星星打分')
+    
+    // 覆盖测试:测试所有选项点击效果
+    for (let index = 1; index < 10; index++) {
+      cy.get('app-edit-ratio-star .list ion-icon').eq(index).click({force:true});
+      cy.wait(100)
+      cy.get('app-edit-ratio-star .list ion-icon').eq(index).should('have.attr', 'name').and('equal', "star");
+
+    }
+    for (let index = 8; index > -1; index--) {
+      cy.get('app-edit-ratio-star .list ion-icon').eq(index).click({force:true});
+      cy.wait(100)
+      cy.get('app-edit-ratio-star .list ion-icon').eq(index).should('have.attr', 'name').and('equal', "star");
+    }
+    // 置空测试,点击星星后,再次点击,数值设为0
+    cy.get('app-edit-ratio-star .list ion-icon').eq(4).click({force:true});
+    cy.get('app-edit-ratio-star .list ion-icon').eq(4).click({force:true});
+    cy.get('ion-input[name=score]').should('exist');
+    // 验证输入的值 应该为 0
+    // 注意ion-input本身不具有value,而是需要找到内部shadow dom的真实input,进行校验
+    cy.get('ion-input[name=score]').find('input').should('have.value', '0');
+   
   })
 })

+ 2 - 2
src/modules/study/case-angular/pages/case-edit/case-edit.page.html

@@ -13,13 +13,13 @@
 
   <ion-card>
     <ion-item>
-      星星打分:<app-edit-ratio-star [value]="score" (onValueChange)="score = $event"></app-edit-ratio-star>
+      星星打分:<app-edit-ratio-star color="red" [value]="score" (onValueChange)="score = $event"></app-edit-ratio-star>
     </ion-item>
     <ion-item>
       图标打分:<app-edit-ratio-star color="blue" fillIcon="home" emptyIcon="home-outline" [value]="score" (onValueChange)="score = $event"></app-edit-ratio-star>
     </ion-item>
     <ion-item>
-      <ion-input type="number" [(ngModel)]="score"></ion-input>
+      <ion-input name="score" type="number" [(ngModel)]="score"></ion-input>
     </ion-item>
   </ion-card>