Exemplo n.º 1
0
        public void OnActionExecuting_Always_SetsBreadcrumbInternalActivityToManageCharges()
        {
            // Arrange
            IAppConfiguration configuration = A.Fake <IAppConfiguration>();

            A.CallTo(() => configuration.EnableInvoicing).Returns(true);

            BreadcrumbService breadcrumb = new BreadcrumbService();

            ChargeController controller = new ChargeController(
                configuration,
                breadcrumb,
                () => A.Dummy <IWeeeClient>());

            // Act
            MethodInfo onActionExecutingMethod = typeof(ChargeController).GetMethod(
                "OnActionExecuting",
                BindingFlags.NonPublic | BindingFlags.Instance);

            object[] args = new object[] { A.Dummy <ActionExecutingContext>() };
            try
            {
                onActionExecutingMethod.Invoke(controller, args);
            }
            catch (TargetInvocationException ex)
            {
                throw ex.InnerException;
            }

            // Assert
            Assert.Equal("Manage PCS charges", breadcrumb.InternalActivity);
        }
Exemplo n.º 2
0
        public async Task GetDownloadIssuedChargesCsv_Always_CallsApiAndReturnsFileResultWithCorrectFileName()
        {
            // Arrange
            CompetentAuthority authority = A.Dummy <CompetentAuthority>();
            int  complianceYear          = A.Dummy <int>();
            Guid schemeId = A.Dummy <Guid>();

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            FileInfo fileInfo = new FileInfo("filename", new byte[] { 1, 2, 3 });

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <FetchIssuedChargesCsv> ._))
            .WhenArgumentsMatch(a => a.Get <FetchIssuedChargesCsv>("request").Authority == authority &&
                                a.Get <FetchIssuedChargesCsv>("request").ComplianceYear == complianceYear &&
                                a.Get <FetchIssuedChargesCsv>("request").SchemeId == schemeId)
            .Returns(fileInfo);

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.DownloadIssuedChargesCsv(authority, complianceYear, schemeId);

            // Assert
            FileResult fileResult = result as FileResult;

            Assert.NotNull(fileResult);

            Assert.Equal("filename", fileResult.FileDownloadName);
        }
Exemplo n.º 3
0
        public async Task PostManagePendingCharges_NonAjaxWithNoError_CallsApiAndRedirectsToChargesSuccessfullyIssuedActionWithAuthorityAndInvoiceRunId()
        {
            Guid invoiceRunId = new Guid("FB95F6E7-8809-488A-B23B-5B3F5A9B3D5F");

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <IssuePendingCharges> ._))
            .Returns(new IssuePendingChargesResult {
                Errors = new List <string>(), InvoiceRunId = invoiceRunId
            });

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            HttpContextBase httpContext = A.Fake <HttpContextBase>();
            HttpRequestBase httpRequest = A.Fake <HttpRequestBase>();

            A.CallTo(() => httpContext.Request).Returns(httpRequest);
            controller.ControllerContext = new ControllerContext(httpContext, new RouteData(), controller);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland, A.Dummy <FormCollection>());

            // Assert
            RedirectToRouteResult redirectResult = result as RedirectToRouteResult;

            Assert.NotNull(redirectResult);

            Assert.Equal("ChargesSuccessfullyIssued", redirectResult.RouteValues["action"]);
            Assert.Equal(CompetentAuthority.NorthernIreland, redirectResult.RouteValues["authority"]);
            Assert.Equal(invoiceRunId, redirectResult.RouteValues["id"]);
        }
Exemplo n.º 4
0
        public void PostChooseActivity_WithInvalidModel_ReturnsChooseActivityViewWithViewModelAndAddsAuthorityToViewBag()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            controller.ModelState.AddModelError("key", "Some error");

            // Act
            ActionResult result = controller.ChooseActivity(CompetentAuthority.NorthernIreland, A.Dummy <ChooseActivityViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "ChooseActivity");

            ChooseActivityViewModel viewModel = viewResult.Model as ChooseActivityViewModel;

            Assert.NotNull(viewModel);

            Assert.Equal(CompetentAuthority.NorthernIreland, (object)viewResult.ViewBag.Authority);
        }
Exemplo n.º 5
0
        public async Task GetDownloadInvoiceFiles_ForEngland_CallsApiAndReturnsFileResult()
        {
            // Arrange
            Guid invoiceRunId = new Guid("ADED8BDE-CF03-4696-B972-DDAB9306A6DD");

            FileInfo fileInfo = new FileInfo("Test file.zip", A.Dummy <byte[]>());

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <FetchInvoiceRunIbisZipFile> ._))
            .WhenArgumentsMatch(a => a.Get <FetchInvoiceRunIbisZipFile>("request").InvoiceRunId == invoiceRunId)
            .Returns(fileInfo);

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.DownloadInvoiceFiles(
                CompetentAuthority.England,
                invoiceRunId);

            // Assert
            FileResult fileResult = result as FileResult;

            Assert.NotNull(fileResult);

            Assert.Equal("Test file.zip", fileResult.FileDownloadName);
            Assert.Equal("text/plain", fileResult.ContentType);
        }
