public void DeleteAsyncTest( string testCaseName, string criteriaJson, string expectedResultJson) { // Arguments are serialized so that test cases show as individual tests in Test Explorer var criteria = JsonConvert.DeserializeObject <Criteria <IEnumerable <string> > >(criteriaJson); var expectedResult = JsonConvert.DeserializeObject <Result <EmptyModel> >(expectedResultJson); // Arrange IRepository <DataPoint> repository = Substitute.For <IRepository <DataPoint> >(); for (int i = 0; i < DefaultDataPoints.Length - 1; i++) { repository.DeleteAsync(DefaultDataPoints[i].Id).Returns(true); repository.GetAsync(DefaultDataPoints[i].Id).Returns(DefaultDataPoints[i]); } repository.DeleteAsync(DefaultDataPoints[DefaultDataPoints.Length - 1].Id).Returns(false); repository.DeleteAsync(InvalidId).Returns(false); repository.GetAsync(DefaultDataPoints[DefaultDataPoints.Length - 1].Id).Returns(DefaultDataPoints[DefaultDataPoints.Length - 1]); repository.GetAsync(InvalidId).Returns(null as DataPoint); var manager = new DataPointManager(repository); // Act var task = manager.DeleteAsync(criteria); task.Wait(); var result = task.Result; // Assert Assert.Equal(expectedResult.Message, result.Message); Assert.Equal(expectedResult.Success, result.Success); }
// api/myurl/push [ { name='asdf', value=1.1}, {name='xyz', value=-3} ] public string Push([FromUri] string slug, [FromBody] List <VariableDataPush> data) { if (string.IsNullOrEmpty(slug)) { throw new Exception("URL must be in format: /api/{slug}/push"); } if (data == null || !data.Any()) { throw new Exception("No data points found. Try: using contentType:'application/json; charset=utf-8', and request body '[{name:\"x\", value:\"1\"}]' "); } var manager = new DataPointManager(); foreach (var p in data) { var duplicates = data.Where(x => x.name == p.name); if (duplicates.Count() > 1) { throw new Exception("Multiple values for single variable name [" + p.name + "]"); } manager.AddRawDataPoint(slug, p); } return(""); }
public void UpsertAsyncTest( string testCaseName, string criteriaJson, string expectedResultJson) { // Arguments are serialized so that test cases show as individual tests in the xUnit Test Explorer var criteria = JsonConvert.DeserializeObject <Criteria <IEnumerable <DataPoint> > >(criteriaJson); var expectedResult = JsonConvert.DeserializeObject <Result <List <DataPoint> > >(expectedResultJson); // Arrange IRepository <DataPoint> repository = Substitute.For <IRepository <DataPoint> >(); repository.GetAsync(NewDataPoint.Id).Returns(null as DataPoint); repository.GetAsync(ValidModifiedDataPoint.Id).Returns(DefaultDataPoints[0]); repository.GetAsync(InvalidModifiedDataPoint.Id).Returns(DefaultDataPoints[1]); var correctedArg = Arg.Is <DataPoint>(d => d.Id == InvalidModifiedDataPoint.Id && d.CategoryId == CorrectedModifiedDataPoint.CategoryId && d.Stamp == InvalidModifiedDataPoint.Stamp && d.Value == InvalidModifiedDataPoint.Value); repository.UpsertAsync(correctedArg).Returns(CorrectedModifiedDataPoint); repository.UpsertAsync(Arg.Is <DataPoint>(d => d.Id == DefaultDataPoints[2].Id)).Returns(null as DataPoint); repository.UpsertAsync(Arg.Is <DataPoint>(d => d.Id == ValidModifiedDataPoint.Id)).Returns(ValidModifiedDataPoint); var manager = new DataPointManager(repository); // Act var task = manager.UpsertAsync(criteria); task.Wait(); var result = task.Result; // Assert Assert.True(result.Message.StartsWith(expectedResult.Message)); // StartsWith used to cover long validation messages Assert.Equal(expectedResult.Success, result.Success); Assert.True(DataPointsAreEqual(result.Value, expectedResult.Value)); }
public ActionResult Index(string slug) { var acct = new DataPointManager().GetOrCreateAccount(slug); return(View(acct)); }