blob: 8855d92fe77579e70c55658e6baf989d6c6c062b [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of mocks;
class NotificationChangeEventMock implements M.NotificationChangeEvent {
final NotificationRepositoryMock repository;
const NotificationChangeEventMock({this.repository});
}
typedef void NotificationRepositoryMockCallback(M.Notification notification);
class NotificationRepositoryMock implements M.NotificationRepository {
final StreamController<M.NotificationChangeEvent> _onChange =
new StreamController<M.NotificationChangeEvent>.broadcast();
Stream<M.NotificationChangeEvent> get onChange => _onChange.stream;
bool get hasListeners => _onChange.hasListener;
final Iterable<M.Notification> _list;
final NotificationRepositoryMockCallback _add;
final NotificationRepositoryMockCallback _delete;
bool addInvoked = false;
bool listInvoked = false;
bool deleteInvoked = false;
bool deleteAllInvoked = false;
void add(M.Notification notification) {
addInvoked = true;
if (_add != null) _add(notification);
}
Iterable<M.Notification> list() {
listInvoked = true;
return _list;
}
void delete(M.Notification notification) {
deleteInvoked = true;
if (_add != null) _delete(notification);
}
void deleteAll() {
deleteAllInvoked = true;
}
void triggerChangeEvent() {
_onChange.add(new NotificationChangeEventMock(repository: this));
}
NotificationRepositoryMock(
{Iterable<M.Notification> list: const [],
NotificationRepositoryMockCallback add,
NotificationRepositoryMockCallback delete})
: _list = list,
_add = add,
_delete = delete;
}