public async Task AggregateDataAsync_ValidId_ServiceGetsCalledWithCorrectData() { // Arrange var context = new SutContext(); var id = Guid.NewGuid(); var artistSearch = new ArtistSearch { Id = id, Name = "abcdef", SortName = "abc", Type = "something", Area = "a" }; context.ArtistService .Setup(x => x.GetArtistAsync(id)) .ReturnsAsync(artistSearch); // Act var result = await context.Process.AggregateDataAsync(id); // Assert context.ArtistService.Verify(x => x.GetArtistAsync(id), Times.Once); Assert.AreEqual(id, result.ArtistId, nameof(result.ArtistId)); Assert.AreEqual("abcdef", result.Name, nameof(result.Name)); }
public void LoadArtists() { StatusText = "Loading..."; _worker = new BackgroundWorker(); _worker.DoWork += (o, args) => args.Result = _artistService.Search(args.Argument.ToString()); _worker.RunWorkerCompleted += (o, args) => { IsLoadButtonEnabled = true; LoadButtonContent = "Search"; if (args.Cancelled) { StatusText = "Operation cancelled !"; } else if (args.Error != null) { StatusText = "Error : " + args.Error.Message; } else { StatusText = "Result :"; ArtistSearch searchResult = (ArtistSearch)args.Result; Artists = searchResult.Results.ArtistMatches.Artists.Where(a => a.Mbid != "").ToList(); } }; LoadButtonContent = "Loading..."; IsLoadButtonEnabled = false; _worker.RunWorkerAsync(QueryText); }
public static void Main() { while (true) { Console.WriteLine("Search for album and artists:"); string searchString = Console.ReadLine(); IEnumerable <WebArtist> artists = ArtistSearch.SearchFor(searchString); Console.WriteLine("---ARTISTS---"); foreach (var artist in artists) { Console.WriteLine("Artist: {0}, Guid: {1}", artist.Name, artist.Id); } IEnumerable <WebAlbum> albums = AlbumSearch.SearchForAlbum(searchString); Console.WriteLine("---ALBUMS---"); foreach (var album in albums) { Console.WriteLine("Artist: {0}, Album: {1}", album.Artist, album.Title); } } }
private void SearchForArtists(string artist) { ArtistSearch.SearchForAsync(artist, artists => { DispatcherHelper.CheckBeginInvokeOnUI(() => { this.SearchResultsViewModel.LoadArtists(artists); }); }); }
public void Can_get_multiple_results() { ArtistSearch artistSearch = Api <ArtistSearch> .Create .WithParameter("q", "pink") .WithParameter("page", "1") .WithParameter("pageSize", "20") .Please(); Assert.That(artistSearch.Results.Count, Is.GreaterThan(1)); }
public void Can_hit_endpoint_with_fluent_interface() { ArtistSearch artistSearch = Api <ArtistSearch> .Create .WithQuery("pink") .WithParameter("country", "GB") .Please(); Assert.That(artistSearch, Is.Not.Null); }
public ArtistSearchTests() { artistSearch = new ArtistSearch(ContentLanguagePreference.Default, db.CreateContext(), new EntryUrlParser()); var artist1 = db.Save(CreateEntry.Artist(ArtistType.Producer, name: "XenonP")); db.SaveNames(artist1); db.Save(artist1.CreateWebLink("Twitter", "https://twitter.com/XenonP_XM", WebLinkCategory.Official)); db.SaveNames(db.Save(CreateEntry.Artist(ArtistType.Producer, name: "Clean Tears"))); db.SaveNames(db.Save(CreateEntry.Artist(ArtistType.Vocaloid, name: "Hatsune Miku"))); }
public void Can_hit_endpoint_with_paging() { ArtistSearch artistBrowse = Api <ArtistSearch> .Get .WithParameter("q", "pink") .WithParameter("page", "2") .WithParameter("pageSize", "20") .Please(); Assert.That(artistBrowse, Is.Not.Null); Assert.That(artistBrowse.Page, Is.EqualTo(2)); Assert.That(artistBrowse.PageSize, Is.EqualTo(20)); }
public string artist(ArtistSearch search) { try { result = orm.execObject <Result>(search, "api.admin_artist_search"); } catch (Exception exp) { errorResult(exp); } return(formattedResult(result)); }
public ArtistSearchTextBox() : base() { if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Runtime) { Search = new ArtistSearch(ArtistSearch.Fields.MatchName, ArtistSearch.Fields.FullNameType, ArtistSearch.Fields.FullName, ArtistSearch.Fields.ID); UpdateCompletionSource(); } UserAttemptedAddItem += (sender, e) => AddArtist(Text); UserAttemptedDeleteItem += (sender, e) => DeleteArtist(e); UserAttemptedRenameItem += (sender, e) => RenameArtist(e, ""); }
public static Artist GetComposer(Artist defaultComposer) { ArtistSearch s = new ArtistSearch(ArtistSearch.Fields.FullName); s.AddTypeToSearch(ArtistSearch.TypeCategory.Composers); Inputbox ib = new Inputbox("Choose a composer: ", s.PerformSearchToScalar().ToArray(), defaultComposer != null ? defaultComposer.GetName(Artist.NameFormats.Last_First) : "", false); if (ib.ShowDialog() == DialogResult.Cancel) { return(null); } else { Artist a = new Artist(ib.SelectedItem.ToString(), "composer"); return(a); } }
public async Task AggregateDataAsync_MixedData_ServiceReturnsCorrectData() { // Arrange var context = new SutContext(); var id = Guid.NewGuid(); var artistSearch = new ArtistSearch { Id = id, Name = "abcdef", SortName = "abc", Type = "something", Area = "a" }; // TODO: could refactor and make it data driven var works = new[] { new ArtistWork { Id = new Guid("00000000-0000-0000-0000-000000000001"), Title = "1" }, new ArtistWork { Id = new Guid("00000000-0000-0000-0000-000000000002"), Title = "2" }, new ArtistWork { Id = new Guid("00000000-0000-0000-0000-000000000003"), Title = "3" }, new ArtistWork { Id = new Guid("00000000-0000-0000-0000-000000000004"), Title = "4" }, new ArtistWork { Id = new Guid("00000000-0000-0000-0000-000000000005"), Title = "5" }, new ArtistWork { Id = new Guid("00000000-0000-0000-0000-000000000006"), Title = "6" } }; var expectedResults = new Dictionary <string, (string, int)>() { { "1", ("a", 1) }, { "2", ("a a", 2) },
/// <summary> /// Perform artist based search. /// </summary> /// <param name="maxMaxResults">Number of MaxResults to return</param> /// <returns>Collection of album tags</returns> /// <remarks> /// Method first pulls matched artists and then /// based on this result pulls associated albums. Most searches /// should not reach this lookup. /// </remarks> private List<Metadata> ArtistLookup() { Trace.WriteLine("Performing artist lookup. Artist: " + Tokens["artist"]); ArtistSearch search = new ArtistSearch(Tokens["artist"], session); search.SpecifyItemsPerPage(MaxResults); List<Metadata> tmp = (from artist in search.GetPage((int)Pages.FIRST) from album in artist.GetTopAlbums() select album.Item.ToTag()).ToList<Metadata>(); MaxResults = MaxResults - tmp.Count(); Trace.WriteLine("MaxResults: " + tmp.Count()); return tmp; }
public Browse() { InitializeComponent(); status_reset_timer = new Timer(); status_reset_timer.Interval = 6000; // reset status message to "Ready" after 6 sec status_reset_timer.Tick += (sender, e) => { this.change_status("Ready", false); status_reset_timer.Enabled = false; }; if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Runtime) { artistSearch = new ArtistSearch(ArtistSearch.Fields.ID, ArtistSearch.Fields.FullName, ArtistSearch.Fields.MatchName); artistSearch.AddTypeToSearch(ArtistSearch.TypeCategory.Composers); genreSearch = new GenreSearch(GenreSearch.Fields.ID, GenreSearch.Fields.Name); pieceSearch = new PieceSearch(PieceSearch.Fields.ID, PieceSearch.Fields.Name, PieceSearch.Fields.ParentPieceID); SupressUpdate = false; UpdateArtistList(); UpdateGenreList(); UpdatePieceList(false); } txbComposer.Focus(); // hide the tabs of tabControlMode Rectangle rect = new Rectangle(tabPageSearch.Left, tabPageSearch.Top, tabPageSearch.Width, tabPageSearch.Height); tabControlMode.Region = new Region(rect); txbComposer.SetDefaultText(TextBoxDefaultAll); txbComposer.PopupWidth = -1; txbComposer.ItemSelected += (sender, e) => { UpdateGenreList(); UpdatePieceList(false); if (txbComposer.SelectedItem != null) { txbFilter.Focus(); } }; txbComposer.TextChanged += (sender, e) => { SupressUpdate = true; txbGenre.ResetText(); txbFilter.Text = TextBoxDefaultNone; SupressUpdate = false; }; txbComposer.KeyDown += (sender, e) => { if (e.KeyData == Keys.Enter) { if (txbComposer.SelectedItem != null || !txbComposer.HasText()) { txbFilter.Focus(); } else { if (AddNewComposer(txbComposer.Text)) // add new composer and set focus to dg if add is successful { dg.Focus(); } } } else if (e.KeyData == Keys.F2 && txbComposer.HighlightedItem != null) { //change_status(txbComposer.HighlightedValue.ToString() + txbComposer.HighlightedItem.ToString()); int id = int.Parse(txbComposer.HighlightedValue.ToString()); txbComposer.HideAutoCompleteList(); RenameComposer(id, ""); } else if (e.KeyData == Keys.Delete && txbComposer.HighlightedItem != null) { int id = int.Parse(txbComposer.HighlightedValue.ToString()); txbComposer.HideAutoCompleteList(); DeleteComposer(id); } else { return; } e.Handled = true; }; //txbComposer.LostFocus += new EventHandler(txb_LostFocus); txbGenre.SetDefaultText(TextBoxDefaultAll); txbGenre.PopupWidth = -1; //txbGenre.LostFocus += txb_LostFocus; txbGenre.ItemSelected += (sender, e) => UpdatePieceList(false); txbFilter.Text = TextBoxDefaultNone; txbFilter.TextChanged += (sender, e) => UpdatePieceList(false); txbFilter.KeyDown += txb_KeyDown; txbFilter.KeyDown += (sender, e) => { if (e.KeyData == Keys.Down) { dg.Focus(); } }; txbFilter.Enter += (sender, e) => txbFilter.SelectAll(); dg.Rows.Clear(); dg.CellFormatting += (sender, e) => { // highlight the fact that the control is not in focus e.CellStyle.SelectionBackColor = ((DataGridView)sender).Focused ? SystemColors.Highlight : SystemColors.InactiveCaption; // highlight the pieces that are "derived" from other pieces (i.e. a transcription, etc.) e.CellStyle.ForeColor = (dg[2, e.RowIndex].Value == null) ? SystemColors.ControlText : Color.Gray; // highlight the cell in edit mode if (dg.IsCurrentCellInEditMode && dg.CurrentCell == dg[e.ColumnIndex, e.RowIndex]) { e.CellStyle.BackColor = CellInEditColor; } }; dg.SortCompare += (sender, e) => { // use natural sorting if (dg[1, e.RowIndex1].Value == null || dg[1, e.RowIndex2].Value == null) { return; } e.SortResult = NaturalSortComparer.Default.Compare(dg[1, e.RowIndex1].Value.ToString(), dg[1, e.RowIndex2].Value.ToString()); e.Handled = true; }; dg.KeyDown += (sender, e) => { if (e.KeyData == Keys.Up || e.KeyData == Keys.Down) { IsScrolling = true; // don't fetch data if the user is scrolling fast } else if (e.KeyCode == Keys.Enter) { e.Handled = true; // move to next control if (e.Shift) { tabControl.SelectedTab = tabControl.TabPages[2]; tabControl.Focus(); } else { if (clbDetail.Items.Count != 0) { clbDetail.SelectedIndex = 0; } if (tabControl.SelectedTab == tabControl.TabPages[0] && clbDetail.Items.Count == 0) { tabControl.SelectedTab = tabControl.TabPages[1]; // goto text edit mode } tabControl.Focus(); } } else if (e.KeyData == Keys.Escape) { txbFilter.Focus(); } else if (e.KeyData == (Keys.Home)) { dg.ClearSelection(); dg.CurrentCell = dg[1, 0]; dg.CurrentCell.Selected = true; } else if (e.KeyData == (Keys.End)) { dg.ClearSelection(); dg.CurrentCell = dg[1, dg.RowCount - 1]; dg.CurrentCell.Selected = true; } }; dg.KeyUp += (sender, e) => { if (e.KeyData == Keys.Up || e.KeyData == Keys.Down) { // resume fetchting data after user stop fast scrolling IsScrolling = false; //force re-selection so that the SelectionChanged event will fire dg.ClearSelection(); dg.Rows[dg.CurrentRow.Index].Selected = true; } else if (e.KeyData == (Keys.Alt | Keys.P)) { tabControl.SelectedTab = tabControl.TabPages[2]; dg.Focus(); } else if (e.KeyData == (Keys.Alt | Keys.M)) { tabControl.SelectedTab = tabControl.TabPages[0]; dg.Focus(); } else if (e.KeyData == (Keys.Control | Keys.E)) { //start text edit mode tabControl.SelectedTab = tabControl.TabPages[1]; tabControl.Focus(); } else if (e.KeyData == Keys.Delete) { DeletePiece(); } }; dg.SelectionChanged += (sender, e) => { if (!IsScrolling) { UpdateDetail(); } }; dg.GotFocus += (sender, e) => { if (dg.SelectedRows.Count == 0) //auto select first row if nothing is already selected { dg.Rows[0].Selected = true; } }; dg.CellEndEdit += (sender, e) => { dg.CurrentCell = dg[e.ColumnIndex, e.RowIndex]; if (dg[0, e.RowIndex].Value == null && dg.CurrentCell.Value != null) { if (!AddNewPiece(dg.CurrentCell.Value.ToString())) { dg.Rows.Remove(dg.Rows[dg.CurrentCell.RowIndex]); } } else if (!dg.CurrentRow.IsNewRow) { RenamePiece(dg.CurrentCell.Value.ToString()); } }; clbDetail.KeyDown += new KeyEventHandler(clbDetail_KeyDown); clbDetail.LostFocus += (sender, e) => clbDetail.ClearSelected(); clbDetail.SelectedIndexChanged += (sender, e) => { // show preview of how the formatted name is like on statusbar if (!DetailPaneVisible) { return; // no need to update UI } if (clbDetail.SelectedIndex != -1 && currentPiece != null) { change_status(currentPiece.FormatDetail(clbDetail.SelectedItem.ToString())); } }; // don't focus on the tabs themselves tabControl.GotFocus += (sender, e) => this.SelectNextControl(tabControl, true, true, true, true); tabControl.Deselecting += (sender, e) => { if (e.TabPage == tabPageDetailEdit) { if (string.IsNullOrEmpty(txbEdit.Text.Trim()) || ((currentPiece.Details != null && string.Join("", currentPiece.Details) == string.Join("", txbEdit.Lines)))) { return; } DialogResult ret = MessageBox.Show( "Your changes have not been saved; you want to save the changes?", "Confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation); switch (ret) { case DialogResult.Cancel: e.Cancel = true; txbEdit.Focus(); break; case DialogResult.No: UpdateDetail(); break; case DialogResult.Yes: ChangeDetail(txbEdit.Lines); break; default: break; } } }; txbEdit.KeyDown += (sender, e) => { if (e.KeyData == Keys.Escape) { tabControl.SelectTab(0); } if (e.KeyData == (Keys.Control | Keys.Enter)) // submit changes and leave edit mode { ChangeDetail(txbEdit.Lines); tabControl.SelectTab(0); } if (e.KeyData == (Keys.Shift | Keys.Enter)) { ChangeDetail(txbEdit.Lines); // submit changes but not leaving edit mode } }; txbEdit.PreviewKeyDown += (sender, e) => { if (e.KeyData == (Keys.Shift | Keys.Enter) || e.KeyData == (Keys.Control | Keys.Enter)) { e.IsInputKey = false; //shift+enter and ctrl+enter is used for special purposes, not input... } }; //txbEdit.GotFocus += (sender,e) => txbEdit.Lines = currentPiece.Details; pgrid.PropertyValueChanged += (sender, e) => { change_status((e.OldValue != null ? e.OldValue.ToString() : "") + " => " + e.ChangedItem.Value.ToString()); Array.ForEach <object>(pgrid.SelectedObjects, p => ((Piece)p).Commit()); change_status("Properties updated"); }; ((ContainerControl)pgrid).Controls[2].PreviewKeyDown += (sender, e) => { if (e.KeyData == Keys.Escape) { dg.Focus(); } }; }