View MockingImposter.cs
public class ProductsImposter : IImposter | |
{ | |
public Imposter Build() | |
{ | |
return new ImposterDefinition("ProductsMock") | |
.DeclareResource("/api/Products", HttpMethod.Post) | |
.When(r => r.Content.Contains("Name:Test product")) | |
.Then(new ProductResponseCreator()) | |
.Build(); | |
} |
View MockMiddlewareInStartup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env) | |
{ | |
//other configurations removed for brevity. | |
ImpostersAsMockConfiguration mockConfiguration = | |
new ImpostersAsMockConfiguration(new MockImpostersBuilder() | |
.CreateMockImposters(), | |
new MocksDataStore() | |
.Create()); |
View StubMiddlewareInStartup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env) | |
{ | |
//other configurations removed for brevity. | |
ImpostersAsStubConfiguration stubConfiguration = | |
new ImpostersAsStubConfiguration(new StubImpostersBuilder() | |
.CreateStubImposters()); | |
app.UseStubImposters(stubConfiguration); | |
} |
View MocksDataStore.cs
public class MocksDataStore | |
{ | |
public AwsDynamoDbDataStore Create() | |
{ | |
AmazonDynamoDBClient client = CreateAmazonDynamoDbClientWithLocalDbInstance(); | |
AwsDynamoDbDataStore awsDynamoDbDataStore = new AwsDynamoDbDataStore(client); | |
return awsDynamoDbDataStore; | |
} |
View OrdersResponseCreator.cs
public class OrdersResponseCreator : IResponseCreator | |
{ | |
public Response CreateResponse() | |
{ | |
var orderCreatedResponse = new OrderCreatedResponse | |
{ | |
Message = "Order created.", | |
OrderId = (uint)new Random().Next(int.MaxValue) | |
}; |
View OrdersImposter.cs
public class OrdersImposter: IImposter | |
{ | |
public Imposter Build() | |
{ | |
return new ImposterDefinition("OrdersStub") | |
.DeclareResource("/api/Orders", HttpMethod.Post) | |
.When(r => r.Content.Contains("Product:1234")) | |
.Then(new OrdersResponseCreator()) | |
.Build(); | |
} |
View DBModule.fs
module DB | |
open System.Data.Common | |
open Dapper | |
open Rows | |
open Domain | |
let allProducts(connection: DbConnection) = | |
let getProductType productType = |
View findfunctiontest.fs
[<Fact>] | |
let ``find_WhenProductDoesNotExists_ReturnsNone`` () = | |
let productId = Fixture().Create<int>(); | |
let products = Fixture().CreateMany<Product>() | |
let result = UpdateProductDimensions.find (productId, products) | |
result.IsNone.Should().BeTrue("the product id does not exist") |
View FunctionalProductDimensonsUpdate.fs
module UpdateProductDimensions | |
open Domain | |
open System | |
let find (productId:int, products: seq<Product>):Option<Product> = | |
products | |
|> Seq.tryPick<Product, Product>(fun x-> if x.ProductId = productId then Some(x) else None) | |
let update (productOption: Option<Product>, height, length, weight, width)= |
View ImpureFunctionAtTheBoundary.fs
open System.Data.SqlClient | |
[<EntryPoint>] | |
let main argv = | |
let getDbConnection() = | |
let connection = new SqlConnection("a_real_sql_connection_string") | |
connection.Open() | |
connection | |
let getAllProducts() = |
NewerOlder