97 lines
No EOL
2.1 KiB
C#
97 lines
No EOL
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Threading.Tasks;
|
|
using Dapper;
|
|
using FluentAssertions;
|
|
using NSubstitute;
|
|
using NSubstitute.ExceptionExtensions;
|
|
using Website.Data;
|
|
using Website.Data.States;
|
|
using Website.Models;
|
|
using Xunit;
|
|
|
|
namespace Website.Tests.Data
|
|
{
|
|
public class BlogRepositoryTests
|
|
{
|
|
private class MockDbConnection : IDbConnection
|
|
{
|
|
public string ConnectionString { get; set; }
|
|
|
|
public int ConnectionTimeout => 0;
|
|
|
|
public string Database => string.Empty;
|
|
|
|
public ConnectionState State => ConnectionState.Open;
|
|
|
|
public IDbTransaction BeginTransaction()
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public IDbTransaction BeginTransaction(IsolationLevel il)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public void ChangeDatabase(string databaseName)
|
|
{
|
|
}
|
|
|
|
public void Close()
|
|
{
|
|
}
|
|
|
|
public IDbCommand CreateCommand()
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
|
|
public void Open()
|
|
{
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void GetPostAsync_WithValidId_ReturnsBlogPost() {
|
|
var blogPostState = new BlogPostState
|
|
{
|
|
Post_Id = 1,
|
|
Post_Title = "title",
|
|
Post_Content = "content",
|
|
Post_Timestamp = new DateTime(),
|
|
Post_Deleted = false,
|
|
Post_Draft = "draft",
|
|
Post_Url = "url",
|
|
User_Id = 1
|
|
};
|
|
var connection = Substitute.For<IDbConnection>();
|
|
connection.QueryAsync(null, null, (Func<object[], BlogPostState>)null, null, null, false, null, null, null).ReturnsForAnyArgs(new[]{ blogPostState });
|
|
|
|
var provider = Substitute.For<IDatabaseProvider>();
|
|
provider.NewConnection().Returns(connection);
|
|
|
|
var repo = new BlogRepository(provider);
|
|
var post = repo.GetPostAsync(1);
|
|
var expected = new BlogPost
|
|
{
|
|
Id = 1,
|
|
Title = "title",
|
|
Content = "content",
|
|
Timestamp = new DateTime(),
|
|
Draft = "draft",
|
|
Url = "url",
|
|
UserId = 1
|
|
}; ;
|
|
post.Should().BeEquivalentTo(expected);
|
|
}
|
|
|
|
//public async Task GetPostAsync_WithInvalidId_ReturnsNull()
|
|
//public async Task GetPostAsync_WithDeletedPost_ReturnsNull()
|
|
}
|
|
} |