59 lines
1.8 KiB
Dart
59 lines
1.8 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:ot_movil/models/work_order.dart';
|
|
|
|
void main() {
|
|
test('calcula la evidencia total de una orden', () {
|
|
final now = DateTime(2026, 7, 24);
|
|
final order = WorkOrder(
|
|
id: 'ot-1',
|
|
title: 'Mantención preventiva',
|
|
createdAt: now,
|
|
updatedAt: now,
|
|
status: WorkOrderStatus.completed,
|
|
laborCost: 25000,
|
|
details: const WorkOrderDetails(
|
|
client: 'María Soto',
|
|
phone: '+56 9 1234 5678',
|
|
address: 'Los Aromos 120',
|
|
),
|
|
tasks: const [
|
|
WorkTask(
|
|
id: 'task-1',
|
|
title: 'Lubricar equipo',
|
|
observation: 'Equipo lubricado.',
|
|
position: 0,
|
|
parts: [
|
|
TaskPart(id: 'part-1', name: 'Válvula', price: 7500),
|
|
TaskPart(id: 'part-2', name: 'Flexible', price: 3500),
|
|
],
|
|
photos: [
|
|
TaskPhoto(
|
|
id: 'before-1',
|
|
path: '/before.jpg',
|
|
kind: PhotoKind.before,
|
|
),
|
|
TaskPhoto(id: 'after-1', path: '/after.jpg', kind: PhotoKind.after),
|
|
],
|
|
),
|
|
],
|
|
);
|
|
|
|
expect(order.isCompleted, isTrue);
|
|
expect(order.totalPhotos, 2);
|
|
expect(order.tasks.single.partsTotal, 11000);
|
|
expect(order.totalPartsCost, 11000);
|
|
expect(order.laborCost, 25000);
|
|
expect(order.totalCost, 36000);
|
|
expect(order.copyWith(laborCost: 30000).totalCost, 41000);
|
|
expect(order.details.isComplete, isTrue);
|
|
expect(order.tasks.single.beforePhotos, hasLength(1));
|
|
expect(order.tasks.single.afterPhotos, hasLength(1));
|
|
});
|
|
|
|
test(
|
|
'un estado desconocido de base de datos se interpreta como borrador',
|
|
() {
|
|
expect(WorkOrderStatus.fromDatabase('desconocido'), WorkOrderStatus.open);
|
|
},
|
|
);
|
|
}
|