Exemplo n.º 6
0
        public void GetChargesSuccessfullyIssued_ForDevolvedAuthority_ReturnsChargesSuccessfullyIssuedViewWithModelNotAllowingInvoiceDownload()
        {
            // Arrange
            Guid invoiceRunId = new Guid("23610E5E-5B79-4DB0-BD8C-0213A9B44C45");

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            // Act
            ActionResult result = controller.ChargesSuccessfullyIssued(CompetentAuthority.Scotland, invoiceRunId);

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "ChargesSuccessfullyIssued");

            Guid?viewModel = viewResult.Model as Guid?;

            Assert.NotNull(viewModel);
            Assert.Equal(invoiceRunId, viewModel);
            Assert.Equal(false, viewResult.ViewBag.AllowDownloadOfInvoiceFiles);
        }
Exemplo n.º 7
0
        public void OnActionExecuting_WhenInvoicingEnabledInConfig_DoesntThrowException()
        {
            // Arrange
            IAppConfiguration configuration = A.Fake <IAppConfiguration>();

            A.CallTo(() => configuration.EnableInvoicing).Returns(true);

            ChargeController controller = new ChargeController(
                configuration,
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            // Act
            MethodInfo onActionExecutingMethod = typeof(ChargeController).GetMethod(
                "OnActionExecuting",
                BindingFlags.NonPublic | BindingFlags.Instance);

            object[] args = new object[] { A.Dummy <ActionExecutingContext>() };
            try
            {
                onActionExecutingMethod.Invoke(controller, args);
            }
            catch (TargetInvocationException ex)
            {
                throw ex.InnerException;
            }

            // Assert
            // No exception.
        }
Exemplo n.º 8
0
        public async Task GetDownloadInvoiceFiles_ForDevolvedAuthority_ThowsInvalidOperationException()
        {
            // Arrange
            Guid invoiceRunId = new Guid("ADED8BDE-CF03-4696-B972-DDAB9306A6DD");

            FileInfo fileInfo = new FileInfo("Test file.zip", A.Dummy <byte[]>());

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <FetchInvoiceRunIbisZipFile> ._))
            .WhenArgumentsMatch(a => a.Get <FetchInvoiceRunIbisZipFile>("request").InvoiceRunId == invoiceRunId)
            .Returns(fileInfo);

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            // Act
            Func <Task <ActionResult> > testCode = async() => await controller.DownloadInvoiceFiles(
                CompetentAuthority.Scotland,
                invoiceRunId);

            // Assert
            await Assert.ThrowsAsync <InvalidOperationException>(testCode);
        }
Exemplo n.º 9
0
        public async Task GetInvoiceRuns_ForDevolvedAuthority_ReturnsInvoiceRunsViewWithModelNotAllowingInvoiceDownload()
        {
            // Arrange
            IReadOnlyList <InvoiceRunInfo> results = A.Dummy <IReadOnlyList <InvoiceRunInfo> >();

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <FetchInvoiceRuns> ._)).Returns(results);

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.InvoiceRuns(CompetentAuthority.Scotland);

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "InvoiceRuns");

            IReadOnlyList <InvoiceRunInfo> viewModel = viewResult.Model as IReadOnlyList <InvoiceRunInfo>;

            Assert.NotNull(viewModel);
            Assert.Equal(results, viewModel);
            Assert.Equal(false, viewResult.ViewBag.AllowDownloadOfInvoiceFiles);
        }
