public void RaiseMessageWhenCreateRadio() { var stream = new MemoryEventStream(); var publisher = new EventBus(stream); var radioEngine = RadioEngineBuilder.Create().Build(); Radio.Create(stream, publisher, radioEngine, "djam", "http://djamradio.fr"); Assert.IsTrue(stream.GetEvents().Contains(new RadioCreated("djam", new Uri("http://djamradio.fr")))); }
public Bootstrapper(IUnityContainer container) { var stream = new MemoryEventStream(); var eventBus = new EventBus(stream); container.RegisterInstance <IEventStream>(stream); container.RegisterInstance(eventBus); _container = container; }
public void RaiseMessageWhenCreateUser() { var stream = new MemoryEventStream(); var publisher = new EventBus(stream); var deezerApi = DeezerApiBuilder.Create().Build(); var songRepository = SongRepositoryBuilder.Create().Build(); var playlistRepository = PlaylistRepositoryBuilder.Create().Build(); User.Create(stream, publisher, deezerApi, songRepository, playlistRepository, "*****@*****.**", "dublow", "12345", "accessToken"); var identity = Identity.Parse("*****@*****.**", "dublow", "12345", "accessToken"); Assert.IsTrue(stream.GetEvents().Contains(new UserCreated(identity))); }
public void RaiseMessageWhenParseRadioSong() { var stream = new MemoryEventStream(); var publisher = new EventBus(stream); var radioEngine = RadioEngineBuilder .Create() .SetParser("title", "artist") .Build(); var radio = Radio.Create(stream, publisher, radioEngine, "djam", "http://djamradio.fr"); radio.SearchSong(); Assert.IsTrue(stream.GetEvents().Contains(new RadioSongParsed("djam", "title", "artist"))); }
public void RaiseMessageWhenParseRadioErrorOccured() { var stream = new MemoryEventStream(); stream.Add(new RadioCreated("djam", new Uri("http://djamradio.fr"))); var publisher = new EventBus(stream); var radioEngine = RadioEngineBuilder .Create() .SetException(new Exception("error")) .Build(); var radio = new Radio(stream, publisher, radioEngine); radio.SearchSong(); Assert.IsTrue(stream.GetEvents().Contains(new RadioSongError("djam", "error"))); }
public void RaiseMessageWhenAddPlaylistToUser() { var stream = new MemoryEventStream(); var deezerApi = DeezerApiBuilder.Create().SetCreatePlaylist(PlaylistId.Parse("100")).Build(); var songRepository = SongRepositoryBuilder.Create() .SetRandomSongs(1, new[] { new Song(SongId.Parse("100"), "title", "artist") }).Build(); var playlistRepository = PlaylistRepositoryBuilder.Create().Build(); stream.Add(new UserCreated(Identity.Parse("*****@*****.**", "dublow", "12345", "accessToken"))); var publisher = new EventBus(stream); var user = new User(stream, publisher, deezerApi, songRepository, playlistRepository, 1); user.AddPlaylist("playlistName"); Assert.IsTrue(stream.GetEvents().Contains(new PlaylistAdded(UserId.Parse("12345"), PlaylistId.Parse("100"), "playlistName"))); }
public void NoRaiseMessageWhenTwiceDeleteUser() { var stream = new MemoryEventStream(); var deezerApi = DeezerApiBuilder.Create().Build(); var songRepository = SongRepositoryBuilder.Create().Build(); var playlistRepository = PlaylistRepositoryBuilder.Create().Build(); stream.Add(new UserCreated(Identity.Parse("*****@*****.**", "dublow", "12345", "accessToken"))); var publisher = new EventBus(stream); var user = new User(stream, publisher, deezerApi, songRepository, playlistRepository, 1); user.Delete(); user.Delete(); Assert.IsTrue(stream.GetEvents().Contains(new UserDeleted(UserId.Parse("12345")))); }
public void NoRaiseMessageWhenAddPlaylistWithDeletedUser() { var stream = new MemoryEventStream(); var deezerApi = DeezerApiBuilder.Create().Build(); var songRepository = SongRepositoryBuilder.Create().Build(); var playlistRepository = PlaylistRepositoryBuilder.Create().Build(); stream.Add(new UserCreated(Identity.Parse("*****@*****.**", "dublow", "12345", "accessToken"))); stream.Add(new UserDeleted(UserId.Parse("12345"))); var publisher = new EventBus(stream); var user = new User(stream, publisher, deezerApi, songRepository, playlistRepository, 1); user.AddPlaylist("playlistName"); Assert.AreEqual(0, stream.GetEvents().OfType <PlaylistAdded>().Count()); }
public void NoRaiseMessageWhenParseRadioSongWithDeletedRadio() { var stream = new MemoryEventStream(); stream.Add(new RadioCreated("djam", new Uri("http://djamradio.fr"))); stream.Add(new RadioDeleted("djam")); var publisher = new EventBus(stream); var radioEngine = RadioEngineBuilder .Create() .SetParser("title", "artist") .Build(); var radio = new Radio(stream, publisher, radioEngine); radio.SearchSong(); Assert.AreEqual(0, stream.GetEvents().OfType <RadioSongParsed>().Count()); }
public HomeModule(IDeezerApi deezerApi, ISongRepository songRepository, IPlaylistRepository playlistRepository, Environment environment, IMetric metric) { _deezerApi = deezerApi; _songRepository = songRepository; _playlistRepository = playlistRepository; _environment = environment; _metric = metric; var eventStream = new MemoryEventStream(); var eventPublisher = new EventBus(eventStream); eventPublisher.Subscribe(new PlaylistHandler(playlistRepository)); Get["/"] = _ => { using (var timer = _metric.Timer("home")) { var model = new { appid = _environment.AppId, channel = _environment.Channel }; return(View["index", model]); } }; Get["/channel"] = _ => { using (var timer = _metric.Timer("channel")) { var cacheExpire = 60 * 60 * 24 * 365; return(View["channel"] .WithHeader("Pragma", "public") .WithHeader("Cache-Control", $"maxage={cacheExpire}") .WithHeader("Expires", DateTime.Now.AddMinutes(cacheExpire).ToString("F"))); } }; Post["/login"] = _ => { using (var timer = _metric.Timer("createplaylist")) { var model = this.Bind <LoginViewModel>(); var user = User.Create(eventStream, eventPublisher, _deezerApi, _songRepository, _playlistRepository, model.Email, model.Nickname, model.UserId, model.AccessToken, _environment.Size); user.AddPlaylist(model.PlaylistName); Console.WriteLine(user.Playlist.PlaylistId.Value); return(Response.AsJson(new { playlistCreated = !user.Playlist.PlaylistId.IsEmpty })); } }; Get["/canCreatePlaylist/{userId}"] = parameters => { using (var timer = _metric.Timer("hasplaylist")) { var userId = UserId.Parse((string)parameters.userId); var canCreatePlaylist = _playlistRepository .CanCreatePlaylist(userId, DateTime.UtcNow.AddDays(-1)); return(Response.AsJson(new { canCreatePlaylist })); } }; }