public void GetPlanByAny_Existing_Plan_Succeeds()
        {
            // Arrange
            Guid     planUId = Guid.NewGuid();
            PlanItem plan    = new PlanItem()
            {
                UId           = planUId,
                Name          = _planPrefix + planUId,
                UniqueName    = _planPrefix + planUId,
                PlanFileIsUri = false,
                IsActive      = false
            };
            DynamoDbDal dal = new DynamoDbDal
            {
                PlanTable = _planTable
            };

            // Act
            dal.UpsertPlan(plan);
            var retPlans = dal.GetPlanByAny(plan.UId, null, null, null, null, null, null, null, null, null);

            // Assert
            Assert.IsTrue(retPlans.Count > 0);
            foreach (PlanItem p in retPlans)
            {
                Assert.AreEqual(p.UId, plan.UId);
                Assert.AreEqual(p.Name, plan.Name);
                Assert.AreEqual(p.IsActive, plan.IsActive);
                Assert.AreEqual(p.PlanFileIsUri, plan.PlanFileIsUri);
            }
        }
        public void GetPlanByAny_No_Filter_Condition_Throws_Exception()
        {
            // Arrange
            DynamoDbDal dal = new DynamoDbDal
            {
                PlanTable = _planTable
            };

            // Act
            Exception ex = Assert.Throws <Exception>(() => dal.GetPlanByAny(null, null, null, null, null, null, null, null, null, null));

            // Assert
            StringAssert.AreEqualIgnoringCase("At least one filter condition must be specified.", ex.Message);
        }
        public void GetPlanByAny_Non_Existent_Plan_Throws_Exception()
        {
            // Arrange
            Guid planUId = Guid.NewGuid();

            DynamoDbDal dal = new DynamoDbDal
            {
                PlanTable = _planTable
            };

            // Act
            Exception ex = Assert.Throws <Exception>(() => dal.GetPlanByAny(planUId, null, null, null, null, null, null, null, null, null));

            // Assert
            StringAssert.AreEqualIgnoringCase("Plan cannot be found.", ex.Message);
        }
        public void GetPlanByAny_Null_Plan_Table_Throws_Exception()
        {
            // Arrange
            Guid planUId = Guid.Empty;

            DynamoDbDal dal = new DynamoDbDal
            {
                PlanTable = ""
            };

            // Act
            Exception ex = Assert.Throws <Exception>(() => dal.GetPlanByAny(planUId, null, null, null, null, null, null, null, null, null));

            // Assert
            StringAssert.AreEqualIgnoringCase("Plan table name must be specified.", ex.Message);
        }
        public void GetPlanByAny_Non_Existent_Table_Throws_Exception()
        {
            // Arrange
            Guid planUId = Guid.NewGuid();

            DynamoDbDal dal = new DynamoDbDal
            {
                PlanTable = "XXXXXX"
            };

            // Act
            // Assert
            ResourceNotFoundException ex = Assert.Throws <ResourceNotFoundException>(() => dal.GetPlanByAny(planUId, null, null, null, null, null, null, null, null, null));

            StringAssert.Contains("Requested resource not found: Table", ex.Message);
        }