public void TestRetrieve_Fail() { Mock <IDynamoDBContext> context = new Mock <IDynamoDBContext>(); context.Setup(D => D.LoadAsync <WeighInWeight>(It.IsAny <string>(), It.IsAny <DateTime?>(), It.IsAny <CancellationToken>())).Returns((string a, DateTime? b, object c) => { throw new Exception("Test Exception"); }); context.Setup(D => D.LoadAsync <WeighInUser>(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>())).Returns((string a, string b, object c) => { WeighInUser user = new WeighInUser() { UserId = a, FirstName = b, UserKey = "UnitTestKey", StartingWeight = 88.8m, StartingWeightDate = new DateTime(2018, 7, 16) }; return(Task.FromResult <WeighInUser>(user)); }); TestAwsFactory factory = new TestAwsFactory() { DynamoDBContext = context.Object }; using (GetWeight getWeight = new GetWeight(factory)) { WeighInException wEx = Assert.Throws <WeighInException>(() => getWeight.Retrieve("UnitTestId", "Unit", new DateTime(2018, 7, 16))); Assert.That(wEx.Message, Is.EqualTo("Test Exception")); } }
public string Retrieve(string userId, string firstName, DateTime weightDate) { try { using (IDynamoDBContext context = Factory.DynamoDBContext) { WeighInUser user = context.LoadAsync <WeighInUser>(userId, firstName).Result; if (user == null) { throw new WeighInException($"User \"{userId},{firstName}\" not found"); } WeighInWeight weight = context.LoadAsync <WeighInWeight>(user.UserKey, weightDate).Result; return(JsonConvert.SerializeObject(weight)); } } catch (Exception ex) { Factory.Logger.Log($"Error getting WeighInWeight with userId=\"{userId}\" and firstName=\"{firstName}\" and weightDate=\"{weightDate}\""); Factory.Logger.Log(ex.Message); Factory.Logger.Log(ex.StackTrace); throw new WeighInException(ex.Message); } }
public void TestRetrieve_Success() { string actualUserKey = string.Empty; DateTime?actualWeightDate = null; Mock <IDynamoDBContext> context = new Mock <IDynamoDBContext>(); context.Setup(D => D.LoadAsync <WeighInWeight>(It.IsAny <string>(), It.IsAny <DateTime?>(), It.IsAny <CancellationToken>())).Returns((string a, DateTime b, object c) => { actualUserKey = a; actualWeightDate = b; WeighInWeight weight = new WeighInWeight() { UserKey = a, WeightDate = b, Weight = 88.8m }; return(Task.FromResult <WeighInWeight>(weight)); }); context.Setup(D => D.LoadAsync <WeighInUser>(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>())).Returns((string a, string b, object c) => { WeighInUser user = new WeighInUser() { UserId = a, FirstName = b, UserKey = "UnitTestKey", StartingWeight = 88.8m, StartingWeightDate = new DateTime(2018, 7, 16) }; return(Task.FromResult <WeighInUser>(user)); }); TestAwsFactory factory = new TestAwsFactory() { DynamoDBContext = context.Object }; using (GetWeight getWeight = new GetWeight(factory)) { string jsonResult = getWeight.Retrieve("UnitTestId", "Unit", new DateTime(2018, 7, 16)); Console.WriteLine(jsonResult); Assert.That(actualUserKey, Is.EqualTo("UnitTestKey"), "actualUserKey"); Assert.That(actualWeightDate, Is.EqualTo(new DateTime(2018, 7, 16)), "actualWeightDate"); dynamic user = JObject.Parse(jsonResult); Assert.That((string)user.UserKey, Is.EqualTo("UnitTestKey"), "UserKey"); Assert.That((DateTime)user.WeightDate, Is.EqualTo(new DateTime(2018, 7, 16)), "WeightDate"); Assert.That((decimal)user.Weight, Is.EqualTo(88.8m), "Weight"); } }
public void TestSave() { WeighInUser actualUser = null; Mock <IDynamoDBContext> context = new Mock <IDynamoDBContext>(); context.Setup(C => C.SaveAsync <WeighInUser>(It.IsAny <WeighInUser>(), It.IsAny <CancellationToken>())).Returns((WeighInUser user, object t) => { actualUser = user; return(Task.CompletedTask); }); TestAwsFactory factory = new TestAwsFactory() { DynamoDBContext = context.Object }; WeighInUser testUser = new WeighInUser() { UserId = "TestUserId", FirstName = "Unit", StartingWeight = 88.8m, StartingWeightDate = new DateTime(2018, 7, 16) }; string testUserJson = JsonConvert.SerializeObject(testUser); using (PostUser postUser = new PostUser(factory)) { string userOutputJson = postUser.Save(testUserJson); Assert.That(actualUser, Is.Not.Null, "actualUser"); Assert.That(actualUser.UserId, Is.EqualTo("TestUserId"), "actualUserId"); Assert.That(actualUser.FirstName, Is.EqualTo("Unit"), "actualFirstName"); Assert.That(actualUser.StartingWeight, Is.EqualTo(88.8m), "actualStartingWeight"); Assert.That(actualUser.StartingWeightDate, Is.EqualTo(new DateTime(2018, 7, 16)), "actualStartingWeightDate"); Assert.That(actualUser.UserKey, Is.Not.Null.And.Not.Empty, "actualUserKey"); dynamic user = JObject.Parse(userOutputJson); Assert.That((string)user.UserId, Is.EqualTo("TestUserId"), "UserId"); Assert.That((string)user.FirstName, Is.EqualTo("Unit"), "FirstName"); Assert.That((decimal)user.StartingWeight, Is.EqualTo(88.8m), "StartingWeight"); Assert.That((DateTime)user.StartingWeightDate, Is.EqualTo(new DateTime(2018, 7, 16)), "StartingWeightDate"); Assert.That((string)user.UserKey, Is.Not.Null.And.Not.Empty, "UserKey"); } }
public string Save(string userJson) { try { WeighInUser user = JsonConvert.DeserializeObject <WeighInUser>(userJson); Factory.Logger.Log($"User \"{user.UserId},{user.FirstName}\" deserialized"); if (string.IsNullOrEmpty(user.UserKey)) { Factory.Logger.Log($"User does not have a user key"); user.UserKey = Guid.NewGuid().ToString(); } Factory.Logger.Log($"Using User ID: {user.UserId}"); Factory.Logger.Log($"Using Firstname: {user.FirstName}"); Factory.Logger.Log($"Using User Key: {user.UserKey}"); Factory.Logger.Log($"Using Weight Date: {user.StartingWeightDate}"); Factory.Logger.Log($"Using Weight: {user.StartingWeight}"); user.LastUseDateTime = DateTimeHelper.SydneyNow; Factory.Logger.Log($"Using Weight Date: {user.LastUseDateTime}"); user.LastUseDateTime = DateTime.Now; using (IDynamoDBContext context = Factory.DynamoDBContext) { Factory.Logger.Log($"Saving user \"{user.UserId},{user.FirstName}\""); Task t = context.SaveAsync <WeighInUser>(user); t.Wait(); if (t.Status == TaskStatus.Faulted) { throw t.Exception; } Factory.Logger.Log($"User saved \"{user.UserId},{user.FirstName}\""); } return(JsonConvert.SerializeObject(user)); } catch (Exception ex) { Factory.Logger.Log($"Error saving WeighInUser with json=\"{userJson}\""); Factory.Logger.Log(ex.Message); Factory.Logger.Log(ex.StackTrace); throw new WeighInException(ex.Message); } }
public void TestSave() { WeighInWeight actualWeight = null; Mock <IDynamoDBContext> context = new Mock <IDynamoDBContext>(); context.Setup(C => C.SaveAsync <WeighInWeight>(It.IsAny <WeighInWeight>(), It.IsAny <CancellationToken>())).Returns((WeighInWeight weight, object t) => { actualWeight = weight; return(Task.CompletedTask); }); context.Setup(D => D.LoadAsync <WeighInUser>(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>())).Returns((string a, string b, object c) => { WeighInUser user = new WeighInUser() { UserId = a, FirstName = b, UserKey = "UnitTestKey", StartingWeight = 88.8m, StartingWeightDate = new DateTime(2018, 7, 16) }; return(Task.FromResult <WeighInUser>(user)); }); TestAwsFactory factory = new TestAwsFactory() { DynamoDBContext = context.Object }; using (PostWeight postWeight = new PostWeight(factory)) { string weightOutputJson = postWeight.Save("UnitTestId", "Unit", DateTime.Today, 78.8m); Assert.That(actualWeight, Is.Not.Null, "actualUser"); Assert.That(actualWeight.UserKey, Is.Not.Null.And.Not.Empty, "actualUserKey"); Assert.That(actualWeight.Weight, Is.EqualTo(78.8m), "actualWeight"); Assert.That(actualWeight.WeightDate, Is.EqualTo(DateTime.Today), "actualWeightDate"); dynamic weight = JObject.Parse(weightOutputJson); Assert.That((string)weight.UserKey, Is.Not.Null.And.Not.Empty, "UserKey"); Assert.That((decimal)weight.Weight, Is.EqualTo(78.8m), "StartingWeight"); Assert.That((DateTime)weight.WeightDate, Is.EqualTo(DateTime.Today), "StartingWeightDate"); } }
public string Save(string userId, string firstName, DateTime weightDate, decimal weight) { try { Factory.Logger.Log($"Using User Id: {userId}"); Factory.Logger.Log($"Using Weight Date: {weightDate}"); Factory.Logger.Log($"Using Weight: {weight}"); using (IDynamoDBContext context = Factory.DynamoDBContext) { WeighInUser user = context.LoadAsync <WeighInUser>(userId, firstName).Result; if (user == null) { throw new WeighInException($"User \"{userId},{firstName}\" not found"); } Factory.Logger.Log($"Saving weight for \"{user.UserKey}\""); WeighInWeight weighInWeight = new WeighInWeight() { UserKey = user.UserKey, WeightDate = weightDate, Weight = weight }; Task t = context.SaveAsync <WeighInWeight>(weighInWeight); t.Wait(); if (t.Status == TaskStatus.Faulted) { throw t.Exception; } Factory.Logger.Log($"Weight saved for \"{user.UserKey}\""); return(JsonConvert.SerializeObject(weighInWeight)); } } catch (Exception ex) { Factory.Logger.Log($"Error saving WeighInWeight with userId=\"{userId}\" and firstName=\"{firstName}\" and weightDate=\"{weightDate}\""); Factory.Logger.Log(ex.Message); Factory.Logger.Log(ex.StackTrace); throw new WeighInException(ex.Message); } }
public string Retrieve(string userId, string firstName) { try { using (IDynamoDBContext context = Factory.DynamoDBContext) { WeighInUser user; if (string.IsNullOrEmpty(firstName)) { List <WeighInUser> users = context.QueryAsync <WeighInUser>(userId).GetRemainingAsync().Result.ToList(); if (!users.Any()) { user = null; } else { user = users.OrderByDescending(W => W.LastUseDateTime).FirstOrDefault(); } } else { user = context.LoadAsync <WeighInUser>(userId, firstName).Result; } if (user == null) { user = new WeighInUser() { UserId = userId, FirstName = firstName }; } return(JsonConvert.SerializeObject(user)); } } catch (Exception ex) { Factory.Logger.Log($"Error getting WeighInUser with userId=\"{userId}\" and firstName=\"{firstName}\""); Factory.Logger.Log(ex.Message); Factory.Logger.Log(ex.StackTrace); throw new WeighInException(ex.Message); } }
protected IAwsFactory GetAwsFactory() { Mock <AsyncSearch <WeighInWeight> > searchResults1 = new Mock <AsyncSearch <WeighInWeight> >(); searchResults1.Setup(r => r.GetRemainingAsync(It.IsAny <CancellationToken>())).Returns(() => { List <WeighInWeight> weights = new List <WeighInWeight>() { new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today, Weight = 107.7m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-1), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-2), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-3), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-4), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-5), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-6), Weight = 108.3m } }; return(Task.FromResult <List <WeighInWeight> >(weights)); }); Mock <AsyncSearch <WeighInWeight> > searchResults2 = new Mock <AsyncSearch <WeighInWeight> >(); searchResults2.Setup(r => r.GetRemainingAsync(It.IsAny <CancellationToken>())).Returns(() => { List <WeighInWeight> weights = new List <WeighInWeight>() { new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-7), Weight = 107.7m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-8), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-9), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-10), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-11), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-12), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-13), Weight = 108.3m } }; return(Task.FromResult <List <WeighInWeight> >(weights)); }); Mock <AsyncSearch <WeighInWeight> > searchResults3 = new Mock <AsyncSearch <WeighInWeight> >(); searchResults3.Setup(r => r.GetRemainingAsync(It.IsAny <CancellationToken>())).Returns(() => { List <WeighInWeight> weights = new List <WeighInWeight>() { new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-14), Weight = 107.7m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-15), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-16), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-17), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-18), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-19), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-20), Weight = 108.3m } }; return(Task.FromResult <List <WeighInWeight> >(weights)); }); Mock <AsyncSearch <WeighInWeight> > searchResults4 = new Mock <AsyncSearch <WeighInWeight> >(); searchResults4.Setup(r => r.GetRemainingAsync(It.IsAny <CancellationToken>())).Returns(() => { List <WeighInWeight> weights = new List <WeighInWeight>() { new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-21), Weight = 107.7m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-22), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-23), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-24), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-25), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-26), Weight = 108.3m }, new WeighInWeight() { UserKey = "TestUserKey", WeightDate = DateTime.Today.AddDays(-27), Weight = 108.3m } }; return(Task.FromResult <List <WeighInWeight> >(weights)); }); Queue <AsyncSearch <WeighInWeight> > weightQueue = new Queue <AsyncSearch <WeighInWeight> >(new List <AsyncSearch <WeighInWeight> >() { searchResults1.Object, searchResults2.Object, searchResults3.Object, searchResults4.Object }); int CurrentWeek = 0; Mock <IDynamoDBContext> context = new Mock <IDynamoDBContext>(); context.Setup(C => C.QueryAsync <WeighInWeight>(It.IsAny <string>(), It.IsAny <QueryOperator>(), It.IsAny <IEnumerable <object> >(), It.IsAny <DynamoDBOperationConfig>())).Returns((string key, QueryOperator op, IEnumerable <object> param, DynamoDBOperationConfig config) => { CurrentWeek++; Week week = new Week() { StartDate = (DateTime)param.ElementAt(0), EndDate = (DateTime)param.ElementAt(1) }; Weeks.Add(CurrentWeek, week); return(weightQueue.Dequeue()); }); context.Setup(D => D.LoadAsync <WeighInUser>(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>())).Returns((string a, string b, object c) => { ActualUserId = a; ActualFirstName = b; WeighInUser user = new WeighInUser() { UserId = a, FirstName = b, UserKey = "TestKey", StartingWeight = 88.8m, StartingWeightDate = new DateTime(2018, 7, 16) }; return(Task.FromResult <WeighInUser>(user)); }); TestAwsFactory factory = new TestAwsFactory() { DynamoDBContext = context.Object }; return(factory); }