Exemplo n.º 10
0
        public async Task GetDownloadChargeBreakdown_CallsApiAndReturnsFileResult()
        {
            // Arrange
            Guid invoiceRunId = Guid.NewGuid();

            var csvFileData = new CSVFileData {
                FileName = "Test file.csv", FileContent = "CSV content"
            };

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <FetchInvoiceRunCsv> ._))
            .WhenArgumentsMatch(a => a.Get <FetchInvoiceRunCsv>("request").InvoiceRunId == invoiceRunId)
            .Returns(csvFileData);

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.DownloadChargeBreakdown(invoiceRunId);

            // Assert
            FileResult fileResult = result as FileResult;

            Assert.NotNull(fileResult);

            Assert.Equal("Test file.csv", fileResult.FileDownloadName);
            Assert.Equal("text/csv", fileResult.ContentType);
        }
        public void OnActionExecuting_WhenInvoicingEnabledInConfig_DoesntThrowException()
        {
            // Arrange
            IAppConfiguration configuration = A.Fake<IAppConfiguration>();
            A.CallTo(() => configuration.EnableInvoicing).Returns(true);

            ChargeController controller = new ChargeController(
                configuration,
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            // Act
            MethodInfo onActionExecutingMethod = typeof(ChargeController).GetMethod(
                "OnActionExecuting",
                BindingFlags.NonPublic | BindingFlags.Instance);

            object[] args = new object[] { A.Dummy<ActionExecutingContext>() };
            try
            {
                onActionExecutingMethod.Invoke(controller, args);
            }
            catch (TargetInvocationException ex)
            {
                throw ex.InnerException;
            }

            // Assert
            // No exception.
        }
Exemplo n.º 12
0
        public static void Main(string[] args)
        {
#if DEBUG
            int startingHour   = DateTime.Now.Hour;
            int startingMinute = DateTime.Now.AddMinutes(1).Minute;

            MyScheduler.IntervalInMinutes(startingHour, startingMinute, 1, () =>
            {
                ChargeController.UpdateTweets();
            });

            MyScheduler.IntervalInMinutes(startingHour, startingMinute, 1, () =>
            {
                TelegramBotController.ProcessMessages();
            });

            Console.ReadLine();
#endif

#if RELEASE
            ChargeController.FirstCharging();

            //Começa às 7h | Intervalo de 1 dia
            MyScheduler.IntervalInDays(7, 00, 1, () =>
            {
                ChargeController.UpdateTweets();
            });

            //Começa às 7h | Intervalo de 1 hora
            MyScheduler.IntervalInHours(7, 00, 1, () =>
            {
                TelegramBotController.ProcessMessages();
            });
#endif
        }
        internal static ChargeController GetMock()
        {
            ChargeController controller = Substitute.For <ChargeController>(ChargeApplicationHelper.GetMock());

            controller.PostAsync(Arg.Any <ChargeMessage>()).Returns(PostAsyncReturn);

            return(controller);
        }
Exemplo n.º 14
0
    public override void InternalCast(Unit caster, TargetInfo target)
    {
        oldController_       = caster.activeController;
        targetStartPosition_ = target.TargetUnit.gameObject.transform.position;

        chargeController_        = caster.gameObject.AddComponent <ChargeController>();
        chargeController_.Target = target;
        chargeController_.initialize(this);
    }
 public void SetActiveCharge(ChargeController _chargeController)
 {
     //Deactivate current actice
     if (chargeController != null)
     {
         //  chargeController.UnsetToActiveComponent();
     }
     chargeController = _chargeController;
     UpdateInterface();
 }
        public async Task RegisterCharge_ValidateAllData_ReturnsTrue(ChargeMessage chargeMessage)
        {
            // Arrange
            ChargeController controller = ChargeControllerHelper.GetMock();

            // Act
            IApplicationResult <bool> result = await controller.PostAsync(chargeMessage) as IApplicationResult <bool>;

            // Assert
            Assert.True(result.Data);
        }
Exemplo n.º 17
0
    protected override void CastInternal(Unit caster, List <CastTarget> targets)
    {
        CastTarget target = targets[0];

        oldController       = caster.ActiveController;
        targetStartPosition = target.Unit.gameObject.transform.position;

        chargeController        = caster.gameObject.AddComponent <ChargeController>();
        chargeController.Target = new TargetInfo(caster, target.Unit);
        chargeController.Initialize(this);
    }
        public async Task RegisterCharge_ValidateValue_ReturnsFalse(ChargeMessage chargeMessage)
        {
            // Arrange
            ChargeController controller = ChargeControllerHelper.GetMock();

            // Act
            IApplicationResult <bool> result = await controller.PostAsync(chargeMessage) as IApplicationResult <bool>;

            // Assert
            Assert.False(result.Data);
            Assert.True(result.Messages.Count == 1);
            Assert.Contains("Value", result.Messages.First());
        }
Exemplo n.º 19
0
 public void ChargeAttack()
 {
     if (IsLaserActive)
     {
         if (!canPerformAttack)
         {
             canPerformAttack = ChargeController.ChargePowerUp(laserObj);
             if (canPerformAttack)
             {
                 AudioManager.SetupAudio(laserChargeSound, 2f);
                 Perform();
             }
         }
     }
 }
Exemplo n.º 20
0
        public ChargesPaymentsForm(RestEasyMDIParent re)
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;
            restEasy           = re;
            this.MdiParent     = restEasy;

            chargeController      = new ChargeController();
            paymentController     = new PaymentController();
            accountController     = new AccountController();
            reservationController = new ReservationController();

            amount = 0;

            radioButton1.Checked = true;
            rbnCharge.Checked    = true;
        }
