blob: 99341c40e0e451832b0993a0c516b69905fabd94 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
using FluentAssertions;
using Microsoft.AspNetCore.Mvc;
using Moq;
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Timeline.Controllers;
using Timeline.Filters;
using Timeline.Models.Validation;
using Timeline.Services;
using Timeline.Tests.Helpers;
using Xunit;
namespace Timeline.Tests.Controllers
{
public class UserDetailControllerTest : IDisposable
{
private readonly Mock<IUserDetailService> _mockUserDetailService;
private readonly UserDetailController _controller;
public UserDetailControllerTest()
{
_mockUserDetailService = new Mock<IUserDetailService>();
_controller = new UserDetailController(_mockUserDetailService.Object);
}
public void Dispose()
{
_controller.Dispose();
}
[Fact]
public void AttributeTest()
{
typeof(UserDetailController).Should().BeDecoratedWith<ApiControllerAttribute>();
var getNickname = typeof(UserDetailController).GetMethod(nameof(UserDetailController.GetNickname));
getNickname.Should().BeDecoratedWith<HttpGetAttribute>()
.And.BeDecoratedWith<CatchUserNotExistExceptionAttribute>();
getNickname.GetParameter("username").Should().BeDecoratedWith<UsernameAttribute>()
.And.BeDecoratedWith<FromRouteAttribute>();
var putNickname = typeof(UserDetailController).GetMethod(nameof(UserDetailController.PutNickname));
putNickname.Should().BeDecoratedWith<HttpPutAttribute>()
.And.BeDecoratedWith<CatchUserNotExistExceptionAttribute>();
putNickname.GetParameter("username").Should().BeDecoratedWith<UsernameAttribute>()
.And.BeDecoratedWith<FromRouteAttribute>();
var stringLengthAttributeOnPutBody = putNickname.GetParameter("body").Should().BeDecoratedWith<FromBodyAttribute>()
.And.BeDecoratedWith<StringLengthAttribute>()
.Which;
stringLengthAttributeOnPutBody.MinimumLength.Should().Be(1);
stringLengthAttributeOnPutBody.MaximumLength.Should().Be(10);
var deleteNickname = typeof(UserDetailController).GetMethod(nameof(UserDetailController.DeleteNickname));
deleteNickname.Should().BeDecoratedWith<HttpDeleteAttribute>()
.And.BeDecoratedWith<CatchUserNotExistExceptionAttribute>();
deleteNickname.GetParameter("username").Should().BeDecoratedWith<UsernameAttribute>()
.And.BeDecoratedWith<FromRouteAttribute>();
}
[Fact]
public async Task GetNickname_ShouldWork()
{
const string username = "uuu";
const string nickname = "nnn";
_mockUserDetailService.Setup(s => s.GetNickname(username)).ReturnsAsync(nickname);
var actionResult = await _controller.GetNickname(username);
actionResult.Result.Should().BeAssignableTo<OkObjectResult>(nickname);
_mockUserDetailService.VerifyAll();
}
[Fact]
public async Task PutNickname_ShouldWork()
{
const string username = "uuu";
const string nickname = "nnn";
_mockUserDetailService.Setup(s => s.SetNickname(username, nickname)).Returns(Task.CompletedTask);
var actionResult = await _controller.PutNickname(username, nickname);
actionResult.Should().BeAssignableTo<OkResult>();
_mockUserDetailService.VerifyAll();
}
[Fact]
public async Task DeleteNickname_ShouldWork()
{
const string username = "uuu";
_mockUserDetailService.Setup(s => s.SetNickname(username, null)).Returns(Task.CompletedTask);
var actionResult = await _controller.DeleteNickname(username);
actionResult.Should().BeAssignableTo<OkResult>();
_mockUserDetailService.VerifyAll();
}
}
}
|