Skip to content
Snippets Groups Projects
FluentSenderTests.cs 3 KiB
Newer Older
using System;
using Autofac;
using FitConnect;
using FitConnect.Models;
using FluentAssertions;
Klaus Fischer's avatar
Klaus Fischer committed
using Microsoft.Extensions.Logging;
using MockContainer;
using NUnit.Framework;

namespace FluentApiTest;

public class FluentSenderTests {
Klaus Fischer's avatar
Klaus Fischer committed
    private IContainer _container = null!;
Klaus Fischer's avatar
Klaus Fischer committed
    protected string clientId = null!;
    protected string clientSecret = null!;
Klaus Fischer's avatar
Klaus Fischer committed
    private ILogger? logger;
Klaus Fischer's avatar
Klaus Fischer committed
    private string leikaKey = null!;

    [OneTimeSetUp]
    public void OneTimeSetup() {
        _container = Container.Create();
Klaus Fischer's avatar
Klaus Fischer committed
        logger = _container.Resolve<ILogger>();
Klaus Fischer's avatar
Klaus Fischer committed
        var settings = _container.Resolve<MockSettings>();
        clientId = settings.SenderClientId;
        clientSecret = settings.SenderClientSecret;
        leikaKey = settings.LeikaKey;

    [SetUp]
    public void Setup() {
    }

    [Test]
    public void FluentSender_ShouldNotThrowAnError_ArgumentExceptionLeikaKeyInvalid() {
        Assert.Throws<ArgumentException>(() => {
            new Sender(FitConnectEnvironment.Testing,
                    clientId, clientSecret,
Klaus Fischer's avatar
Klaus Fischer committed
                    Container.Create())
                .WithDestination(Guid.NewGuid().ToString())
                .WithServiceType("", "")
                .WithAttachments(Array.Empty<Attachment>())
                .WithData("")
                .Submit();
        })!.Message.Should().Be("Invalid leika key");
    }

    public void FluentSender_ShouldNotThrowAnError_MockingServicesWithData() {
        new Sender(FitConnectEnvironment.Testing,
                clientId, clientSecret,
Klaus Fischer's avatar
Klaus Fischer committed
                Container.Create())
            .WithDestination(Guid.NewGuid().ToString())
Klaus Fischer's avatar
Klaus Fischer committed
            .WithServiceType("", leikaKey)
            .WithAttachments(Array.Empty<Attachment>())
            .WithData("")
            .Submit();
    public void FluentSender_ShouldNotThrowAnError_MockingServicesWithoutData() {
        new Sender(FitConnectEnvironment.Testing,
                clientId, clientSecret,
                Container.Create())
            .WithDestination(Guid.NewGuid().ToString())
Klaus Fischer's avatar
Klaus Fischer committed
            .WithServiceType("", leikaKey)
            .WithAttachments(Array.Empty<Attachment>())
            .Submit();

    [Test]
    public void VerifyMetaData_ValidData_Fine() {
        // Arrange
        var submission = new Submission();
Klaus Fischer's avatar
Klaus Fischer committed
        submission.ServiceType.Identifier = leikaKey;

        // Act
        var metadata = Sender.CreateMetadata(submission);

        // Assert
        var errors = Subscriber.VerifyMetadata(metadata);
Klaus Fischer's avatar
Klaus Fischer committed
        foreach (var error in errors) Console.WriteLine(error.ToString());

        errors.Count.Should().Be(0);
    }

    [Test]
    public void VerifyMetaData_MissingLeikaKey_ThorwsAnError() {
        // Arrange
        var submission = new Submission();

        // Act
        var metadata = Sender.CreateMetadata(submission);

        // Assert
        var errors = Subscriber.VerifyMetadata(metadata);
Klaus Fischer's avatar
Klaus Fischer committed
        foreach (var error in errors) Console.WriteLine(error.ToString());

        errors.Count.Should().Be(1);
    }