feat: add abstract component for expense income detail
This commit is contained in:
@@ -0,0 +1,37 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { AbstractExpenseIncomeDetailComponent } from './abstract-expense-income-detail.component';
|
||||||
|
|
||||||
|
describe('AbstractExpenseIncomeDetailComponent', () => {
|
||||||
|
const RED_VAR_TEXT = 'var(--mw-red)';
|
||||||
|
const GREEN_VAR_TEXT = 'var(--mw-green)'
|
||||||
|
let component: AbstractExpenseIncomeDetailComponent;
|
||||||
|
let fixture: ComponentFixture<AbstractExpenseIncomeDetailComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [AbstractExpenseIncomeDetailComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(AbstractExpenseIncomeDetailComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('amount text color ', () => {
|
||||||
|
it('should be green for income variant', () => {
|
||||||
|
fixture.componentRef.setInput('variant', 'income');
|
||||||
|
expect(component.amountProps().color).toBe(GREEN_VAR_TEXT);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be red for expense variant', () => {
|
||||||
|
fixture.componentRef.setInput('variant', 'expense');
|
||||||
|
expect(component.amountProps().color).toBe(RED_VAR_TEXT);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
import { Component, computed, input } from '@angular/core';
|
||||||
|
import { ExpenseIncomeVariant } from '../../types/ExpenseIncomeVariants';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'mw-abstract-expense-income-detail',
|
||||||
|
standalone: true,
|
||||||
|
imports: [],
|
||||||
|
template: '',
|
||||||
|
styles: ''
|
||||||
|
})
|
||||||
|
export class AbstractExpenseIncomeDetailComponent {
|
||||||
|
variant = input<ExpenseIncomeVariant>('income');
|
||||||
|
amount = input(0);
|
||||||
|
amountProps = computed(() => ({
|
||||||
|
amount: this.amount(),
|
||||||
|
color: this.variant() === 'income' ? 'var(--mw-green)' : 'var(--mw-red)'
|
||||||
|
}));
|
||||||
|
description = input('')
|
||||||
|
iconProps = input({
|
||||||
|
symbol:"",
|
||||||
|
backgroundColor:"var(--mw-white)",
|
||||||
|
color:"var(--mw-white)"
|
||||||
|
});
|
||||||
|
whom = input('');
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export type ExpenseIncomeVariant = 'expense'|'income';
|
||||||
Reference in New Issue
Block a user