|
1 | | -This project is intended to be a static website representing a technical and software engineering blog. |
2 | | - |
3 | | -Project structure |
4 | | -- Layout folder |
5 | | - - It contains files and component to support overall them and layout of the site |
6 | | -- wwwroot |
7 | | - - This folder is responsible for custom theming and acts as a starter point for site startup |
8 | | -- Pages |
9 | | - - This folder can be ignored for now as its deprecated |
10 | | -- Blog |
11 | | - - This folder has main things going on. This folder has files and component that support in writing the blog content. |
12 | | - - Steps on how to write a blog using the component inside the project |
13 | | - - Blog started with defining the header of the blog using `TestArena.Blog.Common.Header` Component |
14 | | - - It takes blog title, image, published on date and authors like below and created the content like in image below ![[Pasted image 20250316123234.png]] |
15 | | - - Images will be stored and read taken from the wwwroot/images/blog/<BLOG_TOPIC>/<BLOG_CHAPTER> folder |
16 | | - - After this, the blog starts normally with the content |
17 | | - - The whole article will be placed under `TestArena.Blog.Common.Section` component like in below image ![[Pasted image 20250316124801.png]] |
18 | | - - Anything that starts with a heading will be counted as a section and `TestArena.Blog.Common.Section` Component will be used for it. |
19 | | - - This component will take the following details |
20 | | - - Heading: It will be the heading of the section |
21 | | - - Level: This will tell the impact/font weight of the heading. Will range from 1 to 6. 1 being largest and 6 being smallest. |
22 | | - - All other details will go inside child component |
23 | | - - An example of usage of Section component is given in image below |
24 | | - - ![[Pasted image 20250316123152.png]] |
25 | | - - The blog will have images as well in between |
26 | | - - Each image will be rendered using `TestArena.Blog.Common.BlogImage` Component. It will take below params |
27 | | - - Image path: Path of the image. Usually it will be `wwwroot/images/blog/<BLOG_TOPIC>/<BLOG_CHAPTER> folder` |
28 | | - - Description: Description of the image |
29 | | - - Number: This will be the number which will represent the image number based on where it is placed in the blog. While deciding this number, header image will not be taken into account. |
30 | | - - Example usage: ![[Pasted image 20250316123639.png]] |
31 | | - - Blog will also contain code snippets at places |
32 | | - - Each code snippet will use the the component `TestArena.Blog.Common.GithubGistSnippet` Component. |
33 | | - - To make this component work, we will have to create a github jist first for the code snippet and use its id inside it. |
34 | | - - It will take the below params: |
35 | | - - Title: This represent the purpose of the code piece |
36 | | - - UserId: UserId of the use who has hosted the gist code |
37 | | - - FileName: Id of the gist file. For automated conversions use the default gist id `d5a6faaf1e103a6f90c0e92bcc69a440` |
38 | | - - Example usage: ![[Pasted image 20250316124241.png]] |
39 | | - - Blog might also contain lists at some times |
40 | | - - Use the `TestArena.Blog.Common.List` component for that. It will use the below params: |
41 | | - - Heading: Heading of the list |
42 | | - - HeadingLevel: This will tell the impact/font weight of the heading. Will range from 1 to 6. 1 being largest and 6 being smallest. |
43 | | - - ChildContents: This would be of type `List<RenderFragment>`. Example list creation looks like in below image![[Pasted image 20250316124546.png]] |
44 | | - - Example list usage looks like in image below ![[Pasted image 20250316124617.png]] |
45 | | - - |
| 1 | +# TestArena |
| 2 | + |
| 3 | +Welcome to **TestArena**, a comprehensive repository designed to explore and demonstrate advanced concepts in software development, testing, and modern web practices. This repository serves as a learning hub for developers, showcasing practical examples, tutorials, and best practices across various domains like integration testing, security, and custom web components. |
| 4 | + |
| 5 | +## What This Repository Covers |
| 6 | + |
| 7 | +1. **Integration Testing in .NET** |
| 8 | + Learn how to write robust integration tests for .NET Core APIs using tools like `WebApplicationFactory`, `WireMock.Net`, and containerized databases. The repository includes step-by-step guides and examples for: |
| 9 | + - Testing APIs with third-party service dependencies. |
| 10 | + - Handling authentication in integration tests. |
| 11 | + - Managing database dependencies in tests. |
| 12 | + |
| 13 | +2. **Security Practices** |
| 14 | + Explore techniques for detecting and mitigating vulnerabilities in .NET projects. Learn how to integrate vulnerability detection into your CI/CD pipelines and ensure secure application development. |
| 15 | + |
| 16 | +3. **Custom Web Components** |
| 17 | + Dive into the world of Web Components and learn how to create reusable, encapsulated HTML elements using Custom Elements, Shadow DOM, and HTML Templates. This section includes practical examples like building a `<user-profile>` custom element. |
| 18 | + |
| 19 | +4. **Contract Testing with PactNet** |
| 20 | + Understand how to implement consumer-driven contract testing using the Pact framework. The repository demonstrates both consumer-side and provider-side testing, along with integration with PactFlow. |
| 21 | + |
| 22 | +5. **Modern Web Development Practices** |
| 23 | + Gain insights into building scalable, maintainable, and high-performance applications using modern tools and frameworks. |
| 24 | + |
| 25 | +## Why Use This Repository? |
| 26 | + |
| 27 | +- **Hands-On Learning**: Each topic is accompanied by real-world examples and code snippets to help you understand and implement the concepts effectively. |
| 28 | +- **Comprehensive Coverage**: From testing to security to custom web components, this repository covers a wide range of topics relevant to modern software development. |
| 29 | +- **Best Practices**: Learn industry-standard practices for building secure, scalable, and maintainable applications. |
| 30 | + |
| 31 | +## How to Get Started |
| 32 | + |
| 33 | +1. Clone the repository: |
| 34 | + ```bash |
| 35 | + git clone https://github.com/ajaysskumar/TestArena.git |
| 36 | + cd TestArena |
0 commit comments