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)); }
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)}"); }
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); }