public async Task Get_OneSupportedPlanPresent_SupportedPlanReturned()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Any <GetSupportedPlansQuery>())
            .Returns(new[]
            {
                new Plan(
                    "some-bundle-id",
                    1337,
                    new Bundle(),
                    Array.Empty <PullDogPlan>())
            });

            var mapper = AutoMapperFactory.CreateValidMapper();

            var controller = new PlansController(
                mapper,
                fakeMediator);

            //Act
            var responses = await controller.Get();

            //Assert
            var responsesArray = responses.ToArray();

            Assert.AreEqual(1, responsesArray.Length);

            Assert.AreEqual("some-bundle-id", responsesArray.Single().Id);
        }
        public static void ClassInitialize(TestContext context)
        {
            Initialize();
            InitializePlans();

            _controller = new PlansController(ObjectFactory.GetInstance <IPlanService>());
        }
        public async Task GetDemo_DemoPlanPresent_DemoPlanReturned()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Any <GetDemoPlanQuery>())
            .Returns(new Plan(
                         "some-bundle-id",
                         1337,
                         new Bundle(),
                         Array.Empty <PullDogPlan>()));

            var mapper = AutoMapperFactory.CreateValidMapper();

            var controller = new PlansController(
                mapper,
                fakeMediator);

            //Act
            var demoResponse = await controller.GetDemo();

            //Assert
            Assert.IsNotNull(demoResponse);

            Assert.AreEqual("some-bundle-id", demoResponse.Id);
        }
        public async Task ProvisionDemo_DemoPlanPresentGiven_DemoInstanceProvisonedWithProperBundleId()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Any <GetDemoPlanQuery>())
            .Returns(new Plan(
                         "some-bundle-id",
                         1337,
                         new Bundle(),
                         Array.Empty <PullDogPlan>()));

            var fakeMapper = Substitute.For <IMapper>();

            var controller = new PlansController(
                fakeMapper,
                fakeMediator);

            //Act
            await controller.ProvisionDemo();

            //Assert
            await fakeMediator
            .Received(1)
            .Send(Arg.Any <ProvisionDemoInstanceCommand>());
        }
        public async Task ProvisionDemo_DemoAlreadyProvisioned_ReturnsValidationError()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Any <GetDemoPlanQuery>())
            .Returns(new Plan(
                         "some-bundle-id",
                         1337,
                         new Bundle(),
                         Array.Empty <PullDogPlan>()));

            fakeMediator
            .Send(Arg.Any <ProvisionDemoInstanceCommand>())
            .Throws(new DemoInstanceAlreadyProvisionedException());

            var mapper = AutoMapperFactory.CreateValidMapper();

            var controller = new PlansController(
                mapper,
                fakeMediator);

            //Act
            var result = await controller.ProvisionDemo();

            //Assert
            var validationProblem = result.GetValidationProblemDetails();

            Assert.AreEqual("ALREADY_PROVISIONED", validationProblem.Type);
        }
Beispiel #6
0
        public void TestInitialize()
        {
            _mockRepository = new Mock <IPlanRepository>();

            var mockUoW = new Mock <IUnitOfWork>();

            mockUoW.SetupGet(u => u.Plans).Returns(_mockRepository.Object);

            _controller = new PlansController(mockUoW.Object);
            _controller.MockCurrentUser(_userId, _username);
        }
Beispiel #7
0
        public async void PlanController_Will_ReturnEmptyOkResult_If_No_Plan_Found()
        {
            //Act
            PlansController PlanController = CreatePlanController(_testUserAccount.Id, _testUserAccount.EmailAddress.Address);

            //Assert
            var postResult = await PlanController.Get(new PlansGetParams()
            {
                id = FixtureData.GetTestGuidById(55)
            });

            //FixtureData.GetTestGuidById(55));
            Assert.IsNull(postResult as OkNegotiatedContentResult <PlanDO>);
        }
