giseldo/neodataset huggingface dataset:
Add set default checkbox to payment method edit method

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

In order to apply the new design for the payment method edit page under the `pajamas_design_system` feature flag, we need to add a checkbox to the form that will set the edited payment method as the default one.

The problem is that change is not handled on the backend.

### Proposal

Introduce the necessary changes under `pajamas_design_system` feature flag to handle adding a checkbox to the edit form that when checked will set the edited payment method as the default one.

### Result

Move forward with &1788 and unblock work on !772.

Story points: 2.0
Move `update_subscription_with_opportunity_id` logic to a Subscription model method

The following discussion from !666 should be addressed:

- [x] @asubramanian1 started a [discussion](https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/666#note_254061488):  (+4 comments)

    > Not sure if this method would belong to controller, since it has database related changes. Do you think it would be better suited to add to a model class?

Story points: 1.0
Consider reusing `update_subscription_with_opportunity_id` in more places

The following discussion from !666 should be addressed:

- [ ] @asubramanian1 started a [discussion](https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/666#note_254040384):  (+2 comments)

    > Do you think we could reuse the `update_subscription_with_opportunity_id` method here?

Story points: 2.0
Move custom error classes out of CreateSalesforceOpportunityWorker

The following discussion from !666 should be addressed:

- [ ] @asubramanian1 started a [discussion](https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/666#note_254037870):  (+1 comment)

    > What are your thoughts on adding errors to the [errors](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/lib/errors.rb) class? One of the purpose being they could be reused elsewhere too.

Story points: 1.0
:christmas_tree: Suspend deployments during December 2019 holidays

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

We should suspend all production deployments from 23rd December, 2019 to the 1st January, 2020, both included.

Please raise any concerns or comments in this issue.

There will be limited coverage as most people will be away. This should effectively limit the need to have someone on call to resolve any development related issues in production during the holidays period.

We'll need 2 volunteers from the teams to add/remove the label and notify Slack.

## Process

- [x] @tyleramos On the **20th, December, 2019** add the ~"production::blocker" label to this issue.
- [x] @tyleramos Then, notify #g_fulfillment, #g_growth_engineering, #support_fulfillment, and #production about the freeze
- [x] @nicolasdular On the **2nd, January, 2020** remove the ~"production::blocker" label from this issue.
- [x] @nicolasdular Then, notify #g_fulfillment, #g_growth_engineering, #support_fulfillment, and #production about the unfreeze

Please keep this issue public.

cc @fulfillment-group @gl-growth 

Story points: 0.0
Create a flag for indicating existing subscriptions for a customer

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

We have a special condition for hiding some menu items in the navigation bar. If a customer has at least one purchase we show the menu item `Manage purchases` otherwise it's hidden. Right now we have [a special method](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/app/controllers/application_controller.rb#L50) for checking that condition. The problem is this method makes HTTP requests to Zuora for getting the list of subscriptions. And we do that every time we load our navigation bar.

You can test it locally by adding `httplog` gem to your `Gemfile` then go any page and start refreshing the page.

### Proposal

Create a special column for the Customer for indicating existing subscriptions for a customer.

### Result

Decreasing the amount of requests to Zuora and improved page load.

### Next steps (if any)

### How will we measure success?

Story points: 2.0
Potentially adopt a new API library

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

Right now we are using Rails controllers to add API endpoints, missing out on features like versioning and making it more difficult if we were to expand this API.

### Proposal

Discuss whether we want to use [Grape](https://github.com/ruby-grape/grape), [GraphQL](https://graphql-ruby.org/), or another library.

My understanding is that we are moving towards GraphQL on GitLab, but we should choose the best that fit our needs regardless.

### Next steps

We should then create a separate issue to discuss whether we want to migrate existing endpoints.

cc @fulfillment-group @gl-growth

Story points: 2.0
Stable Zuora crendentials for CI

### Problem
From time to time, normal Zuora passwords need to be updated from time to time as per the Zuora password retention policy.  Whenever this occurs to the Zuora credentials used for CI, there is confusion and blocked pipelines.

### Proposal
@rdavila suggested changing the Zuora credentials used for CI to a type of API credential that doesn't expire over time.  We need further investigation to determine how to create these types of creds.

### Result
More consistent runs on CI and less time to get MRs merged.

Story points: 2.0
Product audit; make `main_product` easy to reason about

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

[We're building out the UI](https://gitlab.com/gitlab-org/customers-gitlab-com/issues/679) for previously purchased products. Reading up on the current HAML templates there’s a lot of cases covered.

Without an exhaustive list of which products are still active; we’re forced to cover those same cases.

A concrete case of when we don't know what's coming back to us is causing problems https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/745#note_250156476
We can’t say for sure what’s going to come from a call to `main_product` - we’d expect it to be the Plan associated with a subscription; but we can’t say for sure.

### Proposal

Make the list of possible products simpler (deprecate products) or make it easier to educate oneself on the products (make active products visible).

Story points: 5.0
Flaky subscription spec

There is a [flaky test](https://gitlab.com/gitlab-org/customers-gitlab-com/-/jobs/363330404#L4245) in the subscription feature spec:

```
Failures:
  1) Subscriptions Successfully purchase and active subscription
     Failure/Error: find('h3', text: 'Billing Information', visible: true, wait: zuora_max_wait_time)
     Capybara::ElementNotFound:
       Unable to find visible css "h3" with text "Billing Information"
     # ./spec/features/subscriptions_spec.rb:133:in `block (2 levels) in <top (required)>'
```


It was not reproducable locall with the seed number.

Failed pipelines:

* https://gitlab.com/gitlab-org/customers-gitlab-com/-/jobs/363330404#L4245
* https://gitlab.com/gitlab-org/customers-gitlab-com/-/jobs/363907169
* https://gitlab.com/gitlab-org/customers-gitlab-com/-/jobs/367766502#L4307

Story points: 2.0
Close button of  alert component is showing in the wrong place

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "bug" label in relevant trackers:

- https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=bug
- https://gitlab.com/gitlab-org/customers-gitlab-com/issues?label_name%5B%5D=bug

and verify the issue you're about to submit isn't a duplicate.

Do not include confidential information! 
--->

### Summary

The close button of the `.alert` component is showing on the far right beside the edge of the screen.

### Steps to reproduce

- Go to payment methods page
- Add or edit a payment method
- Click submit
- The `.alert` component will be shown

### What is the current *bug* behavior?

The close button of the alert component is showing in the wrong place.

### What is the expected *correct* behavior?

The close button of the alert component should be shown within the parent container making the layout of the website consistent.

### Relevant logs and/or screenshots

![Screen_Shot_2019-11-28_at_09.14.44](/uploads/9bf885a2c4dae8acdf9c3f7adf47c04b/Screen_Shot_2019-11-28_at_09.14.44.png)

<!---
Please add both severity and priority level according to: https://docs.gitlab.com/ee/development/contributing/issue_workflow.html#severity-labels
--->

Story points: 1.0
Sentry Errors::MissingSalesforceAccountIdError

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "bug" label in relevant trackers:

- https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=bug
- https://gitlab.com/gitlab-org/customers-gitlab-com/issues?label_name%5B%5D=bug

and verify the issue you're about to submit isn't a duplicate.

Do not include confidential information! 
--->

### Summary

We get a large amount of these errors in Sentry and we should investigate it and fix it: https://sentry.gitlab.net/gitlab/customersgitlabcom/issues/810657 

@rdavila Believes it is related to worker SyncGitlabGroupMemberWorker, which is used to update Salesforce when a user is added so that Support can understand what level of support to provide to a user.

### Steps

- [x] Delete the system hook(s) that points to `https://customers.gitlab.com/gitlab_system_hook` from `GL.com`
- [x] Drop logic related to `SyncGitlabGroupMemberWorker` from customers (routes / controllers / job)
- [x] Clean up of other changes that were introduced to allow the dropped logic (this will simplify the code)
- [x] Submit a MR to the cookbooks to remove the generation of the constant: https://gitlab.com/gitlab-cookbooks/cookbook-customers-gitlab-com/-/merge_requests/104
- [x] Create an issue for infrastructure to drop the value: https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/11569

Story points: 2.0
Don't redirect the user to /plans if no payment methods available

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

The user without payment methods will not be able to access the payment methods index page, instead, they'll be redirected to `/plans` page.

### Proposal

Don't redirect the user to the `/plans` page if they don't have any payment methods, instead, keep the user on the same page where we'll display a proper alert.

### Result

No user confusion when they want to add new payment methods or view current methods when the list is empty.

### Next steps (if any)

Schedule the issue.

### How will we measure success?

Story points: 1.0
Jest occasionally creates junit_jest.xml

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "bug" label in relevant trackers:

- https://gitlab.com/gitlab-org/gitlab/issues?label_name%5B%5D=bug
- https://gitlab.com/gitlab-org/customers-gitlab-com/issues?label_name%5B%5D=bug

and verify the issue you're about to submit isn't a duplicate.

Do not include confidential information! 
--->

### Summary

Running frontend tests occasionally creates `junit_jest.xml` in the root directory.
Even we have a guard `if (process.env.CI)` for that file, I still see that file has been created.

### Steps to reproduce

I haven't figured out steps to reproduce that problem but I will do.

### What is the current *bug* behavior?

Running frontend tests occasionally creates `junit_jest.xml` in the root directory.

### What is the expected *correct* behavior?

This file must be created on CI env only.

### Relevant logs and/or screenshots
Here is the content of that file:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="jest tests" tests="4" failures="0" time="1.704">
  <testsuite name="ZuoraSubscription" errors="0" failures="0" skipped="0" timestamp="2019-11-25T07:04:13" time="1.058" tests="2">
    <testcase classname="ZuoraSubscription fires callback on success" name="ZuoraSubscription fires callback on success" time="0.005">
    </testcase>
    <testcase classname="ZuoraSubscription logs and recovers from malformed server response" name="ZuoraSubscription logs and recovers from malformed server response" time="0">
    </testcase>
  </testsuite>
  <testsuite name="isNumeric" errors="0" failures="0" skipped="0" timestamp="2019-11-25T07:04:13" time="1.061" tests="2">
    <testcase classname="isNumeric parses numeric values" name="isNumeric parses numeric values" time="0.002">
    </testcase>
    <testcase classname="isNumeric does not accept string numbers" name="isNumeric does not accept string numbers" time="0.001">
    </testcase>
  </testsuite>
</testsuites>
```

### Workarounds

(Ways to get around the issue)

### Reported examples

1. 
1. 
1. 

<!---
Please add both severity and priority level according to: https://docs.gitlab.com/ee/development/contributing/issue_workflow.html#severity-labels
--->

Story points: 1.0
Remove Zuora::RestClient

Follow-up from #745 

This is the original [comment](https://gitlab.com/gitlab-org/customers-gitlab-com/issues/745#note_241255135). I will post the important parts in here again:

> I checked the following calls for Zuora::RestClient (all that I could find) and everything can be replace by Ironbank calls:
> 
> https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/app%2Fcontrollers%2Freceipts_controller.rb#L14:
> 
> ```
> response = IronBank.client.connection.get("/v1/files/#{file_id}")
> ```
> 
> https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/app/workers/bulk_download_invoice.rb#L23:
> 
> ```
> response = IronBank.client.connection.get("/v1/files/#{invoice_file.file_id}")
> ```
> 
> https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/lib%2Fzuora%2Fdigital_signature.rb#L13-19:
> 
> ```
> response = IronBank.client.connection.post(
>   '/v1/rsa-signatures',
>   'uri' => APP_CONFIG.zuora.payment_page_url,
>   'method' => 'POST',
>   'pageId' => payment_page_id
> )
> 
> OpenStruct.new(response.body)
> ```
> 
> https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/lib%2Fzuora%2Fdigital_signature.rb#L23-29:
> 
> ```
> response = IronBank.client.connection.post(
>   '/v1/rsa-signatures/decrypt',
>   'publicKey' => key,
>   'method' => 'POST',
>   'signature' => signature
> )
> 
> _url, tenant_id, token, timestamp, page_id = response.body['decryptedSignature'].split('#')
> ```

Story points: 3.0
Add frontend documentation

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

All guidelines, caveats or tips that we follow are not documented in a single place, people contributing to this project are not aware of it, and it doesn't exist to serve as a reference.

### Proposal

Add all guidelines, caveats or tips that we follow to `doc/frontend.md`.

### Result

Everything we do will be clear to any contributor and maintainer.

### Next steps (if any)

- [ ] Ask the team what topics we should cover in the frontend documentation

### How will we measure success?

Story points: 6.0
Add E2E tests for sign in

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

We don't have E2E tests for sign in. That's why we encountered #857 during manual testing. We should catch these errors during automatic tests (`rspec`). Adding these tests will also cover the integration layer between the Browser and the Web Server, things like CSRF token.

### Proposal

Write E2E test for sign in.

### Result

Catch possible sign in errors on running tests

### Next steps (if any)

### How will we measure success?

* Increased code coverage
* Decreased errors rate

Story points: 1.0
Investigate flaky spec in gon_helper_spec.rb

### Problem
We noticed after #616 merged, the staging pipeline failed because of one particular spec.  This spec passes in isolation locally but we were able to reproduce the failure when running the full test suite with a specific seed.

```
Failures:

  1) GonHelper does not inject variables on json requests (as an optimization)
     Failure/Error: expect(Gon.all_variables).to be_empty
       expected `{"features"=>{:pajamas_design_system=>false}, "is_signed_in"=>false}.empty?` to return true, got false
     # ./spec/controllers/concerns/gon_helper_spec.rb:44:in `block (2 levels) in <top (required)>'

Finished in 1 minute 40.35 seconds (files took 7.66 seconds to load)
1176 examples, 1 failure, 1 pending

Failed examples:

rspec ./spec/controllers/concerns/gon_helper_spec.rb:41 # GonHelper does not inject variables on json requests (as an optimization)

Randomized with seed 60133
```

### Proposal
Address the flaky spec.

### Result
A more consistent green test suite.

### Next steps (if any)

### How will we measure success?

Story points: 1.0
Ensure feature specs are not asserting on hidden elements

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

Raised in https://gitlab.com/gitlab-org/customers-gitlab-com/merge_requests/722#note_246967622

We're currently using `Capybara.ignore_hidden_elements = false` in our feature specs, in large part because we're asserting `hidden` loading spinners are not active.

This leads to non-obvious failures like https://gitlab.com/gitlab-org/customers-gitlab-com/issues/853

Since feature specs are E2E and should assert on what the user can see and interact with; we should only be working with visible and interactable DOM elements.

### Proposal

Set a global `Capybara.ignore_hidden_elements = true` and fix any specs that are affected by this.

### Result

Feature specs more closely resemble how a user interacts with the customer portal.

### Next steps (if any)

### How will we measure success?

Story points: 3.0
[REST Update] Add ability to delete Iron Bank records

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem
The iron bank gem does not provide an out of box solution to delete records.

For e.g. previously with the `active_zuora` gem, an account could be updated as follows:

```ruby
account = customer.zuora_account
account.delete
```

This, is however, not possible with the Iron bank gem.

It provides `update`, `delete` and similar other CRUD classes to perform these operations: https://github.com/zendesk/iron_bank/tree/master/lib/iron_bank/actions

### Proposal
Add a `delete` method to delete records, that would internally invoke Iron Bank's `delete` api.

### Result


### Next steps (if any)
Consider moving the `delete` method to the iron bank gem.

### How will we measure success?

Story points: 2.0
Upgrade gem `webpacker` to 4.2.0

<!-- Please complete the template below as best as you can. Make sure to check if this issue has already been raised by someone else first to avoid duplication. 

For each section below, please add screenshots or links or anything that may help visual learners understand the problem better, even if this takes you an extra minute or two this is a great help to some folks.

https://www.learning-styles-online.com/style/visual-spatial/

-->

### Problem

We had a problem with the `webpacker` in the past. Especially when it continued working when `yarn:install` task failed. They addressed that issue in this release.

### Proposal

Upgrade gem `webpacker` to 4.2.0

### Result

* We receive updated `style-loader` package
* We can remove [our ad-hoc solution](https://gitlab.com/gitlab-org/customers-gitlab-com/blob/staging/lib/tasks/webpacker/yarn_install.rake) for the problem above 

### Next steps (if any)

### How will we measure success?

Story points: 1.0