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