Exemplo n.º 21
0
        public async Task GetIssuedCharges_Always_ReturnsIssuedChargesView()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            // Act
            ActionResult result = await controller.IssuedCharges(A.Dummy <CompetentAuthority>());

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "IssuedCharges");
        }
Exemplo n.º 22
0
        public async Task GetIssuedCharges_Always_PopulatesViewBagTriggerDownloadWithFalse()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            // Act
            ActionResult result = await controller.IssuedCharges(A.Dummy <CompetentAuthority>());

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.Equal(false, viewResult.ViewBag.TriggerDownload);
        }
Exemplo n.º 23
0
        public async Task PostManagePendingCharges_AjaxWithError_ReturnsJsonWithErrors()
        {
            Guid invoiceRunId = new Guid("FB95F6E7-8809-488A-B23B-5B3F5A9B3D5F");

            var errors = new List <string> {
                "error"
            };

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <IssuePendingCharges> ._))
            .Returns(new IssuePendingChargesResult {
                Errors = errors
            });

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            HttpContextBase httpContext = A.Fake <HttpContextBase>();
            HttpRequestBase httpRequest = A.Fake <HttpRequestBase>();

            A.CallTo(() => httpRequest.Headers).Returns(new WebHeaderCollection {
                { "X-Requested-With", "XMLHttpRequest" }
            });
            A.CallTo(() => httpContext.Request).Returns(httpRequest);
            controller.ControllerContext = new ControllerContext(httpContext, new RouteData(), controller);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland, A.Dummy <FormCollection>());

            // Assert
            JsonResult jsonResult = result as JsonResult;

            Assert.NotNull(jsonResult);

            Type type = jsonResult.Data.GetType();

            Assert.Equal(false, (bool)type.GetProperty("Success").GetValue(jsonResult.Data));
            Assert.Equal(errors, (List <string>)type.GetProperty("Errors").GetValue(jsonResult.Data));
        }
Exemplo n.º 24
0
        public async Task PostIssuedCharges_WithValidationErrors_PopulatesViewBagTriggerDownloadWithFalse()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            controller.ModelState.AddModelError("key", "error");

            // Act
            ActionResult result = await controller.IssuedCharges(A.Dummy <CompetentAuthority>(), A.Dummy <IssuedChargesViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.Equal(false, viewResult.ViewBag.TriggerDownload);
        }
Exemplo n.º 25
0
        public async Task PostIssuedCharges_Always_PopulatesViewBagWithAuthority()
        {
            // Arrange
            CompetentAuthority authority = A.Dummy <CompetentAuthority>();

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            // Act
            ActionResult result = await controller.IssuedCharges(authority, A.Dummy <IssuedChargesViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.Equal(authority, viewResult.ViewBag.Authority);
        }
Exemplo n.º 26
0
        public async Task PostManagePendingCharges_NonAjaxWithError_ReturnsIssueChargesErrorView()
        {
            Guid invoiceRunId = new Guid("FB95F6E7-8809-488A-B23B-5B3F5A9B3D5F");

            var errors = new List <string> {
                "error"
            };

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <IssuePendingCharges> ._))
            .Returns(new IssuePendingChargesResult {
                Errors = errors
            });

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            HttpContextBase httpContext = A.Fake <HttpContextBase>();
            HttpRequestBase httpRequest = A.Fake <HttpRequestBase>();

            A.CallTo(() => httpContext.Request).Returns(httpRequest);
            controller.ControllerContext = new ControllerContext(httpContext, new RouteData(), controller);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland, A.Dummy <FormCollection>());

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "IssueChargesError");

            var viewModel = viewResult.Model as List <string>;

            Assert.Equal(errors, viewModel);
        }
Exemplo n.º 27
0
        public async Task GetDownloadIssuedChargesCsv_Always_ReturnsFileResultWithContentTypeOfTextCsv()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            // Act
            ActionResult result = await controller.DownloadIssuedChargesCsv(
                A.Dummy <CompetentAuthority>(),
                A.Dummy <int>(),
                A.Dummy <Guid>());

            // Assert
            FileResult fileResult = result as FileResult;

            Assert.NotNull(fileResult);

            Assert.Equal("text/csv", fileResult.ContentType);
        }
Exemplo n.º 28
0
        public void GetSelectAuthority_Always_ReturnsSelectAuthorityViewWithViewModel()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            // Act
            ActionResult result = controller.SelectAuthority();

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "SelectAuthority");

            SelectAuthorityViewModel viewModel = viewResult.Model as SelectAuthorityViewModel;

            Assert.NotNull(viewModel);
        }
