Ejemplo n.º 1
0
        public async Task SaveAsync_FileDoesNotExist_CreatesNewFileAndEntry()
        {
            fileSystem.File.Delete(AuditsPath);
            var audit = new CalculationAudit
            {
                CalculationType = CalculationType.Either,
                Input           = new CalculationInput
                {
                    A = 0.1,
                    B = 0.2
                },
                Timestamp = new DateTime(2000, 1, 2),
                Result    = new CalculationResult
                {
                    Value = 1
                }
            };

            await this.sut.SaveAsync(audit);

            var contents = this.fileSystem.File.ReadAllText(AuditsPath).Trim().Split(Environment.NewLine);

            contents.Should().HaveCount(1);
            contents.Should().BeEquivalentTo(JsonSerializer.Serialize(audit));
        }
Ejemplo n.º 2
0
        public async Task SaveAsync_RequestValid_AppendsAudit()
        {
            var audit = new CalculationAudit
            {
                CalculationType = CalculationType.Either,
                Input           = new CalculationInput
                {
                    A = 0.1,
                    B = 0.2
                },
                Timestamp = new DateTime(2000, 1, 2),
                Result    = new CalculationResult
                {
                    Value = 1
                }
            };

            await this.sut.SaveAsync(audit);

            await this.sut.SaveAsync(audit);

            var contents = this.fileSystem.File.ReadAllText(AuditsPath).Trim().Split(Environment.NewLine);

            contents.Should().HaveCount(2);
            contents.Should().BeEquivalentTo(
                $"{JsonSerializer.Serialize(audit)}",
                $"{JsonSerializer.Serialize(audit)}");
        }
Ejemplo n.º 3
0
        public CalculationServiceTests()
        {
            this.calculation = new Mock <ICalculation>();
            this.calculation
            .Setup(c => c.Execute(It.IsAny <CalculationInput>()))
            .Returns(new CalculationResult());

            this.calculationFactoryMock = new Mock <ICalculationFactory>();
            this.calculationFactoryMock
            .Setup(f => f.Create(CalculationType.Either))
            .Returns(this.calculation.Object);

            this.inputValidatorMock = new Mock <ICalculationInputValidator>();

            this.auditRepository = new Mock <ICalculationAuditRepository>();
            this.auditRepository
            .Setup(r => r.SaveAsync(It.IsAny <CalculationAudit>()))
            .Callback <CalculationAudit>(audit => this.savedAudit = audit);

            this.sut = new CalculationService(
                this.inputValidatorMock.Object,
                this.calculationFactoryMock.Object,
                this.auditRepository.Object);
        }