Skip to content

Instantly share code, notes, and snippets.

View avegaraju's full-sized avatar
🤘
I may be slow to respond.

Ashish avegaraju

🤘
I may be slow to respond.
View GitHub Profile
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();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//other configurations removed for brevity.
ImpostersAsMockConfiguration mockConfiguration =
new ImpostersAsMockConfiguration(new MockImpostersBuilder()
.CreateMockImposters(),
new MocksDataStore()
.Create());
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//other configurations removed for brevity.
ImpostersAsStubConfiguration stubConfiguration =
new ImpostersAsStubConfiguration(new StubImpostersBuilder()
.CreateStubImposters());
app.UseStubImposters(stubConfiguration);
}
public class MocksDataStore
{
public AwsDynamoDbDataStore Create()
{
AmazonDynamoDBClient client = CreateAmazonDynamoDbClientWithLocalDbInstance();
AwsDynamoDbDataStore awsDynamoDbDataStore = new AwsDynamoDbDataStore(client);
return awsDynamoDbDataStore;
}
public class OrdersResponseCreator : IResponseCreator
{
public Response CreateResponse()
{
var orderCreatedResponse = new OrderCreatedResponse
{
Message = "Order created.",
OrderId = (uint)new Random().Next(int.MaxValue)
};
@avegaraju
avegaraju / OrdersImposter.cs
Created February 21, 2019 21:56
Imposter for orders endpoint which responds based on a condition.
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();
}
@avegaraju
avegaraju / UpdateProductDimensionsUseCase.fs
Last active December 25, 2018 08:09
Use case to update product dimensions with dependencies injected through the type constructor
type UpdateProductDimensions(dataStore: DataStore)=
//Other private methods removed for brevity
let updateDimensions(productId, height, length, weight, width)=
dataStore.getProduct productId
|> Result.map(fun p-> p.updateDimensions(height, length, weight, width))
|> Result.map dataStore.updateProduct
member this.update (productId, (height,length,weight,width)) =
module DB
open System.Data.Common
open Dapper
open Rows
open Domain
let allProducts(connection: DbConnection) =
let getProductType productType =
open System.Data.SqlClient
[<EntryPoint>]
let main argv =
let getDbConnection() =
let connection = new SqlConnection("a_real_sql_connection_string")
connection.Open()
connection
let getAllProducts() =
[<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")