Exemplo n.º 29
0
        public async Task GetIssuedCharges_Always_CallsApiAndPopulatesViewModel()
        {
            // Arrange
            CompetentAuthority authority = A.Dummy <CompetentAuthority>();

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            List <int> complianceYears = A.Dummy <List <int> >();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <FetchComplianceYearsWithInvoices> ._))
            .WhenArgumentsMatch(a => a.Get <FetchComplianceYearsWithInvoices>("request").Authority == authority)
            .Returns(complianceYears);

            List <SchemeData> schemes = A.Dummy <List <SchemeData> >();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <FetchSchemesWithInvoices> ._))
            .WhenArgumentsMatch(a => a.Get <FetchSchemesWithInvoices>("request").Authority == authority)
            .Returns(schemes);

            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.IssuedCharges(authority);

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            IssuedChargesViewModel viewModel = viewResult.Model as IssuedChargesViewModel;

            Assert.NotNull(viewModel);

            Assert.Equal(complianceYears, viewModel.ComplianceYears);
            Assert.Equal(schemes, viewModel.Schemes);
        }
Exemplo n.º 30
0
        public void PostChooseActivity_WithViewInvoiceRunHistorySelected_RedirectsToInvoiceRunsActionWithSelectedAuthority()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => A.Dummy <IWeeeClient>());

            ChooseActivityViewModel viewModel = new ChooseActivityViewModel();

            viewModel.SelectedActivity = Activity.ViewInvoiceRunHistory;

            // Act
            ActionResult result = controller.ChooseActivity(CompetentAuthority.NorthernIreland, viewModel);

            // Assert
            RedirectToRouteResult redirectResult = result as RedirectToRouteResult;

            Assert.NotNull(redirectResult);

            Assert.Equal("InvoiceRuns", redirectResult.RouteValues["action"]);
            Assert.Equal(CompetentAuthority.NorthernIreland, redirectResult.RouteValues["authority"]);
        }
