pschelpdesk/Vendor/Prise.Tests.Integration/Prise.IntegrationTests/CalculationTests.cs
2024-11-04 20:45:34 +01:00

330 lines
8.9 KiB
C#

using System.Net.Http;
using System.Threading.Tasks;
using Prise.IntegrationTestsHost.Models;
using Microsoft.AspNetCore.Mvc.Testing;
using Xunit;
namespace Prise.IntegrationTests
{
public class CalculationTests : CalculationPluginTestsBase
{
public CalculationTests() : base(AppHostWebApplicationFactory.Default()) { }
[Fact]
public async Task PluginA_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 100,
B = 150
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginA", "/calculation", payload);
// Assert 100 + 150
Assert.Equal(250, result.Result);
}
[Fact]
public async Task PluginB_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 150,
B = 50
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginB", "/calculation", payload);
// Assert 150 - 50
Assert.Equal(100, result.Result);
}
[Fact]
public async Task PluginC_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 50,
B = 2
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginC", "/calculation", payload);
// Assert 50 * 2 + 10% discount
Assert.Equal(110, result.Result);
}
[Fact]
public async Task PluginA_int_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 100,
B = 150
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginA", "/calculation/int", payload);
// Assert 100 + 150
Assert.Equal(250, result.Result);
}
[Fact]
public async Task PluginB_int_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 150,
B = 50
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginB", "/calculation/int", payload);
// Assert 150 - 50
Assert.Equal(100, result.Result);
}
[Fact]
public async Task PluginC_int_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 50,
B = 2
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginC", "/calculation/int", payload);
// Assert 50 * 2 + 10% discount
Assert.Equal(110, result.Result);
}
[Fact]
public async Task PluginA_complex_input_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 100,
B = 150
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginA", "/calculation/complex-input", payload);
// Assert 100 + 150
Assert.Equal(250, result.Result);
}
[Fact]
public async Task PluginB_complex_input_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 150,
B = 50
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginB", "/calculation/complex-input", payload);
// Assert 150 - 50
Assert.Equal(100, result.Result);
}
[Fact]
public async Task PluginC_complex_input_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 50,
B = 2
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginC", "/calculation/complex-input", payload);
// Assert 50 * 2 + 10% discount
Assert.Equal(110, result.Result);
}
[Fact]
public async Task PluginA_complex_output_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 100,
B = 150
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginA", "/calculation/complex-output", payload);
// Assert 100 + 150
Assert.Equal(250, result.Result);
}
[Fact]
public async Task PluginB_complex_output_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 150,
B = 50
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginB", "/calculation/complex-output", payload);
// Assert 150 - 50
Assert.Equal(100, result.Result);
}
[Fact]
public async Task PluginC_complex_output_Works()
{
// Arrange
var payload = new CalculationRequestModel
{
A = 50,
B = 2
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginC", "/calculation/complex-output", payload);
// Assert 50 * 2 + 10% discount
Assert.Equal(110, result.Result);
}
[Fact]
public async Task PluginA_multi_Works()
{
// Arrange
var payload = new CalculationRequestMultiModel
{
Calculations = new[]
{
new CalculationRequestModel
{
A = 100,
B = 150
},
new CalculationRequestModel
{
A = 100,
B = 150
}
}
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginA", "/calculation/multi", payload);
// Assert 100 + 150 + 100 + 150
Assert.Equal(500, result.Result);
}
[Fact]
public async Task PluginB_multi_Works()
{
// Arrange
var payload = new CalculationRequestMultiModel
{
Calculations = new[]
{
new CalculationRequestModel
{
A = 50,
B = 5
},
new CalculationRequestModel
{
A = 40,
B = 5
}
}
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginB", "/calculation/multi", payload);
// Assert (50 - 5) + (40 - 5)
Assert.Equal(80, result.Result);
}
[Fact]
public async Task PluginC_multi_Works()
{
// Arrange
var payload = new CalculationRequestMultiModel
{
Calculations = new[]
{
new CalculationRequestModel
{
A = 50,
B = 2
},
new CalculationRequestModel
{
A = 40,
B = 2
}
}
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginC", "/calculation/multi", payload);
// Assert (50 * 2 + 10% discount) + (40 * 2 + 10% discount)
Assert.Equal(198, result.Result);
}
[Fact]
public async Task PluginC_multi_async_Works()
{
// Arrange
var payload = new CalculationRequestMultiModel
{
Calculations = new[]
{
new CalculationRequestModel
{
A = 50,
B = 2
},
new CalculationRequestModel
{
A = 40,
B = 2
}
}
};
//Act
var result = await Post<CalculationResponseModel>(_client, "PluginC", "/calculation/multi-async", payload);
// Assert (50 * 2 + 10% discount) + (40 * 2 + 10% discount)
Assert.Equal(198, result.Result);
}
}
}