BlazorStart/Start/Tests/Server/BookmarkServiceTests.cs

118 lines
3.2 KiB
C#

using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Start.Server.Data.Services;
using Start.Server.Models;
namespace Start_Tests.Server {
[TestClass]
public class BookmarkServiceTests : UnitTestWithDb {
public TestContext TestContext { get; set; }
public BookmarkService BookmarkService { get; set; }
public BookmarkServiceTests() {
this.BookmarkService = new BookmarkService(_db);
}
[TestMethod]
public override void TestDatabaseOK() {
base.TestDatabaseOK();
}
#region CreateBookmark
[TestMethod]
public async Task CreateBookmark_Valid() {
int initialCount = _db.Bookmarks.Count();
await this.BookmarkService.CreateBookmark(base.TestUserId,
"Bookmark Service Test Title", "http://example.com", null, 1,
this.TestBookmarkGroup.BookmarkGroupId);
int updatedCount = _db.Bookmarks.Count();
Assert.AreEqual(initialCount + 1, updatedCount);
}
[TestMethod]
[ExpectedException(typeof(DbUpdateException))]
public async Task CreateBookmark_InvalidTitle() {
await this.BookmarkService.CreateBookmark(base.TestUserId,
null, "http://example.com", null, 1,
this.TestBookmarkGroup.BookmarkGroupId);
}
[TestMethod]
[ExpectedException(typeof(DbUpdateException))]
public async Task CreateBookmark_InvalidUrl() {
await this.BookmarkService.CreateBookmark(base.TestUserId,
"Bookmark Service Test Title", null, null, 1,
this.TestBookmarkGroup.BookmarkGroupId);
}
#endregion
#region GetBookmark
[TestMethod]
public async Task GetBookmark_CorrectUser() {
Bookmark bookmark = await this.BookmarkService
.GetBookmark(base.TestUserId,base.TestBookmark.BookmarkId);
Assert.IsNotNull(bookmark);
Assert.AreEqual(bookmark.BookmarkId, base.TestBookmark.BookmarkId);
Assert.AreEqual(bookmark.Url, base.TestBookmark.Url);
}
[TestMethod]
public async Task GetBookmark_WrongUser() {
Bookmark bookmark = await this.BookmarkService
.GetBookmark(base.InvalidUserId, base.TestBookmark.BookmarkId);
// Should return null if the user doesn't own the bookmark
Assert.IsNull(bookmark);
}
[TestMethod]
public async Task GetBookmark_WrongId() {
// Ensure that we use an invalid ID by going past the highest ID value
int maxBookmarkId = _db.Bookmarks.Max(b => b.BookmarkId);
Bookmark bookmark = await this.BookmarkService
.GetBookmark(base.TestUserId, maxBookmarkId + 1);
Assert.IsNull(bookmark);
}
#endregion
#region UpdateBookmark
[TestMethod]
public async Task UpdateBookmark_ValidTitle() {
string testTitleUpdate = "Update bookkmark test title";
base.TestBookmark.Title = testTitleUpdate;
Bookmark updatedBookmark = await this.BookmarkService
.UpdateBookmark(base.TestUserId, base.TestBookmark);
Assert.IsNotNull(updatedBookmark);
Assert.AreEqual(updatedBookmark.Title, testTitleUpdate);
Bookmark fromDb = _db.Bookmarks.Single(b => b.BookmarkId == TestBookmark.BookmarkId);
Assert.AreEqual(fromDb.Title, testTitleUpdate);
}
#endregion
[TestInitialize]
public void ResetDatabase() {
TestContext.WriteLine("Reseting test DB for the next test");
base.ResetAndFillDb();
}
}
}