Exemplo n.º 31
0
        public async Task GetManagePendingCharges_Always_ReturnsManagePendingChargesViewWithViewModelAndAddsAuthorityToViewBag()
        {
            var managePendingCharges = new ManagePendingCharges
            {
                PendingCharges      = A.Dummy <IList <PendingCharge> >(),
                CanUserIssueCharges = A.Dummy <bool>()
            };
            //IList<PendingCharge> pendingCharges = A.Dummy<IList<PendingCharge>>();

            IWeeeClient weeeClient = A.Fake <IWeeeClient>();

            A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <FetchPendingCharges> ._))
            .Returns(managePendingCharges);

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy <IAppConfiguration>(),
                A.Dummy <BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland);

            // Assert
            ViewResult viewResult = result as ViewResult;

            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "ManagePendingCharges");

            ManagePendingChargesViewModel viewModel = viewResult.Model as ManagePendingChargesViewModel;

            Assert.Equal(managePendingCharges.PendingCharges, viewModel.PendingCharges);
            Assert.Equal(managePendingCharges.CanUserIssueCharges, viewModel.CanUserIssueCharges);

            Assert.Equal(CompetentAuthority.NorthernIreland, (object)viewResult.ViewBag.Authority);
        }
        public async Task PostIssuedCharges_WithValidationErrors_PopulatesViewBagTriggerDownloadWithFalse()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            controller.ModelState.AddModelError("key", "error");

            // Act
            ActionResult result = await controller.IssuedCharges(A.Dummy<CompetentAuthority>(), A.Dummy<IssuedChargesViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.Equal(false, viewResult.ViewBag.TriggerDownload);
        }
        public async Task PostIssuedCharges_Always_PopulatesViewBagWithAuthority()
        {
            // Arrange
            CompetentAuthority authority = A.Dummy<CompetentAuthority>();

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            // Act
            ActionResult result = await controller.IssuedCharges(authority, A.Dummy<IssuedChargesViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.Equal(authority, viewResult.ViewBag.Authority);
        }
        public async Task GetDownloadIssuedChargesCsv_Always_ReturnsFileResultWithContentTypeOfTextCsv()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            // Act
            ActionResult result = await controller.DownloadIssuedChargesCsv(
                A.Dummy<CompetentAuthority>(),
                A.Dummy<int>(),
                A.Dummy<string>());

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("text/csv", fileResult.ContentType);
        }
        public void OnActionExecuting_Always_SetsBreadcrumbInternalActivityToManageCharges()
        {
            // Arrange
            IAppConfiguration configuration = A.Fake<IAppConfiguration>();
            A.CallTo(() => configuration.EnableInvoicing).Returns(true);

            BreadcrumbService breadcrumb = new BreadcrumbService();

            ChargeController controller = new ChargeController(
                configuration,
                breadcrumb,
                () => A.Dummy<IWeeeClient>());

            // Act
            MethodInfo onActionExecutingMethod = typeof(ChargeController).GetMethod(
                "OnActionExecuting",
                BindingFlags.NonPublic | BindingFlags.Instance);

            object[] args = new object[] { A.Dummy<ActionExecutingContext>() };
            try
            {
                onActionExecutingMethod.Invoke(controller, args);
            }
            catch (TargetInvocationException ex)
            {
                throw ex.InnerException;
            }

            // Assert
            Assert.Equal("Manage PCS charges", breadcrumb.InternalActivity);
        }
        public async Task GetDownloadChargeBreakdown_CallsApiAndReturnsFileResult()
        {
            // Arrange
            Guid invoiceRunId = Guid.NewGuid();

            var csvFileData = new CSVFileData { FileName = "Test file.csv", FileContent = "CSV content" };

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<FetchInvoiceRunCsv>._))
                .WhenArgumentsMatch(a => a.Get<FetchInvoiceRunCsv>("request").InvoiceRunId == invoiceRunId)
                .Returns(csvFileData);

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.DownloadChargeBreakdown(invoiceRunId);

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("Test file.csv", fileResult.FileDownloadName);
            Assert.Equal("text/csv", fileResult.ContentType);
        }
        public async Task PostManagePendingCharges_NonAjaxWithNoError_CallsApiAndRedirectsToChargesSuccessfullyIssuedActionWithAuthorityAndInvoiceRunId()
        {
            Guid invoiceRunId = new Guid("FB95F6E7-8809-488A-B23B-5B3F5A9B3D5F");

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<IssuePendingCharges>._))
                .Returns(new IssuePendingChargesResult { Errors = new List<string>(), InvoiceRunId = invoiceRunId });

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            HttpContextBase httpContext = A.Fake<HttpContextBase>();
            HttpRequestBase httpRequest = A.Fake<HttpRequestBase>();
            A.CallTo(() => httpContext.Request).Returns(httpRequest);
            controller.ControllerContext = new ControllerContext(httpContext, new RouteData(), controller);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland, A.Dummy<FormCollection>());

            // Assert
            RedirectToRouteResult redirectResult = result as RedirectToRouteResult;
            Assert.NotNull(redirectResult);

            Assert.Equal("ChargesSuccessfullyIssued", redirectResult.RouteValues["action"]);
            Assert.Equal(CompetentAuthority.NorthernIreland, redirectResult.RouteValues["authority"]);
            Assert.Equal(invoiceRunId, redirectResult.RouteValues["id"]);
        }
        public void PostChooseActivity_WithViewInvoiceRunHistorySelected_RedirectsToInvoiceRunsActionWithSelectedAuthority()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            ChooseActivityViewModel viewModel = new ChooseActivityViewModel();
            viewModel.SelectedActivity = Activity.ViewInvoiceRunHistory;

            // Act
            ActionResult result = controller.ChooseActivity(CompetentAuthority.NorthernIreland, viewModel);

            // Assert
            RedirectToRouteResult redirectResult = result as RedirectToRouteResult;
            Assert.NotNull(redirectResult);

            Assert.Equal("InvoiceRuns", redirectResult.RouteValues["action"]);
            Assert.Equal(CompetentAuthority.NorthernIreland, redirectResult.RouteValues["authority"]);
        }
        public async Task GetDownloadIssuedChargesCsv_Always_CallsApiAndReturnsFileResultWithCorrectFileName()
        {
            // Arrange
            CompetentAuthority authority = A.Dummy<CompetentAuthority>();
            int complianceYear = A.Dummy<int>();
            string schemeName = A.Dummy<string>();

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();

            FileInfo fileInfo = new FileInfo("filename", new byte[] { 1, 2, 3 });

            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<FetchIssuedChargesCsv>._))
                .WhenArgumentsMatch(a => a.Get<FetchIssuedChargesCsv>("request").Authority == authority
                    && a.Get<FetchIssuedChargesCsv>("request").ComplianceYear == complianceYear
                    && a.Get<FetchIssuedChargesCsv>("request").SchemeName == schemeName)
                .Returns(fileInfo);

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.DownloadIssuedChargesCsv(authority, complianceYear, schemeName);

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("filename", fileResult.FileDownloadName);
        }
        public void GetChargesSuccessfullyIssued_ForDevolvedAuthority_ReturnsChargesSuccessfullyIssuedViewWithModelNotAllowingInvoiceDownload()
        {
            // Arrange
            Guid invoiceRunId = new Guid("23610E5E-5B79-4DB0-BD8C-0213A9B44C45");

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            // Act
            ActionResult result = controller.ChargesSuccessfullyIssued(CompetentAuthority.Scotland, invoiceRunId);

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "ChargesSuccessfullyIssued");

            Guid? viewModel = viewResult.Model as Guid?;
            Assert.NotNull(viewModel);
            Assert.Equal(invoiceRunId, viewModel);
            Assert.Equal(false, viewResult.ViewBag.AllowDownloadOfInvoiceFiles);
        }
        public async Task GetDownloadInvoiceFiles_ForEngland_CallsApiAndReturnsFileResult()
        {
            // Arrange
            Guid invoiceRunId = new Guid("ADED8BDE-CF03-4696-B972-DDAB9306A6DD");

            FileInfo fileInfo = new FileInfo("Test file.zip", A.Dummy<byte[]>());

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<FetchInvoiceRunIbisZipFile>._))
                .WhenArgumentsMatch(a => a.Get<FetchInvoiceRunIbisZipFile>("request").InvoiceRunId == invoiceRunId)
                .Returns(fileInfo);

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.DownloadInvoiceFiles(
                CompetentAuthority.England,
                invoiceRunId);

            // Assert
            FileResult fileResult = result as FileResult;
            Assert.NotNull(fileResult);

            Assert.Equal("Test file.zip", fileResult.FileDownloadName);
            Assert.Equal("text/plain", fileResult.ContentType);
        }
        public async Task GetManagePendingCharges_Always_ReturnsManagePendingChargesViewWithViewModelAndAddsAuthorityToViewBag()
        {
            var managePendingCharges = new ManagePendingCharges
            {
                PendingCharges = A.Dummy<IList<PendingCharge>>(),
                CanUserIssueCharges = A.Dummy<bool>()
            };
            //IList<PendingCharge> pendingCharges = A.Dummy<IList<PendingCharge>>();

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<FetchPendingCharges>._))
                .Returns(managePendingCharges);

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland);

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "ManagePendingCharges");

            ManagePendingChargesViewModel viewModel = viewResult.Model as ManagePendingChargesViewModel;
            Assert.Equal(managePendingCharges.PendingCharges, viewModel.PendingCharges);
            Assert.Equal(managePendingCharges.CanUserIssueCharges, viewModel.CanUserIssueCharges);

            Assert.Equal(CompetentAuthority.NorthernIreland, (object)viewResult.ViewBag.Authority);
        }
        public async Task GetInvoiceRuns_ForDevolvedAuthority_ReturnsInvoiceRunsViewWithModelNotAllowingInvoiceDownload()
        {
            // Arrange
            IReadOnlyList<InvoiceRunInfo> results = A.Dummy<IReadOnlyList<InvoiceRunInfo>>();

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<FetchInvoiceRuns>._)).Returns(results);

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.InvoiceRuns(CompetentAuthority.Scotland);

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "InvoiceRuns");

            IReadOnlyList<InvoiceRunInfo> viewModel = viewResult.Model as IReadOnlyList<InvoiceRunInfo>;
            Assert.NotNull(viewModel);
            Assert.Equal(results, viewModel);
            Assert.Equal(false, viewResult.ViewBag.AllowDownloadOfInvoiceFiles);
        }
        public async Task PostManagePendingCharges_AjaxWithError_ReturnsJsonWithErrors()
        {
            Guid invoiceRunId = new Guid("FB95F6E7-8809-488A-B23B-5B3F5A9B3D5F");

            var errors = new List<string> { "error" };

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<IssuePendingCharges>._))
                .Returns(new IssuePendingChargesResult { Errors = errors });

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            HttpContextBase httpContext = A.Fake<HttpContextBase>();
            HttpRequestBase httpRequest = A.Fake<HttpRequestBase>();
            A.CallTo(() => httpRequest.Headers).Returns(new WebHeaderCollection { { "X-Requested-With", "XMLHttpRequest" } });
            A.CallTo(() => httpContext.Request).Returns(httpRequest);
            controller.ControllerContext = new ControllerContext(httpContext, new RouteData(), controller);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland, A.Dummy<FormCollection>());

            // Assert
            JsonResult jsonResult = result as JsonResult;
            Assert.NotNull(jsonResult);

            Type type = jsonResult.Data.GetType();
            Assert.Equal(false, (bool)type.GetProperty("Success").GetValue(jsonResult.Data));
            Assert.Equal(errors, (List<string>)type.GetProperty("Errors").GetValue(jsonResult.Data));
        }
        public async Task PostIssuedCharges_Always_CallsApiAndPopulatesViewModel()
        {
            // Arrange
            CompetentAuthority authority = A.Dummy<CompetentAuthority>();

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();

            List<int> complianceYears = A.Dummy<List<int>>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<FetchComplianceYearsWithInvoices>._))
                .WhenArgumentsMatch(a => a.Get<FetchComplianceYearsWithInvoices>("request").Authority == authority)
                .Returns(complianceYears);

            List<string> schemeNames = A.Dummy<List<string>>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<FetchSchemesWithInvoices>._))
                .WhenArgumentsMatch(a => a.Get<FetchSchemesWithInvoices>("request").Authority == authority)
                .Returns(schemeNames);

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            // Act
            ActionResult result = await controller.IssuedCharges(authority, A.Dummy<IssuedChargesViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            IssuedChargesViewModel viewModel = viewResult.Model as IssuedChargesViewModel;
            Assert.NotNull(viewModel);

            Assert.Equal(complianceYears, viewModel.ComplianceYears);
            Assert.Equal(schemeNames, viewModel.SchemeNames);
        }
        public void PostChooseActivity_WithInvalidModel_ReturnsChooseActivityViewWithViewModelAndAddsAuthorityToViewBag()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            controller.ModelState.AddModelError("key", "Some error");

            // Act
            ActionResult result = controller.ChooseActivity(CompetentAuthority.NorthernIreland, A.Dummy<ChooseActivityViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "ChooseActivity");

            ChooseActivityViewModel viewModel = viewResult.Model as ChooseActivityViewModel;
            Assert.NotNull(viewModel);

            Assert.Equal(CompetentAuthority.NorthernIreland, (object)viewResult.ViewBag.Authority);
        }
        public async Task PostIssuedCharges_Always_ReturnsIssuedChargesView()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            // Act
            ActionResult result = await controller.IssuedCharges(
                A.Dummy<CompetentAuthority>(),
                A.Dummy<IssuedChargesViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "IssuedCharges");
        }
        public void PostSelectAuthority_WithInvalidModel_ReturnsSelectAuthorityViewWithViewModel()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            controller.ModelState.AddModelError("key", "Some error");

            // Act
            ActionResult result = controller.SelectAuthority(A.Dummy<SelectAuthorityViewModel>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "SelectAuthority");

            SelectAuthorityViewModel viewModel = viewResult.Model as SelectAuthorityViewModel;
            Assert.NotNull(viewModel);
        }
        public async Task GetIssuedCharges_Always_PopulatesViewBagTriggerDownloadWithFalse()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            // Act
            ActionResult result = await controller.IssuedCharges(A.Dummy<CompetentAuthority>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.Equal(false, viewResult.ViewBag.TriggerDownload);
        }
        public void GetSelectAuthority_Always_ReturnsSelectAuthorityViewWithViewModel()
        {
            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => A.Dummy<IWeeeClient>());

            // Act
            ActionResult result = controller.SelectAuthority();

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "SelectAuthority");

            SelectAuthorityViewModel viewModel = viewResult.Model as SelectAuthorityViewModel;
            Assert.NotNull(viewModel);
        }
        public async Task GetDownloadInvoiceFiles_ForDevolvedAuthority_ThowsInvalidOperationException()
        {
            // Arrange
            Guid invoiceRunId = new Guid("ADED8BDE-CF03-4696-B972-DDAB9306A6DD");

            FileInfo fileInfo = new FileInfo("Test file.zip", A.Dummy<byte[]>());

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<FetchInvoiceRunIbisZipFile>._))
                .WhenArgumentsMatch(a => a.Get<FetchInvoiceRunIbisZipFile>("request").InvoiceRunId == invoiceRunId)
                .Returns(fileInfo);

            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            // Act
            Func<Task<ActionResult>> testCode = async () => await controller.DownloadInvoiceFiles(
                CompetentAuthority.Scotland,
                invoiceRunId);

            // Assert
            await Assert.ThrowsAsync<InvalidOperationException>(testCode);
        }
        public async Task PostManagePendingCharges_NonAjaxWithError_ReturnsIssueChargesErrorView()
        {
            Guid invoiceRunId = new Guid("FB95F6E7-8809-488A-B23B-5B3F5A9B3D5F");

            var errors = new List<string> { "error" };

            IWeeeClient weeeClient = A.Fake<IWeeeClient>();
            A.CallTo(() => weeeClient.SendAsync(A<string>._, A<IssuePendingCharges>._))
                .Returns(new IssuePendingChargesResult { Errors = errors });

            // Arrange
            ChargeController controller = new ChargeController(
                A.Dummy<IAppConfiguration>(),
                A.Dummy<BreadcrumbService>(),
                () => weeeClient);

            HttpContextBase httpContext = A.Fake<HttpContextBase>();
            HttpRequestBase httpRequest = A.Fake<HttpRequestBase>();
            A.CallTo(() => httpContext.Request).Returns(httpRequest);
            controller.ControllerContext = new ControllerContext(httpContext, new RouteData(), controller);

            // Act
            ActionResult result = await controller.ManagePendingCharges(CompetentAuthority.NorthernIreland, A.Dummy<FormCollection>());

            // Assert
            ViewResult viewResult = result as ViewResult;
            Assert.NotNull(viewResult);

            Assert.True(viewResult.ViewName == string.Empty || viewResult.ViewName == "IssueChargesError");

            var viewModel = viewResult.Model as List<string>;
            Assert.Equal(errors, viewModel);
        }