-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix sonarlint issues #102
fix sonarlint issues #102
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ | ||
// Use IntelliSense to learn about possible attributes. | ||
// Hover to view descriptions of existing attributes. | ||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||
"version": "0.2.0", | ||
"configurations": [ | ||
{ | ||
"type": "chrome", | ||
"request": "launch", | ||
"name": "Launch Chrome against localhost", | ||
"url": "http://localhost:4200", | ||
"webRoot": "${workspaceFolder}" | ||
} | ||
] | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,32 +1,163 @@ | ||||||||||||||||||||||||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
import { CustomerDetailComponent } from './customer-detail.component'; | ||||||||||||||||||||||||||
import { FirebaseTestingModule } from 'src/app/firebase-testing.module'; | ||||||||||||||||||||||||||
import { HarnessLoader } from '@angular/cdk/testing'; | ||||||||||||||||||||||||||
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; | ||||||||||||||||||||||||||
import { MatButtonHarness } from '@angular/material/button/testing'; | ||||||||||||||||||||||||||
import { MatDialog } from '@angular/material/dialog'; | ||||||||||||||||||||||||||
import { ActivatedRoute, convertToParamMap } from '@angular/router'; | ||||||||||||||||||||||||||
import { cold } from 'jasmine-marbles'; | ||||||||||||||||||||||||||
import { FirebaseTestingModule } from 'src/app/firebase-testing.module'; | ||||||||||||||||||||||||||
import { CustomerService } from 'src/app/services/customer.service'; | ||||||||||||||||||||||||||
import { ItemService } from 'src/app/services/item.service'; | ||||||||||||||||||||||||||
import { Customer } from 'src/models/customer.model'; | ||||||||||||||||||||||||||
import { Item } from 'src/models/item.model'; | ||||||||||||||||||||||||||
import { CustomerDetailComponent } from './customer-detail.component'; | ||||||||||||||||||||||||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; | ||||||||||||||||||||||||||
import { of } from 'rxjs'; | ||||||||||||||||||||||||||
import { MatSnackBar } from '@angular/material/snack-bar'; | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
describe('CustomerDetailComponent', () => { | ||||||||||||||||||||||||||
let component: CustomerDetailComponent; | ||||||||||||||||||||||||||
let fixture: ComponentFixture<CustomerDetailComponent>; | ||||||||||||||||||||||||||
let loader: HarnessLoader; | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
beforeEach(async () => { | ||||||||||||||||||||||||||
await TestBed.configureTestingModule({ | ||||||||||||||||||||||||||
imports: [FirebaseTestingModule, CustomerDetailComponent], | ||||||||||||||||||||||||||
imports: [ | ||||||||||||||||||||||||||
FirebaseTestingModule, | ||||||||||||||||||||||||||
CustomerDetailComponent, | ||||||||||||||||||||||||||
NoopAnimationsModule, | ||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||
providers: [ | ||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||
provide: ActivatedRoute, | ||||||||||||||||||||||||||
useValue: { snapshot: { paramMap: convertToParamMap({}) } }, | ||||||||||||||||||||||||||
useValue: { | ||||||||||||||||||||||||||
snapshot: { | ||||||||||||||||||||||||||
paramMap: convertToParamMap({ | ||||||||||||||||||||||||||
id: 'test-id', | ||||||||||||||||||||||||||
}), | ||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||
}).compileComponents(); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
const customerService = TestBed.inject(CustomerService); | ||||||||||||||||||||||||||
spyOn(customerService, 'load').and.returnValue( | ||||||||||||||||||||||||||
cold('c|', { | ||||||||||||||||||||||||||
c: { | ||||||||||||||||||||||||||
id: 'test-id', | ||||||||||||||||||||||||||
name: 'Test Customer', | ||||||||||||||||||||||||||
address: '123 Main Street', | ||||||||||||||||||||||||||
items: { | ||||||||||||||||||||||||||
test: true, | ||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||
} as Customer, | ||||||||||||||||||||||||||
}), | ||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
const itemService = TestBed.inject(ItemService); | ||||||||||||||||||||||||||
spyOn(itemService, 'list').and.returnValue( | ||||||||||||||||||||||||||
cold('i|', { | ||||||||||||||||||||||||||
i: [ | ||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||
id: 'test', | ||||||||||||||||||||||||||
name: 'Test Item', | ||||||||||||||||||||||||||
} as Item, | ||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||
}), | ||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
beforeEach(() => { | ||||||||||||||||||||||||||
fixture = TestBed.createComponent(CustomerDetailComponent); | ||||||||||||||||||||||||||
component = fixture.componentInstance; | ||||||||||||||||||||||||||
loader = TestbedHarnessEnvironment.loader(fixture); | ||||||||||||||||||||||||||
fixture.detectChanges(); | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
it('should create', () => { | ||||||||||||||||||||||||||
expect(component).toBeTruthy(); | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
it('associate item', async () => { | ||||||||||||||||||||||||||
const dialogSpy = ( | ||||||||||||||||||||||||||
spyOn(TestBed.inject(MatDialog), 'open') as jasmine.Spy | ||||||||||||||||||||||||||
).and.returnValue({ | ||||||||||||||||||||||||||
afterClosed: () => | ||||||||||||||||||||||||||
of({ | ||||||||||||||||||||||||||
id: 'test', | ||||||||||||||||||||||||||
name: 'Test Item', | ||||||||||||||||||||||||||
}), | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
const button = await loader.getHarness( | ||||||||||||||||||||||||||
MatButtonHarness.with({ text: /品目を追加する/ }), | ||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||
await button.click(); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
expect(dialogSpy).toHaveBeenCalled(); | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
it('edit customer', async () => { | ||||||||||||||||||||||||||
const dialogSpy = spyOn( | ||||||||||||||||||||||||||
TestBed.inject(MatDialog), | ||||||||||||||||||||||||||
'open', | ||||||||||||||||||||||||||
).and.callThrough(); | ||||||||||||||||||||||||||
const button = await loader.getHarness( | ||||||||||||||||||||||||||
MatButtonHarness.with({ text: /編集/ }), | ||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||
await button.click(); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
expect(dialogSpy).not.toHaveBeenCalled(); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
component.customer = { | ||||||||||||||||||||||||||
id: 'test-id', | ||||||||||||||||||||||||||
name: 'Test Customer', | ||||||||||||||||||||||||||
address: '123 Main Street', | ||||||||||||||||||||||||||
items: { | ||||||||||||||||||||||||||
test: true, | ||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
fixture.detectChanges(); | ||||||||||||||||||||||||||
await button.click(); | ||||||||||||||||||||||||||
expect(dialogSpy).toHaveBeenCalled(); | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
it('delete customer', async () => { | ||||||||||||||||||||||||||
const dialogSpy = ( | ||||||||||||||||||||||||||
spyOn(TestBed.inject(MatSnackBar), 'open') as jasmine.Spy | ||||||||||||||||||||||||||
).and.returnValue({ | ||||||||||||||||||||||||||
afterDismissed: () => of({ dismissedByAction: false }), | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
const button = await loader.getHarness( | ||||||||||||||||||||||||||
Comment on lines
+128
to
+133
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 変数名 'dialogSpy' が誤解を招く可能性があります
以下の差分を適用してください: - const dialogSpy = (
+ const snackBarSpy = (
spyOn(TestBed.inject(MatSnackBar), 'open') as jasmine.Spy
).and.returnValue({
afterDismissed: () => of({ dismissedByAction: false }),
}); 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||
MatButtonHarness.with({ text: /削除/ }), | ||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||
await button.click(); | ||||||||||||||||||||||||||
expect(dialogSpy).not.toHaveBeenCalled(); | ||||||||||||||||||||||||||
component.customer = { | ||||||||||||||||||||||||||
id: 'test-id', | ||||||||||||||||||||||||||
name: 'Test Customer', | ||||||||||||||||||||||||||
address: '123 Main Street', | ||||||||||||||||||||||||||
items: { | ||||||||||||||||||||||||||
test: true, | ||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||
fixture.detectChanges(); | ||||||||||||||||||||||||||
await button.click(); | ||||||||||||||||||||||||||
expect(dialogSpy).toHaveBeenCalled(); | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
it('delete item', () => { | ||||||||||||||||||||||||||
component.customer = { | ||||||||||||||||||||||||||
id: 'test-id', | ||||||||||||||||||||||||||
name: 'Test Customer', | ||||||||||||||||||||||||||
address: '123 Main Street', | ||||||||||||||||||||||||||
items: { | ||||||||||||||||||||||||||
test: true, | ||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||
component.deleteItem('test'); | ||||||||||||||||||||||||||
expect(component.customer?.items).toEqual({}); | ||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beforeEachフックが重複しています
同じ
describe
ブロック内に2つのbeforeEach
フックが存在します。これはテストの予期しない動作を引き起こす可能性があります。一つに統合することをお勧めします。以下の差分を適用して
beforeEach
フックを統合してください:📝 Committable suggestion
🧰 Tools
🪛 Biome