Beispiel #8
0
        public void BeforeTest()
        {
            var builder = new DbContextOptionsBuilder <PlanContext>();

            builder.EnableSensitiveDataLogging();
            builder.UseInMemoryDatabase("testplan");

            var context    = new PlanContext(builder.Options);
            var repository = new PlanRepository(context);

            this.controller = new(
                Mock.Of <ILogger <PlansController> >(),
                repository);
            Assert.IsNotNull(this.controller);
        }
        public async Task ProvisionPlan_PlanAndPaymentMethodPresent_InstanceProvisonedWithProperBundleId()
        {
            //Arrange
            var signedInUserId = Guid.NewGuid();

            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Is <GetPlanByIdQuery>(arg =>
                                            arg.Id == "some-plan-id"))
            .Returns(new Plan(
                         "some-bundle-id",
                         1337,
                         new Bundle(),
                         Array.Empty <PullDogPlan>()));

            fakeMediator
            .Send(Arg.Is <GetActivePaymentMethodForUserQuery>(arg =>
                                                              arg.User.Id == signedInUserId))
            .Returns(new PaymentMethod());

            fakeMediator
            .Send(Arg.Is <EnsureUserForIdentityCommand>(
                      args => args.IdentityName == "some-identity-name"))
            .Returns(new User()
            {
                Id = signedInUserId
            });

            var fakeMapper = Substitute.For <IMapper>();

            var controller = new PlansController(
                fakeMapper,
                fakeMediator);

            controller.FakeAuthentication("some-identity-name");

            //Act
            await controller.ProvisionPlan("some-plan-id");

            //Assert
            await fakeMediator
            .Received(1)
            .Send(Arg.Is <ProvisionInstanceForUserCommand>(arg =>
                                                           arg.Plan.Id == "some-bundle-id" &&
                                                           arg.User.Id == signedInUserId));
        }
        public async Task ProvisionPlan_PlanAndNoPaymentMethodPresent_ReturnsValidationError()
        {
            //Arrange
            var signedInUserId = Guid.NewGuid();

            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Is <GetPlanByIdQuery>(arg =>
                                            arg.Id == "some-plan-id"))
            .Returns(new Plan(
                         "some-bundle-id",
                         1337,
                         new Bundle(),
                         Array.Empty <PullDogPlan>()));

            fakeMediator
            .Send(Arg.Is <EnsureUserForIdentityCommand>(
                      args => args.IdentityName == "some-identity-name"))
            .Returns(new User()
            {
                Id = signedInUserId
            });

            var mapper = AutoMapperFactory.CreateValidMapper();

            var controller = new PlansController(
                mapper,
                fakeMediator);

            controller.FakeAuthentication("some-identity-name");

            //Act
            var response = await controller.ProvisionPlan("some-plan-id") as BadRequestObjectResult;

            //Assert
            Assert.IsNotNull(response);

            var value = response.Value as ValidationProblemDetails;

            Assert.IsNotNull(value);

            Assert.AreEqual("NO_PAYMENT_METHOD", value.Type);
        }
        public async Task ProvisionDemo_AuthenticatedUser_PassesAuthenticatedUserIdToProvisionDemoInstanceCommand()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Any <GetDemoPlanQuery>())
            .Returns(new Plan(
                         "some-bundle-id",
                         1337,
                         new Bundle(),
                         Array.Empty <PullDogPlan>()));

            var fakeAuthenticatedUserId = Guid.NewGuid();

            fakeMediator
            .Send(Arg.Is <EnsureUserForIdentityCommand>(
                      args => args.IdentityName == "some-identity-name"))
            .Returns(new User()
            {
                Id = fakeAuthenticatedUserId
            });

            var fakeMapper = Substitute.For <IMapper>();

            var controller = new PlansController(
                fakeMapper,
                fakeMediator);

            controller.FakeAuthentication("some-identity-name");

            //Act
            var result = await controller.ProvisionDemo();

            //Assert
            result.AssertSuccessfulStatusCode();

            await fakeMediator
            .Received(1)
            .Send(Arg.Is <ProvisionDemoInstanceCommand>(arg =>
                                                        arg.AuthenticatedUserId == fakeAuthenticatedUserId));
        }
        public async Task ProvisionPlan_PaymentMethodAndNoPlanPresent_ReturnsValidationError()
        {
            //Arrange
            var signedInUserId = Guid.NewGuid();

            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Is <GetActivePaymentMethodForUserQuery>(arg =>
                                                              arg.User.Id == signedInUserId))
            .Returns(new PaymentMethod());

            fakeMediator
            .Send(Arg.Is <EnsureUserForIdentityCommand>(
                      args => args.IdentityName == "some-identity-name"))
            .Returns(new User()
            {
                Id = signedInUserId
            });

            var mapper = AutoMapperFactory.CreateValidMapper();

            var controller = new PlansController(
                mapper,
                fakeMediator);

            controller.FakeAuthentication("some-identity-name");

            //Act
            var response = await controller.ProvisionPlan("some-plan-id") as BadRequestObjectResult;

            //Assert
            Assert.IsNotNull(response);

            var value = response.Value as ValidationProblemDetails;

            Assert.IsNotNull(value);

            Assert.AreEqual("PLAN_NOT_FOUND", value.Type);
        }
        public void Initialize()
        {
            plans          = new GenericRepository <Plan>(new FakeStorageContext <Plan>());
            planCourses    = new GenericRepository <PlanCourse>(new FakeStorageContext <PlanCourse>());
            semesters      = new GenericRepository <Semester>(new FakeStorageContext <Semester>());
            users          = new GenericRepository <User>(new FakeStorageContext <User>());
            degreePrograms = new GenericRepository <DegreeProgram>(new FakeStorageContext <DegreeProgram>());

            roles       = new FakeRoles();
            webSecurity = new FakeWebSecurity(roles, users);

            controller = new PlansController(plans, planCourses, semesters, users, degreePrograms, roles, webSecurity);

            degreePrograms.Add(new DegreeProgram()
            {
                ID = 1,
                degreeProgramName = "Degree Program 1"
            });

            degreePrograms.Add(new DegreeProgram()
            {
                ID = 2,
                degreeProgramName = "Degree Program 2"
            });

            users.Add(new User()
            {
                ID       = 1,
                username = "******",
                realName = "Test User 1"
            });

            users.Add(new User()
            {
                ID       = 2,
                username = "******",
                realName = "Test User 2"
            });

            users.Add(new User()
            {
                ID       = 3,
                username = "******",
                realName = "Administrator"
            });

            users.Add(new User()
            {
                ID       = 4,
                username = "******",
                realName = "Advisor"
            });

            semesters.Add(new Semester()
            {
                ID            = 1,
                semesterTitle = "Fall",
                semesterYear  = 2013,
                standard      = true
            });

            semesters.Add(new Semester()
            {
                ID            = 2,
                semesterTitle = "Spring",
                semesterYear  = 2014,
                standard      = true
            });

            plans.Add(new Plan()
            {
                ID              = 1,
                planName        = "Plan 1",
                degreeProgramID = 1,
                degreeProgram   = degreePrograms.Find(1),
                userID          = 1,
                //user = users.Find(1),
                semesterID  = 1,
                semester    = semesters.Find(1),
                planCourses = new Collection <PlanCourse>()
            });

            plans.Add(new Plan()
            {
                ID              = 2,
                planName        = "Plan 2",
                degreeProgramID = 2,
                degreeProgram   = degreePrograms.Find(2),
                userID          = 2,
                //user = users.Find(2),
                semesterID  = 2,
                semester    = semesters.Find(2),
                planCourses = new Collection <PlanCourse>()
            });
        }
Beispiel #14
0
 private void FetchPlanConfigInfo()
 {
     var ctr    = new PlansController();
     var result = ctr.GetPlanConfiguration("Novihmnodnl");
 }