public void When_StockHas2Elem_Then_ShouldReturnTotalPrice() { //Arrange List <StockElement> listStockElem = new List <StockElement> { new StockElement { Name = "Mere", Currency = "RON", Quantity = 10, PricePerUnit = 2 }, new StockElement { Name = "Pere", Currency = "RON", Quantity = 1, PricePerUnit = 5 } }; var stockProv = new Mock <IStockProvider>(); stockProv.Setup(s => s.GetStock()).Returns(listStockElem); var expectedStockPrice = 25; StockManager.StockManager stockManager = new StockManager.StockManager(stockProv.Object, null); //Act var actualStock = stockManager.CalculateStock(); //Assert actualStock.ShouldBe(expectedStockPrice); }
static void Main(string[] args) { StockManager stockManager = new StockManager(); var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "stock_queue", durable: false, exclusive: false, autoDelete: false, arguments: null); channel.BasicQos(0, 1, false); var consumer = new EventingBasicConsumer(channel); channel.BasicConsume(queue: "stock_queue", autoAck: false, consumer: consumer); Console.WriteLine(" [x] Awaiting RPC requests"); consumer.Received += (model, ea) => { object response = null; var body = ea.Body; var props = ea.BasicProperties; var replyProps = channel.CreateBasicProperties(); replyProps.CorrelationId = props.CorrelationId; try { var message = Encoding.UTF8.GetString(body.ToArray()); response = stockManager.HandleRequest(message); } catch (Exception e) { Console.WriteLine(" [.] " + e.Message); } finally { var responseBytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(response)); channel.BasicPublish(exchange: "", routingKey: props.ReplyTo, basicProperties: replyProps, body: responseBytes); channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false); } }; Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } }
public void When_StockHas2ElemWithDiffCurrency_Then_ShouldConvertTotalPrice() { //Arrange List <StockManager.StockElement> listStockElem = new List <StockElement> { new StockElement { Name = "Mere", Currency = "EUR", Quantity = 10, PricePerUnit = 2 }, new StockElement { Name = "Pere", Currency = "RON", Quantity = 1, PricePerUnit = 5 } }; var stockProv = new Mock <IStockProvider>(); stockProv.Setup(s => s.GetStock()).Returns(listStockElem); var currencyProv = new Mock <ICurrencyConverter>(); currencyProv.Setup(x => x.Convert(It.Is <double>(y => y == 2), "EUR")).Returns(9.5); var expectedStockPrice = 100; StockManager.StockManager stockManager = new StockManager.StockManager(stockProv.Object, currencyProv.Object); //Act var actualStock = stockManager.CalculateStock(); //Assert actualStock.ShouldBe(expectedStockPrice); currencyProv.Verify(x => x.Convert(It.Is <double>(y => y == 2), "EUR"), Times.Once); }
static void Main(string[] args) { var stockManager = new StockManager(); }
static void Main(string[] args) { StockManager Stock = new StockManager(); var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "stock_queue", durable: false, exclusive: false, autoDelete: false, arguments: null); channel.BasicQos(0, 1, false); var consumer = new EventingBasicConsumer(channel); channel.BasicConsume(queue: "stock_queue", autoAck: false, consumer: consumer); Console.WriteLine(" [x] Awaiting RPC requests"); consumer.Received += (model, ea) => { string response = null; var body = ea.Body; var props = ea.BasicProperties; var replyProps = channel.CreateBasicProperties(); replyProps.CorrelationId = props.CorrelationId; try { var message = Encoding.UTF8.GetString(body.ToArray()); string[] messageSplit = message.Split(":"); string type = messageSplit[0]; if (type == "1") { string nomProduit = messageSplit[1]; response = Stock.ReleaseItem(nomProduit); } else { string nomProduit = messageSplit[1]; int quantite = Int32.Parse(messageSplit[2]); response = Stock.ReserveItem(quantite, nomProduit); } } catch (Exception e) { Console.WriteLine(" [.] " + e.Message); response = ""; } finally { var responseBytes = Encoding.UTF8.GetBytes(response); channel.BasicPublish(exchange: "", routingKey: props.ReplyTo, basicProperties: replyProps, body: responseBytes); channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false); } }; Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); } }