mirror of https://github.com/ghostfolio/ghostfolio
2 changed files with 109 additions and 0 deletions
@ -0,0 +1,83 @@ |
|||||
|
import { CreateBudgetDto, UpdateBudgetDto } from '@ghostfolio/common/dtos'; |
||||
|
|
||||
|
import { |
||||
|
provideHttpClient, |
||||
|
withInterceptorsFromDi |
||||
|
} from '@angular/common/http'; |
||||
|
import { |
||||
|
HttpTestingController, |
||||
|
provideHttpClientTesting |
||||
|
} from '@angular/common/http/testing'; |
||||
|
import { TestBed } from '@angular/core/testing'; |
||||
|
|
||||
|
import { DataService } from './data.service'; |
||||
|
|
||||
|
describe('DataService budget methods', () => { |
||||
|
let dataService: DataService; |
||||
|
let httpTestingController: HttpTestingController; |
||||
|
|
||||
|
beforeEach(() => { |
||||
|
TestBed.configureTestingModule({ |
||||
|
providers: [ |
||||
|
DataService, |
||||
|
provideHttpClient(withInterceptorsFromDi()), |
||||
|
provideHttpClientTesting() |
||||
|
] |
||||
|
}); |
||||
|
|
||||
|
dataService = TestBed.inject(DataService); |
||||
|
httpTestingController = TestBed.inject(HttpTestingController); |
||||
|
}); |
||||
|
|
||||
|
afterEach(() => { |
||||
|
httpTestingController.verify(); |
||||
|
}); |
||||
|
|
||||
|
it('fetches budgets for a month', () => { |
||||
|
dataService.fetchBudgets({ month: '2026-06' }).subscribe(); |
||||
|
|
||||
|
const request = httpTestingController.expectOne( |
||||
|
'/api/v1/budgets?month=2026-06' |
||||
|
); |
||||
|
|
||||
|
expect(request.request.method).toBe('GET'); |
||||
|
}); |
||||
|
|
||||
|
it('creates a budget', () => { |
||||
|
const budget: CreateBudgetDto = { |
||||
|
amount: 500, |
||||
|
categoryId: 'category-1', |
||||
|
month: '2026-06' |
||||
|
}; |
||||
|
|
||||
|
dataService.createBudget(budget).subscribe(); |
||||
|
|
||||
|
const request = httpTestingController.expectOne('/api/v1/budgets'); |
||||
|
|
||||
|
expect(request.request.method).toBe('POST'); |
||||
|
expect(request.request.body).toEqual(budget); |
||||
|
}); |
||||
|
|
||||
|
it('updates a budget', () => { |
||||
|
const budget: UpdateBudgetDto = { |
||||
|
amount: 650, |
||||
|
categoryId: 'category-1', |
||||
|
month: '2026-06' |
||||
|
}; |
||||
|
|
||||
|
dataService.updateBudget({ budget, id: 'budget-1' }).subscribe(); |
||||
|
|
||||
|
const request = httpTestingController.expectOne('/api/v1/budgets/budget-1'); |
||||
|
|
||||
|
expect(request.request.method).toBe('PUT'); |
||||
|
expect(request.request.body).toEqual(budget); |
||||
|
}); |
||||
|
|
||||
|
it('deletes a budget', () => { |
||||
|
dataService.deleteBudget('budget-1').subscribe(); |
||||
|
|
||||
|
const request = httpTestingController.expectOne('/api/v1/budgets/budget-1'); |
||||
|
|
||||
|
expect(request.request.method).toBe('DELETE'); |
||||
|
}); |
||||
|
}); |
||||
Loading…
Reference in new issue