public void A_default_result_range_should_be_used_when_one_is_not_specified(int max, int expected) { using (var server = TestServer.Create <TestStartup>()) { Storage.DocumentStore.Conventions.DefaultQueryingConsistency = ConsistencyOptions.AlwaysWaitForNonStaleResultsAsOfLastWrite; var fixture = AutofixtureHelpers.CreateFixture(); var metatypes = fixture.Build <MetaType>().Without(type => type.Id).CreateMany(max); using (var session = Storage.GetAsyncSession()) { foreach (var metatype in metatypes) { session.StoreAsync(metatype).Wait(); } session.SaveChangesAsync().Wait(); } var response = server.CreateRequest("api/metatypes").AddHeader("Content-Type", "application/json").GetAsync().Result; var content = response.Content.ReadAsStringAsync().Result; var result = JsonConvert.DeserializeObject <MetaType[]>(content, this.JsonSerializerSettings); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.IsType <MetaType[]>(result); Assert.Equal(result.Length, expected); } }
protected virtual Model[] CreateModels(MetaType metaType, int max) { var fixture = AutofixtureHelpers.CreateFixture(); var models = fixture.Build <Model>() .Without(m => m.Id) .With (model => model._shurikenMeta, new Model.MetaData { MetaTypeId = metaType.Id, MetaTypeName = metaType.Name, MetaTypeDisplayName = metaType.DisplayName, CreatedOn = DateTime.UtcNow, LastModified = DateTime.UtcNow }) .CreateMany(max) .ToArray(); using (var session = Storage.GetAsyncSession()) { foreach (var model in models) { model.SaveAsync(model._shurikenMeta.MetaTypeName, session).Wait(); } session.SaveChangesAsync().Wait(); } return(models); }
public void Should_be_able_to_delete_multiples_MetaTypes_by_Ids() { using (var server = TestServer.Create <TestStartup>()) { // arrange var fixture = AutofixtureHelpers.CreateFixture(); var metaTypes = fixture.Build <MetaType>().Without(type => type.Id).CreateMany().ToArray(); using (var session = Storage.GetAsyncSession()) { foreach (var metaType in metaTypes) { session.StoreAsync(metaType).Wait(); } session.SaveChangesAsync().Wait(); } // act var queryStringParams = string.Join("&", metaTypes.Select(type => string.Format("ids[]={0}", type.Id))); var response = server.CreateRequest("api/metatypes?{0}".FormatString(queryStringParams)).SendAsync("DELETE").Result; // verify Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); using (var session = Storage.GetAsyncSession()) { var fromDb = session.LoadAsync <MetaType>(metaTypes.Select(type => type.Id).ToArray()).Result; Assert.All(fromDb, Assert.Null); } } }
public void Specifying_a_single_id_should_return_a_collection_with_the_single_requested_MetaType() { using (var server = TestServer.Create <TestStartup>()) { // arrange Storage.DocumentStore.Conventions.DefaultQueryingConsistency = ConsistencyOptions.AlwaysWaitForNonStaleResultsAsOfLastWrite; var fixture = AutofixtureHelpers.CreateFixture(); var metatypes = fixture.Build <MetaType>().Without(type => type.Id).CreateMany(10).ToArray(); using (var session = Storage.GetAsyncSession()) { foreach (var metatype in metatypes) { session.StoreAsync(metatype).Wait(); } session.SaveChangesAsync().Wait(); } var subject = metatypes.First(); // act var response = server.CreateRequest("api/metatypes?ids[]={0}".FormatString(subject.Id)) .AddHeader("Content-Type", "application/json") .GetAsync() .Result; var content = response.Content.ReadAsStringAsync().Result; var result = JsonConvert.DeserializeObject <MetaType[]>(content, this.JsonSerializerSettings); // verify Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.IsType <MetaType[]>(result); Assert.Single(result); Assert.Equal(subject.Id, result.First().Id); } }
public void Should_not_be_able_rename_an_existing_MetaType() { using (var server = TestServer.Create <TestStartup>()) { // arrange var fixture = AutofixtureHelpers.CreateFixture(); var metaType = fixture.Build <MetaType>().Without(type => type.Id).Create(); using (var session = Storage.GetAsyncSession()) { session.StoreAsync(metaType).Wait(); session.SaveChangesAsync().Wait(); } metaType.Name = "Renamed"; // act var json = JsonConvert.SerializeObject(metaType, this.JsonSerializerSettings); var response = server.CreateRequest("api/metatypes") .And(message => message.Content = new StringContent(json, Encoding.UTF8, "application/json")) .SendAsync("PUT") .Result; // verify var result = JsonConvert.DeserializeObject <ApiError>(response.Content.ReadAsStringAsync().Result); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); Assert.Equal(ApiErrorCode.CannotRenameMetaType, result.ErrorCode); } }
public void Should_be_able_to_add_a_new_field_to_an_existing_MetaType(string newFieldName) { using (var server = TestServer.Create <TestStartup>()) { // arrange var fixture = AutofixtureHelpers.CreateFixture(); var metaType = fixture.Build <MetaType>().Without(type => type.Id).Create(); Assert.DoesNotContain(metaType.Fields, field => field.Name == newFieldName); using (var session = Storage.GetAsyncSession()) { session.StoreAsync(metaType).Wait(); session.SaveChangesAsync().Wait(); } // act metaType.Fields.Add(new BooleanField { Name = newFieldName }); var json = JsonConvert.SerializeObject(metaType, this.JsonSerializerSettings); var response = server.CreateRequest("api/metatypes") .And(message => message.Content = new StringContent(json, Encoding.UTF8, "application/json")) .SendAsync("PUT") .Result; // verify Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); using (var session = Storage.GetAsyncSession()) { var updatedMetaType = session.LoadAsync <MetaType>(metaType.Id).Result; Assert.Contains(updatedMetaType.Fields, field => field.Name == newFieldName); } } }
public void Should_not_be_able_to_add_duplicate_fields_top_level_or_to_objects_nested_N_levels_deep(int n) { using (var server = TestServer.Create <TestStartup>()) { // arrange var fixture = AutofixtureHelpers.CreateFixture(); var metaType = fixture.Build <MetaType>().Without(type => type.Id).Create(); using (var session = Storage.GetAsyncSession()) { session.StoreAsync(metaType).Wait(); session.SaveChangesAsync().Wait(); } var i = 0; var fields = metaType.Fields; while (i < n) { var obj = new ArbitraryObjectField { Name = "obj{0}".FormatString(i) }; obj.Fields.Add(new BooleanField { Name = "someField" }); fields.Add(obj); fields = obj.Fields; if (i == n - 1) { fields.Add(new BooleanField { Name = "Field1" }); fields.Add(new BooleanField { Name = "field1" }); } i++; } // act var json = JsonConvert.SerializeObject(metaType, this.JsonSerializerSettings); var response = server.CreateRequest("api/metatypes") .And(message => message.Content = new StringContent(json, Encoding.UTF8, "application/json")) .SendAsync("PUT") .Result; // verify var result = JsonConvert.DeserializeObject <ApiError>(response.Content.ReadAsStringAsync().Result); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); Assert.Equal(ApiErrorCode.DuplicateFieldName, result.ErrorCode); } }
public void Should_be_able_to_delete_a_single_MetaType_by_Id() { using (var server = TestServer.Create <TestStartup>()) { // arrange var fixture = AutofixtureHelpers.CreateFixture(); var metaType = fixture.Build <MetaType>().Without(type => type.Id).Create(); using (var session = Storage.GetAsyncSession()) { session.StoreAsync(metaType).Wait(); session.SaveChangesAsync().Wait(); } // act var response = server.CreateRequest("api/metatypes?ids[]={0}".FormatString(metaType.Id)).SendAsync("DELETE").Result; // verify Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); using (var session = Storage.GetAsyncSession()) { var fromDb = session.LoadAsync <MetaType>(metaType.Id).Result; Assert.Null(fromDb); } } }
public void Specifying_multiple_ids_should_return_a_collection_with_the_requested_MetaTypes_only(int take, int max) { using (var server = TestServer.Create <TestStartup>()) { Storage.DocumentStore.Conventions.DefaultQueryingConsistency = ConsistencyOptions.AlwaysWaitForNonStaleResultsAsOfLastWrite; var fixture = AutofixtureHelpers.CreateFixture(); var metatypes = fixture.Build <MetaType>().Without(type => type.Id).CreateMany(max).ToArray(); using (var session = Storage.GetAsyncSession()) { foreach (var metatype in metatypes) { session.StoreAsync(metatype).Wait(); } session.SaveChangesAsync().Wait(); } var subjects = metatypes.Take(take).ToArray(); var queryStringParams = string.Join("&", subjects.Select(type => string.Format("ids[]={0}", type.Id))); var response = server.CreateRequest("api/metatypes?{0}".FormatString(queryStringParams)) .AddHeader("Content-Type", "application/json") .GetAsync() .Result; var content = response.Content.ReadAsStringAsync().Result; var result = JsonConvert.DeserializeObject <MetaType[]>(content, this.JsonSerializerSettings); var requestedIds = subjects.Select(type => type.Id).ToArray(); var receivedIds = result.Select(type => type.Id).ToArray(); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.IsType <MetaType[]>(result); Assert.Equal(take, result.Length); Assert.True(requestedIds.SequenceEqual(receivedIds)); } }
public void Updated_Field_Names_should_be_alphanumeric_strings_with_no_spaces_and_less_than_151_characters(string fieldName) { using (var server = TestServer.Create <TestStartup>()) { // arrange var fixture = AutofixtureHelpers.CreateFixture(); var metaType = fixture.Build <MetaType>().Without(type => type.Id).Create(); using (var session = Storage.GetAsyncSession()) { session.StoreAsync(metaType).Wait(); session.SaveChangesAsync().Wait(); } // act metaType.Fields.Add(new BooleanField { Name = fieldName }); var json = JsonConvert.SerializeObject(metaType, this.JsonSerializerSettings); var response = server.CreateRequest("api/metatypes") .And(message => message.Content = new StringContent(json, Encoding.UTF8, "application/json")) .SendAsync("PUT") .Result; // verify Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); var result = JsonConvert.DeserializeObject <ApiError>(response.Content.ReadAsStringAsync().Result); Assert.Equal(ApiErrorCode.InvalidFieldName, result.ErrorCode); using (var session = Storage.GetAsyncSession()) { var updatedMetaType = session.LoadAsync <MetaType>(metaType.Id).Result; Assert.DoesNotContain(updatedMetaType.Fields, field => field.Name == fieldName); } } }
private static BackupController GetBackupController(IFixture fixture) { return(AutofixtureHelpers.GetMockedApiController <BackupController>(fixture)); }