Skip to content

Commit

Permalink
[ADMINAPI-1032] ODS Instances without InstanceType (#137)
Browse files Browse the repository at this point in the history
* Set InstanceType property as nullable in OdsInstance

* Add unit test cases to validate if instanceType empty can be saved in OdsInstance

* Fix E2E tests
  • Loading branch information
jagudelo-gap authored Aug 9, 2024
1 parent eb131be commit 5928264
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,31 @@ public void ShouldAddOdsInstance()
profile.ConnectionString.ShouldBe(odsInstanceConnectionString);
});
}

[Test]
public void ShouldAddOdsInstanceWithEmptyInstanceType()
{
var odsInstanceName = $"Test-OdsInstance{Guid.NewGuid()}";
var odsInstanceConnectionString = "ConnectionString";
var newOdsInstance = new Mock<IAddOdsInstanceModel>();
newOdsInstance.Setup(x => x.Name).Returns(odsInstanceName);
newOdsInstance.Setup(x => x.ConnectionString).Returns(odsInstanceConnectionString);


var id = 0;
Transaction(usersContext =>
{
var command = new AddOdsInstanceCommand(usersContext);
id = command.Execute(newOdsInstance.Object).OdsInstanceId;
id.ShouldBeGreaterThan(0);
});

Transaction(usersContext =>
{
var profile = usersContext.OdsInstances.Single(v => v.OdsInstanceId == id);
profile.Name.ShouldBe(odsInstanceName);
profile.InstanceType.ShouldBeEmpty();
profile.ConnectionString.ShouldBe(odsInstanceConnectionString);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,30 @@ public void ShouldEditOdsInstance()
changedOdsInstance.InstanceType.ShouldBe(instanceType);
changedOdsInstance.ConnectionString.ShouldBe(connectionString);
});
}

[Test]
public void ShouldEditOdsInstanceWithEmptyInstanceType()
{
var name = "new odsinstance name";
var connectionString = "new odsinstance connection string";
var newOdsInstanceData = new Mock<IEditOdsInstanceModel>();
newOdsInstanceData.Setup(v => v.Id).Returns(_odsInstanceId);
newOdsInstanceData.Setup(v => v.Name).Returns(name);
newOdsInstanceData.Setup(v => v.ConnectionString).Returns(connectionString);

Transaction(usersContext =>
{
var editOdsInstanceCommand = new EditOdsInstanceCommand(usersContext);
editOdsInstanceCommand.Execute(newOdsInstanceData.Object);
});

Transaction(usersContext =>
{
var changedOdsInstance = usersContext.OdsInstances.Single(v => v.OdsInstanceId == _odsInstanceId);
changedOdsInstance.Name.ShouldBe(name);
changedOdsInstance.InstanceType.ShouldBeEmpty();
changedOdsInstance.ConnectionString.ShouldBe(connectionString);
});
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"info": {
"_postman_id": "d5aa928a-f34a-442b-ab54-9292875dc37a",
"_postman_id": "44f88975-fd52-41b3-b16e-291f1dd218d1",
"name": "Admin API E2E 2.0 - OdsInstances",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
Expand Down Expand Up @@ -105,13 +105,11 @@
"\r",
"pm.test(\"POST OdsInstances Invalid: Response errors include messages by property\", function () {\r",
" pm.expect(response.errors[\"Name\"].length).to.equal(1);\r",
" pm.expect(response.errors[\"InstanceType\"].length).to.equal(1);\r",
" pm.expect(response.errors[\"ConnectionString\"].length).to.equal(1);\r",
"});\r",
"\r",
"pm.test(\"POST OdsInstances Invalid: Response errors include messages with wrong elements\", function () {\r",
" pm.expect(response.errors[\"Name\"][0]).to.contain(\"'Name' must not be empty\");\r",
" pm.expect(response.errors[\"InstanceType\"][0]).to.contain(\"'Instance Type' must not be empty\");\r",
" pm.expect(response.errors[\"ConnectionString\"][0]).to.contain(\"'Connection String' must not be empty\");\r",
"});"
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public class AddOdsInstanceRequest : IAddOdsInstanceModel
{
[SwaggerSchema(Description = FeatureConstants.OdsInstanceName, Nullable = false)]
public string? Name { get; set; }
[SwaggerSchema(Description = FeatureConstants.OdsInstanceInstanceType, Nullable = false)]
[SwaggerSchema(Description = FeatureConstants.OdsInstanceInstanceType, Nullable = true)]
public string? InstanceType { get; set; }
[SwaggerSchema(Description = FeatureConstants.OdsInstanceConnectionString, Nullable = false)]
public string? ConnectionString { get; set; }
Expand All @@ -60,7 +60,9 @@ public Validator(IGetOdsInstancesQuery getOdsInstancesQuery, IOptions<AppSetting
.Must(BeAUniqueName)
.WithMessage(FeatureConstants.OdsInstanceAlreadyExistsMessage);

RuleFor(m => m.InstanceType).NotEmpty();
RuleFor(m => m.InstanceType)
.MaximumLength(100)
.When(m => !string.IsNullOrEmpty(m.InstanceType));

RuleFor(m => m.ConnectionString)
.NotEmpty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public class EditOdsInstanceRequest : IEditOdsInstanceModel
{
[SwaggerSchema(Description = FeatureConstants.OdsInstanceName, Nullable = false)]
public string? Name { get; set; }
[SwaggerSchema(Description = FeatureConstants.OdsInstanceInstanceType, Nullable = false)]
[SwaggerSchema(Description = FeatureConstants.OdsInstanceInstanceType, Nullable = true)]
public string? InstanceType { get; set; }
[SwaggerSchema(Description = FeatureConstants.OdsInstanceConnectionString, Nullable = true)]
public string? ConnectionString { get; set; }
Expand All @@ -67,7 +67,9 @@ public Validator(IGetOdsInstancesQuery getOdsInstancesQuery, IGetOdsInstanceQuer
.WithMessage(FeatureConstants.ClaimSetAlreadyExistsMessage)
.When(m => BeAnExistingOdsInstance(m.Id) && NameIsChanged(m));

RuleFor(m => m.InstanceType).NotEmpty();
RuleFor(m => m.InstanceType)
.MaximumLength(100)
.When(m => !string.IsNullOrEmpty(m.InstanceType));

RuleFor(m => m.ConnectionString)
.Must(BeAValidConnectionString)
Expand Down

0 comments on commit 5928264

Please sign in to comment.