Devs + QA #62
Replies: 0 comments 8 replies
-
Browse CausesThis layout assumes that we are a landing point from a call to action that an advocacy group puts out on social media, email blasts, and other comms - but not the first time the constituent is hearing about the cause. That's why we are letting the campaigns be a simple gallery while the landing page is where there is more context per the campaign requests. Open Issues (by priority)
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Choose Representative
|
Beta Was this translation helpful? Give feedback.
-
Review LetterUser Story
|
Beta Was this translation helpful? Give feedback.
-
Validate AddressUser Story:
Frontend:
Backend
QA
|
Beta Was this translation helpful? Give feedback.
-
Select DonationUser stories:
Frontend:
Backend
QA |
Beta Was this translation helpful? Give feedback.
-
Finalize Checkout & Send LetterUser Story
Frontend:
|
Beta Was this translation helpful? Give feedback.
-
Action CompleteUser Story:
Frontend:
|
Beta Was this translation helpful? Give feedback.
-
Goal
Our challenge is to make the Amplify App for robust. Security is just as important to advocacy groups as it is to us.
Priorities:
Table of Contents
Context:
GMT20220129-002704_Recording_as_1680x956.mp4
Throughout this hackathon, we're going to be going from a single page app structure
To abstracting and implementing the database as well as several other APIs
Our framework: Test Driven Development
Security modeling should be something we think across the SDLC, especially at the time of commitment. Although we have CodeQL and other scanning tools - buildsafes, bugs, and other QA concerns need you. Our goal is to have a unit and integration test across functions and API integrations. Learn more here:
Types of Tests (We use Jest):
Read More
Unit: Unit tests cover blocks of code to ensure they run without problems. A tested unit can be a function, a module, a class. Unit tests should be isolated and independent of each other. For a given input, unit test checks the result. It can help you make sure that individual parts of your applications work as expected by finding problems early and avoiding regressions.
Integration tests:
Even if all your unit test pass, it still just means that the parts are working well on their own. Still, the application might fail. Integration tests cover cross-module processes, where individual modules are combined and tested while working together. Thanks to them you can provide a way to ensure that your code works well as a whole.
Add a regression test/fix a bug
Read More
The purpose of regression testing is to make sure that you never make the same mistake twice. When you fix a bug, you should add a regression test, which is designed to fail if the same bug is ever reintroduced. I don’t think regression testing is controversial, but it often feels like a waste of time to write a test for a bug that you already fixed. Realistically, how likely is it that somebody will ever reintroduce the exact same bug? It’s a tempting step to skip if you’re in a hurry. These are the reasons why I think it’s important:
Proof that the bug is fixed. I like to add the regression test as the first commit, before the commit that fixes the bug, so that I can easily confirm that the test fails without the bug fix and succeeds with it.
Code coverage. Bug fixes often add a new if-condition to the code. The regression test ensures that the new code has coverage. If a future developer is tempted to remove the if-condition because they don’t understand what it’s for, then the test will fail.
Improving the fuzzing corpus. Fuzzers work best with a corpus of sample inputs. In the case of Exiv2, the files in the test/data subdirectory are also useful as a corpus. Every time we add a new regression test, we are improving the quality of the corpus.
User Journey
Constituent: Our main bases of end users of this platform are constituents found across. They are motivated by convenience, updates, and their role within their community.
Advocacy Groups: Are looking to make it easy for their requests for change understood, looking at data of how users are interacting with issues
Logic Model explaining interaction between client side, server, database, and APIs
Resources
Data Structures
Campaigns
This is the major data table we use to onboard every advocacy
id is the key identifier as there can be multiple orgs to one campaign
organization is an array of strings of the orgs behind a particular advocacy
name the name of the advocacy
cause the area the cause focuses on
page_url refers to the main site hosting the information to learn more about said cause
letters_counter how many letters have been sent to date
letter_versions
This data is sent to Lob, primarily template_id which is specific to each campaign by office division.
This data structure triages the letter object that's being displayed and sent, specific to the template_id of the region that's being picked by the office.
keyID: use to create join or belong relationships for Users, Campaigns, and Letters sent
template_id: lob html template
office_division: each campaign has a different letter dependent on filter. Federal is the default.
state: Custom versions per state
county: Custom versions per county
CampaignID: maps to campaigns table
Constituent Table: (not yet being used in signname.vue)
Getting Started
Pick a feature
Beta Was this translation helpful? Give feedback.
All reactions