From eaf9286b67536c73d03c0c9dde8c842f21032667 Mon Sep 17 00:00:00 2001 From: Unmesh Gundecha Date: Sun, 21 Feb 2021 13:54:08 +0800 Subject: [PATCH] Added sort test and switch to chai expect --- README.md | 105 ++++++++++++++++++++++------------------------ package-lock.json | 12 ++++++ package.json | 5 ++- test/main.spec.js | 26 ++++++++++-- 4 files changed, 89 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 70560c5..8c907de 100644 --- a/README.md +++ b/README.md @@ -224,28 +224,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools -
- Facebook - -### Videos - -* [A Customer Service Approach to SRE](https://www.usenix.org/conference/srecon19emea/presentation/looney) -* [How (Not) to Scale a Project: A Post-Mortem](https://www.usenix.org/conference/srecon19asia/presentation/bagnoli) -* [Releasing the World's Largest Python Site Every 7 Minutes](https://www.usenix.org/conference/srecon19asia/presentation/wong-shuhong) -* [Using ML to Automate Dynamic Error Categorization](https://www.usenix.org/conference/srecon19asia/presentation/davoli) - -
- -
- Fastly - -### Videos - -* [SRE & Product Management: How to Level up Your Team (and Career!) by Thinking like a Product Manager](https://www.usenix.org/conference/srecon19americas/presentation/wohlner) -* [Resilience Engineering Mythbusting](https://www.usenix.org/conference/srecon19americas/presentation/gallego) - -
-
eBay @@ -291,6 +269,28 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
+
+ Facebook + +### Videos + +* [A Customer Service Approach to SRE](https://www.usenix.org/conference/srecon19emea/presentation/looney) +* [How (Not) to Scale a Project: A Post-Mortem](https://www.usenix.org/conference/srecon19asia/presentation/bagnoli) +* [Releasing the World's Largest Python Site Every 7 Minutes](https://www.usenix.org/conference/srecon19asia/presentation/wong-shuhong) +* [Using ML to Automate Dynamic Error Categorization](https://www.usenix.org/conference/srecon19asia/presentation/davoli) + +
+ +
+ Fastly + +### Videos + +* [SRE & Product Management: How to Level up Your Team (and Career!) by Thinking like a Product Manager](https://www.usenix.org/conference/srecon19americas/presentation/wohlner) +* [Resilience Engineering Mythbusting](https://www.usenix.org/conference/srecon19americas/presentation/gallego) + +
+
GitHub @@ -360,6 +360,15 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
+
+ Gojek + +### Blog Posts + +* [Why We Swear by the RCA](https://blog.gojekengineering.com/why-we-swear-by-the-rca-f535fd5abbcb) + +
+
Google @@ -408,15 +417,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
-
- Gojek - -### Blog Posts - -* [Why We Swear by the RCA](https://blog.gojekengineering.com/why-we-swear-by-the-rca-f535fd5abbcb) - -
-
Grab @@ -666,25 +666,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
-
- Slalom Build - -### Blog Posts - -* [Beginners Guide to DevOps: How to Make It into the Industry](https://medium.com/slalom-build/beginners-guid-to-devops-how-to-make-it-into-the-industry-c1652d59807) -* [GitHub Actions: Beyond CI/CD](https://medium.com/slalom-build/github-actions-beyond-ci-cd-cb3ddc6abaa) -* [Why isn’t all test automation run on the pipeline?](https://medium.com/slalom-build/why-isnt-all-test-automation-run-on-the-pipeline-b2c57afbdf5a) -* [The Many Shapes of Site Reliability Engineering](https://medium.com/slalom-build/the-many-shapes-of-site-reliability-engineering-468359866517) -* [How to build a secure by default Kubernetes cluster with a basic CI/CD pipeline on AWS](https://medium.com/slalom-build/how-to-build-a-secure-by-default-kubernetes-cluster-with-a-basic-ci-cd-pipeline-on-aws-ebfe0da1c7c9) -* [Secret Management Architectures: Finding the balance between security and complexity](https://medium.com/slalom-build/secret-management-architectures-finding-the-balance-between-security-and-complexity-d857ceaa2300) -* [Detecting Malicious Requests with Keras & Tensorflow](https://medium.com/slalom-build/detecting-malicious-requests-with-keras-tensorflow-5d5db06b4f28) -* [The Lego Monolith — A Monolith Microservice Proof of Concept](https://medium.com/slalom-build/the-lego-monolith-a-monolith-microservice-proof-of-concept-a402ca1654e4) -* [Managing Secrets Using Hashicorp Vault](https://medium.com/slalom-build/managing-secrets-using-hashicorp-vault-ed6b9e0375ac) -* [Packaging Spring Boot Applications for Deployment on Kubernetes](https://medium.com/slalom-build/packaging-spring-boot-applications-for-deployment-on-kubernetes-5fb64bc65406) -* [Immutable Infrastructure and Continuous Delivery in the Cloud](https://medium.com/slalom-build/immutable-infrastructure-and-continuous-delivery-in-the-cloud-56ee4b31b8d5) - -
-
Scribd @@ -733,6 +714,25 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
+
+ Slalom Build + +### Blog Posts + +* [Beginners Guide to DevOps: How to Make It into the Industry](https://medium.com/slalom-build/beginners-guid-to-devops-how-to-make-it-into-the-industry-c1652d59807) +* [GitHub Actions: Beyond CI/CD](https://medium.com/slalom-build/github-actions-beyond-ci-cd-cb3ddc6abaa) +* [Why isn’t all test automation run on the pipeline?](https://medium.com/slalom-build/why-isnt-all-test-automation-run-on-the-pipeline-b2c57afbdf5a) +* [The Many Shapes of Site Reliability Engineering](https://medium.com/slalom-build/the-many-shapes-of-site-reliability-engineering-468359866517) +* [How to build a secure by default Kubernetes cluster with a basic CI/CD pipeline on AWS](https://medium.com/slalom-build/how-to-build-a-secure-by-default-kubernetes-cluster-with-a-basic-ci-cd-pipeline-on-aws-ebfe0da1c7c9) +* [Secret Management Architectures: Finding the balance between security and complexity](https://medium.com/slalom-build/secret-management-architectures-finding-the-balance-between-security-and-complexity-d857ceaa2300) +* [Detecting Malicious Requests with Keras & Tensorflow](https://medium.com/slalom-build/detecting-malicious-requests-with-keras-tensorflow-5d5db06b4f28) +* [The Lego Monolith — A Monolith Microservice Proof of Concept](https://medium.com/slalom-build/the-lego-monolith-a-monolith-microservice-proof-of-concept-a402ca1654e4) +* [Managing Secrets Using Hashicorp Vault](https://medium.com/slalom-build/managing-secrets-using-hashicorp-vault-ed6b9e0375ac) +* [Packaging Spring Boot Applications for Deployment on Kubernetes](https://medium.com/slalom-build/packaging-spring-boot-applications-for-deployment-on-kubernetes-5fb64bc65406) +* [Immutable Infrastructure and Continuous Delivery in the Cloud](https://medium.com/slalom-build/immutable-infrastructure-and-continuous-delivery-in-the-cloud-56ee4b31b8d5) + +
+
Soundcloud @@ -876,8 +876,7 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
-
- SRECon Mix Playlist +## SRECon Mix Playlist ### Videos @@ -910,8 +909,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools * [Yelp - What I Wish I Knew before Going On-Call](https://www.usenix.org/conference/srecon19emea/presentation/shu) * [Zendesk - Latency and Availability Error Budgets Done Right at Scale](https://www.usenix.org/conference/srecon20americas/presentation/moyer) -
- --- ## Resources diff --git a/package-lock.json b/package-lock.json index 9c0bda5..ae5fbab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -110,6 +110,18 @@ "type-detect": "^4.0.5" } }, + "chai-arrays": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz", + "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==", + "dev": true + }, + "chai-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.5.0.tgz", + "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==", + "dev": true + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", diff --git a/package.json b/package.json index 0a857ec..2669589 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,9 @@ "homepage": "https://github.com/upgundecha/howtheysre#readme", "devDependencies": { "chai": "^4.3.0", + "chai-arrays": "^2.2.0", + "chai-string": "^1.5.0", "mocha": "^8.3.0" - } + }, + "dependencies": {} } diff --git a/test/main.spec.js b/test/main.spec.js index 18f456e..cca4099 100644 --- a/test/main.spec.js +++ b/test/main.spec.js @@ -1,18 +1,36 @@ const fs = require('fs'); -const { assert } = require('chai'); +const chai = require('chai'); + +chai.use(require('chai-arrays')); +chai.use(require('chai-string')); + +var expect = chai.expect; const srcMd = fs.readFileSync('README.md', 'utf8'); describe('Header', function() { it('Starts with #', function() { - assert.isOk(srcMd.startsWith('# How they SRE'), 'Header is broken'); + expect(srcMd).to. startsWith('# How they SRE'); }); }); describe('Sections', function() { - ['Introduction', 'Organizations', 'Resources', 'Credits', 'Other How They... repos', 'Contribute', 'License'] .forEach(function (section) { + ['Introduction', + 'Organizations', + 'Resources', + 'Credits', + 'Other How They... repos', + 'Contribute', + 'License'].forEach(function (section) { it(`${section}`, function() { - assert.isOk(srcMd.includes(`## ${section}`), `${section} section is missing`); + expect(srcMd).to.contain(`## ${section}`); }); }); +}); + +describe('Order', function() { + it('Organization list is sorted', function() { + var list = srcMd.match(/(?<=)(.*?)(?=<\/summary>)/g); + expect(list).to.be.sorted(Intl.Collator().compare); + }); }); \ No newline at end of file