summaryrefslogtreecommitdiffstats
path: root/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts')
-rw-r--r--third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts106
1 files changed, 106 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts
new file mode 100644
index 0000000000..1a15db9b5b
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts
@@ -0,0 +1,106 @@
+import {TestBed, async, inject} from '@angular/core/testing';
+import {Todo} from './todo';
+import {TodoDataService} from './todo-data.service';
+
+describe('TodoDataService', () => {
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ providers: [TodoDataService]
+ });
+ });
+
+ it('should ...', inject([TodoDataService], (service: TodoDataService) => {
+ expect(service).toBeTruthy();
+ }));
+
+ describe('#getAllTodos()', () => {
+
+ it('should return an empty array by default', inject([TodoDataService], (service: TodoDataService) => {
+ expect(service.getAllTodos()).toEqual([]);
+ }));
+
+ it('should return all todos', inject([TodoDataService], (service: TodoDataService) => {
+ let todo1 = new Todo({title: 'Hello 1', complete: false});
+ let todo2 = new Todo({title: 'Hello 2', complete: true});
+ service.addTodo(todo1);
+ service.addTodo(todo2);
+ expect(service.getAllTodos()).toEqual([todo1, todo2]);
+ }));
+
+ });
+
+ describe('#save(todo)', () => {
+
+ it('should automatically assign an incrementing id', inject([TodoDataService], (service: TodoDataService) => {
+ let todo1 = new Todo({title: 'Hello 1', complete: false});
+ let todo2 = new Todo({title: 'Hello 2', complete: true});
+ service.addTodo(todo1);
+ service.addTodo(todo2);
+ expect(service.getTodoById(1)).toEqual(todo1);
+ expect(service.getTodoById(2)).toEqual(todo2);
+ }));
+
+ });
+
+ describe('#deleteTodoById(id)', () => {
+
+ it('should remove todo with the corresponding id', inject([TodoDataService], (service: TodoDataService) => {
+ let todo1 = new Todo({title: 'Hello 1', complete: false});
+ let todo2 = new Todo({title: 'Hello 2', complete: true});
+ service.addTodo(todo1);
+ service.addTodo(todo2);
+ expect(service.getAllTodos()).toEqual([todo1, todo2]);
+ service.deleteTodoById(1);
+ expect(service.getAllTodos()).toEqual([todo2]);
+ service.deleteTodoById(2);
+ expect(service.getAllTodos()).toEqual([]);
+ }));
+
+ it('should not removing anything if todo with corresponding id is not found', inject([TodoDataService], (service: TodoDataService) => {
+ let todo1 = new Todo({title: 'Hello 1', complete: false});
+ let todo2 = new Todo({title: 'Hello 2', complete: true});
+ service.addTodo(todo1);
+ service.addTodo(todo2);
+ expect(service.getAllTodos()).toEqual([todo1, todo2]);
+ service.deleteTodoById(3);
+ expect(service.getAllTodos()).toEqual([todo1, todo2]);
+ }));
+
+ });
+
+ describe('#updateTodoById(id, values)', () => {
+
+ it('should return todo with the corresponding id and updated data', inject([TodoDataService], (service: TodoDataService) => {
+ let todo = new Todo({title: 'Hello 1', complete: false});
+ service.addTodo(todo);
+ let updatedTodo = service.updateTodoById(1, {
+ title: 'new title'
+ });
+ expect(updatedTodo.title).toEqual('new title');
+ }));
+
+ it('should return null if todo is not found', inject([TodoDataService], (service: TodoDataService) => {
+ let todo = new Todo({title: 'Hello 1', complete: false});
+ service.addTodo(todo);
+ let updatedTodo = service.updateTodoById(2, {
+ title: 'new title'
+ });
+ expect(updatedTodo).toEqual(null);
+ }));
+
+ });
+
+ describe('#toggleTodoComplete(todo)', () => {
+
+ it('should return the updated todo with inverse complete status', inject([TodoDataService], (service: TodoDataService) => {
+ let todo = new Todo({title: 'Hello 1', complete: false});
+ service.addTodo(todo);
+ let updatedTodo = service.toggleTodoComplete(todo);
+ expect(updatedTodo.complete).toEqual(true);
+ service.toggleTodoComplete(todo);
+ expect(updatedTodo.complete).toEqual(false);
+ }));
+
+ });
+
+}); \ No newline at end of file