- Summary.
- What is Bangarang?
- Does Bangarang have a demo?
- How to deploy a new Bangarang instance?
- Bangarang development practice.
- Project Tree Information
- Features Status
- Technical Integration Status
Bangarang is an open source and free direct democratic claim system. It allows anybody to declare or search for claim and claiming for them.
This project uses an iterative product management approach. Previous dev sessions are available in French as DeVLOG on YouTube.
The current production instance of Bangarang is available here.
Bangarang is actually configured to be deployed continuously on Vercel with GitHub integration. It means when you make changes on GitHub, Vercel will be triggered to redeploy a new instance of Bangarang depending on the branch you have made the change.
Actually, Bangarang have only one persistent database option based on Google Cloud Platform Datastore technology.
In order to configure Bangarang with your own GCP Datastore instance, you must set the following environment variables:
NODE_ENV=**ENVIRONMENT**
REST_ENDPOINT_FQDN=**NODE INSTANCE FQDN**
REST_ENDPOINT_SHEME=**http or https**
GCP_DATASTORE_PROJECT_ID='{"gcpProjectId":"**YOUR GCP DATASTORE INSTANCE PROJECT ID**"}'
GCP_DATASTORE_CLIENT_EMAIL='{"gcpClientEmail":"**YOUR GCP DATASTORE INSTANCE SERVICE ACCOUNT EMAIL**"}'
GCP_DATASTORE_PRIVATE_KEY='{"gcpPrivateKey":"**YOUR GCP DATASTORE INSTANCE SERVICE ACCOUNT PRIVATE KEY**"}'
GCP_DATASTORE_KIND_PREFIX='{"gcpKindPrefix":"**OPTIONAL GCP KIND PREFIX**"}'
These environment variables can be set through your system and/or with a
.env
file for development purpose.
Bangarang server will crash during starting if some environment variables are missing.
npm install
Bangarang will be executed in a dev/watch way.
npm run dev
The build prepare Bangarang optimized artifacts (reduced Tailwind CSS).
npm run build
npm run start
Bangarang is developed through the following practices/methodologies (we try to ๐):
- Clean Code
- Clean Architecture / Hexagonal Architecture
- Business Logic
- Acceptance Test Driven Development (ATDD) based on Behavior Driven Development feature examples/scenarios.
- Test Driven Development when obvious implementation is not found.
- Adapters integration.
- Test After suite created from Fake Adapters
- Production technology adapters developed from the previous test suite with a test first way.
In that way, we expect that Bangarang can evolve its technology and/or business logic and/or design in a sustainable development.
Bangarang is principally developed with Typescript. But it is also implementing Svelte/Typescript files for front-end components.
Bangarang is using Mocha and Chai testing and assertion libraries.
Current Bangarang business logic can be tested through the following command:
npm run test:acceptance
Each feature is described by BDD example scenarios that are at the end translated into code test suite by following the following process:
- discuss the feature and imagine working and non-working examples
- write the feature and its examples in a feature text file. Write the feature help people make sure the feature, examples and ubiquitous language are understandable for all. Current features are using a Gherkin or AAA or State/Event/Consequences way of specifying examples
- translate the text example into a code test suite in an iterative way. Each assertion must be done by following the TDD cycles (Red โ Green โ Refactor)
- while features are not added to the project, it is allowed to experiment refactoring sessions
- features use Clean Architecture design pattern. By default, the feature uses Fake Adapters (in memory). That way, all the business logic can be validated in seconds in order to provide close to instant feedback
- if a part of the business logic doesn't have an obvious implementation, then a specific unit test suite can be applied in a more TDD baby step approach order to absorb the difficulty.
217 passing (110ms)
Current Bangarang technologies can be tested through the integration test suite by executing the following command:
npm run test:integration
Each adapter has its own test suite. The test suite is made in a Test After methodology of testing all methods of the Fake Adapter required by the Business Logic contract (Port interface).
Production adapters that have to implement the Port of the Business Logic are created without implementation and are validated in a Test First/TDD way.
- Svelte UI provided by Sapper middleware used on Node.js Express JS back-end server.
- Style components implements Tailwind CSS classes on HTML parts.
- Svelte & Sapper component are built with Rollup configuration.
- The business logic is actually hosted on front-end.
- It is planned to move the critical business logic into the back-end and use instead simple command/query on backend when required.
- Business Logic use cases are executed from the User class.
- The Business Logic interact indirectly with front-end Svelte components by using Svelte Stores (publisher/subscriber svelte components).
- The Business logic interact with persistent databases by sending Rest requests to the back-end.
- The express server has HTTP/REST routes used by client business logic in order to execute GCP Adapter methods.
- It is planned to define command/query use cases on backend.
.
โโโโ.vscode------------------------Specific VS Code
โโโโdoc
โ โโโโdev------------------------Technical/Developer Documentation
โ โโโโmarket---------------------Marketing / Product Documentation
โ โโโโui-------------------------User Interface Documentation
โ โโโโux-------------------------User Experience Documentation
โโโโsrc
โ โโโโassets---------------------/!\ Specific Sapper /!\
โ โโโโclient
โ โ โโโโadapters---------------Clean Architecture - Client Adapters (Primary & Secondary)
โ โ โโโโbusinessLogic
โ โ โ โโโโentities-----------Clean Architecture - Business Logic/Core - Entities
โ โ โ โโโโcommands-----------Clean Architecture - Business Logic/Core - Use Cases
โ โ โโโโcomponents-------------Svelte Components
โ โ โโโโinterfaces-------------UI/Svelte Specific interfaces excluded from Clean Architecture
โ โ โโโโlogic------------------UI/Svelte Specific logic excluded from Clean Architecture
โ โ โโโโport-------------------Clean Architecture - Ports/Interfaces
โ โ โโโโstores-----------------Svelte Stores
โ โ โโโโviews------------------Svelte Specific View Components
โ โโโโnode_modules---------------/!\ Specific Sapper /!\
โ โโโโroutes---------------------Sapper Routes
โ โโโโtests
โ โโโโacceptance-------------Business Logic / Core Tests
โ โโโโintegration------------Integration / Adapter Tests
โโโโstatic-------------------------Sapper Static Files
โโโโ__sapper__---------------------/!\ Specific Sapper /!\
Feature: Claiming
As a Bangarang Member
In order to claim
I want to claim on claim
Scenario: Claiming For
โ Given the user is signed in
โ And the claim with id 'claim' is declared on Bangarang with the following values:
| claim title |claimed people| claimed For people | claimed Against people|
| claim title | 10 | 10 | 0 |
โ When the user claim 'For' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Success' status and 'Claimed.' message.
โ And the 'peopleClaimed' quantity on claim 'claim title' is 11
โ And the 'peopleClaimedFor' quantity on claim 'claim title' is 11
โ And the 'peopleClaimedAgainst' quantity on claim 'claim title' is 0
โ And the user view is "claim".
Scenario: Claiming Against
โ Given the user is signed in
โ And the claim with id 'claim' is declared on Bangarang with the following values:
| claim title |claimed people| claimed For people | claimed Against people|
| claim title | 20 | 0 | 20 |
โ When the user claim 'Against' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Success' status and 'Claimed.' message.
โ And the 'peopleClaimed' quantity on claim 'claim title' is 21
โ And the 'peopleClaimedFor' quantity on claim 'claim title' is 0
โ And the 'peopleClaimedAgainst' quantity on claim 'claim title' is 21
โ And the user view is "claim".
Scenario: Claim not declared on Bangarang
โ Given the user is signed in
โ And there is no declared claims on Bangarang
โ When the user claim 'Against' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Failed' status and 'The claim 'claim' is not declared on Bangarang.' message.
โ And the user view is "claim".
Scenario: User not Signed In
โ Given the user is not signed in
โ And the claim with id 'claim' is declared on Bangarang with the following values:
| claim title |claimed people| claimed For people | claimed Against people|
| claim title | 20 | 0 | 20 |
โ When the user claim 'Against' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Failed' status and 'You must be signed in in order to claim.' message.
โ And the 'peopleClaimed' quantity on claim 'claim title' is 20
โ And the 'peopleClaimedFor' quantity on claim 'claim title' is 0
โ And the 'peopleClaimedAgainst' quantity on claim 'claim title' is 20
โ And the user view is "SigningInMenu".
Scenario: Can't claim For multiple times
โ Given the user is signed in
โ And the claim with id 'claim' is declared on Bangarang with the following values:
| claim title |claimed people| claimed For people | claimed Against people|
| claim title | 10 | 10 | 0 |
โ And the user has previously claimed 'For' on claim 'claim title'
โ When the user claim 'For' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Failed' status and 'Claiming 'For' multiple times on a claim is forbidden.' message.
โ And the 'peopleClaimed' quantity on claim 'claim title' is 10
โ And the 'peopleClaimedFor' quantity on claim 'claim title' is 10
โ And the 'peopleClaimedAgainst' quantity on claim 'claim title' is 0
โ And the user view is "claim".
Scenario: Can't claim Against multiple times
โ Given the user is signed in
โ And the claim with id 'claim' is declared on Bangarang with the following values:
| claim title |claimed people| claimed For people | claimed Against people|
| claim title | 10 | 9 | 1 |
โ And the user has previously claimed 'Against' on claim 'claim title'
โ When the user claim 'Against' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Failed' status and 'Claiming 'Against' multiple times on a claim is forbidden.' message.
โ And the 'peopleClaimed' quantity on claim 'claim title' is 10
โ And the 'peopleClaimedFor' quantity on claim 'claim title' is 9
โ And the 'peopleClaimedAgainst' quantity on claim 'claim title' is 1
โ And the user view is "claim".
Scenario: user change claim choice For > Against
โ Given the user is signed in
โ And the claim with id 'claim' is declared on Bangarang with the following values:
| claim title |claimed people| claimed For people | claimed Against people|
| claim title | 10 | 10 | 0 |
โ And the user has previously claimed 'For' on claim 'claim title'
โ When the user claim 'Against' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Success' status and 'Claimed.' message.
โ And the 'peopleClaimed' quantity on claim 'claim title' is 10
โ And the 'peopleClaimedFor' quantity on claim 'claim title' is 9
โ And the 'peopleClaimedAgainst' quantity on claim 'claim title' is 1
โ And the user view is "claim".
Scenario: user change claim choice Against > For
โ Given the user is signed in
โ And the claim with id 'claim' is declared on Bangarang with the following values:
| claim title |claimed people| claimed For people | claimed Against people|
| claim title | 10 | 0 | 10 |
โ And the user has previously claimed 'Against' on claim 'claim title'
โ When the user claim 'For' on the claim with title 'claim title'
โ Then the user has a 'Claiming.' notification with 'Success' status and 'Claimed.' message.
โ And the 'peopleClaimed' quantity on claim 'claim title' is 10
โ And the 'peopleClaimedFor' quantity on claim 'claim title' is 1
โ And the 'peopleClaimedAgainst' quantity on claim 'claim title' is 9
โ And the user view is "claim".
Feature: Declaring Claim
As a guest or a Bangarang Member
In order to claim or share a claim
I want to declare a claim
Scenario: Declaring Simple Claim
โ Given the user current view is the "declaring claim menu"
โ And the claim with id 'claimId' is not declared on Bangarang.
โ When the user declare a new 'Simple' claim with title 'expectedClaim'.
โ Then the claim with title 'expectedClaim' is declared on Bangarang.
โ And the user has a 'Declaring claim.' notification with 'Success' status and 'Declared.' message.
โ And the user current view is the "claimId"
Scenario: Claim with same title already exist
โ Given the user current view is the "declaring claim menu"
โ And the claim with id 'claimId' and title 'expectedClaim' is declared on Bangarang.
โ When the user declare a new 'Simple' claim with title 'expectedClaim'.
โ Then the new claim is not declared on Bangarang.
โ And the user has a 'Declaring claim.' notification with 'Failed' status and 'The claim "expectedClaim" already exist.' message.
โ And the user current view is the "claimId"
Scenario: Claim with same title uppercase already exist
โ Given the user current view is the "declaring claim menu"
โ And the claim with id 'claimId' is declared on Bangarang.
โ When the user declare a new 'Simple' claim with title 'EXPECTEDCLAIM'.
โ Then the new claim is not declared on Bangarang.
โ And the user has a 'Declaring claim.' notification with 'Failed' status and 'The claim "EXPECTEDCLAIM" already exist.' message.
โ And the user current view is the "claimId"
Scenario: Claim with empty title
โ Given the user current view is the "declaring claim menu"
โ When the user declare a new 'Simple' claim with title ''.
โ Then the new claim is not declared on Bangarang.
โ And the user has a 'Declaring claim.' notification with 'Failed' status and 'A claim must have a title.' message.
โ And the user current view is the "declaring claim menu"
Feature: Registering
As a guest,
In order to claim,
I want to register on Bangarang.
Scenario: Register on Bangarang.
โ Given the user is not signed in as 'johndoe'.
โ And there is no 'johndoe' Bangarang member'
โ When the user register on Bangarang with the following parameters:
| username | password | email | fullname |
| johndoe | "(VRVdFrr4jF'Rx7 | john@doe.com | John Doe |
โ Then 'johndoe' is a Bangarang member with the following parameters:
| username | password | email | fullname |
| johndoe | "(VRVdFrr4jF'Rx7 | john@doe.com | John Doe |
โ And the user has a 'Registering.' notification with 'Success' status and 'Registered.' message.
Scenario: Invalid email.
โ Given the user is not signed in as 'johndoe'.
โ And there is no 'johndoe' Bangarang member'
โ When the user register on Bangarang with the following parameters:
| username | password | email | fullname |
| johndoe | "(VRVdFrr4jF'Rx7 | johndoe.com | John Doe |
โ And there is no 'johndoe' Bangarang member'
โ And the user has a 'Registering.' notification with 'Failed' status and 'Email invalid.' message.
Scenario: Invalid email 2.
โ Given the user is not signed in as 'johndoe'.
โ And there is no 'johndoe' Bangarang member'
โ When the user register on Bangarang with the following parameters:
| username | password | email | fullname |
| johndoe | "(VRVdFrr4jF'Rx7 | john@doe. | John Doe |
โ And there is no 'johndoe' Bangarang member'
โ And the user has a 'Registering.' notification with 'Failed' status and 'Email invalid.' message.
Scenario: Unsecure Password.
โ Given the user is not signed in as 'johndoe'.
โ And there is no 'johndoe' Bangarang member'
โ When the user register on Bangarang with the following parameters:
| username | password | email | fullname |
| johndoe | password | john@doe.com | John Doe |
โ And there is no 'johndoe' Bangarang member'
โ And the user has a 'Registering.' notification with 'Failed' status and 'Unsecure password.' message.
Scenario: Already member of Bangarang.
โ Given the user is not signed in as 'johndoe'.
โ And 'johndoe' is a Bangarang member with the following parameters:
| username | password | email | fullname |
| johndoe | "(VRVdFrr4jF'Rx7 | john@doe.com | John Doe |
โ When the user register on Bangarang with the following parameters:
| username | password | email | fullname |
| johndoe | "(VRVsdfsdfdFrr4jF'Rx7 | johnny@doe.com | Johnny Doe |
โ Then 'johndoe' is a Bangarang member with the following parameters:
| username | password | email | fullname |
| johndoe | "(VRVdFrr4jF'Rx7 | john@doe.com | John Doe |
โ And the user has a 'Registering.' notification with 'Failed' status and 'Already member of Bangarang.' message.
Feature : Retrieving Claim
As a guest or a Bangarang Member
In order to share a claim or to claim
I want to retrieve a claim
Scenario: Retrieve Claim as Guest
โ Given the user is signed in
โ And the claim 'Claim Title' with id 'claimId' is declared on Bangarang
โ When the user retrieve the claim with title 'Claim Title'
โ Then the retrieved claim in the claim user notification has the following information:
| title | people claimed | people claimed for | people claimed against | previous user claim choice |
| Claim Title | 10 | 9 | 1 | undefined |
โ And the user has a 'Retrieving claim.' notification with 'Success' status and 'Claim retrieved.' message.
Scenario: Retrieve Claim as Bangarang member that has not claimed yet
โ Given the user is signed in
โ And the user has not claimed on claim 'Claim Title'
โ And the claim 'Claim Title' is declared on Bangarang
โ When the user retrieve the claim with id 'claimId'
โ Then the retrieved claim in the claim user notification has the following information:
| title | people claimed | people claimed for | people claimed against | previous user claim choice |
| Claim Title | 10 | 9 | 1 | undefined |
โ And the user has a 'Retrieving claim.' notification with 'Success' status and 'Claim retrieved.' message.
Scenario: Retrieve Claim as Bangarang member that has claimed For
โ Given the user is signed in
โ And the user has claimed 'For' on claim 'Claim Title'
โ And the claim 'Claim Title' is declared on Bangarang
โ When the user retrieve the claim with id 'claimId'
โ Then the retrieved claim in the claim user notification has the following information:
| title | people claimed | people claimed for | people claimed against | previous user claim choice |
| Claim Title | 10 | 9 | 1 | For |
โ And the user has a 'Retrieving claim.' notification with 'Success' status and 'Claim retrieved.' message.
Scenario: Retrieve Claim as Bangarang member that has claimed Against
โ Given the user is signed in
โ And the user has claimed 'Against' on claim 'Claim Title'
โ And the claim 'Claim Title' is declared on Bangarang
โ When the user retrieve the claim with id 'claimId'
โ Then the retrieved claim in the claim user notification has the following information:
| title | people claimed | people claimed for | people claimed against | previous user claim choice |
| Claim Title | 10 | 9 | 1 | Against |
โ And the user has a 'Retrieving claim.' notification with 'Success' status and 'Claim retrieved.' message.
Scenario: Claim not found
โ Given the user is signed in
โ And the claim 'Claim Title' is not declared on Bangarang
โ When the user retrieve the claim with title 'claimId'
โ Then the retrieved claim is undefined
โ And the user has a 'Retrieving claim.' notification with 'Failed' status and 'The claim is not declared on Bangarang.' message.
Feature: Searching Claims
As a guest or a Bangarang Member,
In order to claim or share a claim,
I want to find claims
Scenario 1: order engine unit 1
โ Given there is the following declared claims:
[good people,good people1,good people 2,good 3 people,PEOPLE GOOD]
โ When the user search claims with search criteria 'good people'
โ Then the retreived claims is the following:
[good people,good people 2,PEOPLE GOOD,good 3 people,good people1]
โ And the user has a 'Searching Claims' notification with 'Success' status and '5 claims found.' message.
Scenario 2: order engine unit 2
โ Given there is the following declared claims:
[good 4 people,PEOPLE GOOD]
โ When the user search claims with search criteria 'good people'
โ Then the retreived claims is the following:
[PEOPLE GOOD,good 4 people]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 3: order engine unit 3
โ Given there is the following declared claims:
[good NOPE people,PEOPLE GOOD]
โ When the user search claims with search criteria 'good people'
โ Then the retreived claims is the following:
[PEOPLE GOOD,good NOPE people]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 4: order engine unit 4
โ Given there is the following declared claims:
[Bad NOPE Cookie,COOKIE BAD]
โ When the user search claims with search criteria 'Bad Cookie'
โ Then the retreived claims is the following:
[COOKIE BAD,Bad NOPE Cookie]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 5: order engine unit 5
โ Given there is the following declared claims:
[Third NOPE Thing,THING THIRD]
โ When the user search claims with search criteria 'Thing Third'
โ Then the retreived claims is the following:
[THING THIRD,Third NOPE Thing]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 6: order engine unit 6
โ Given there is the following declared claims:
[good 3 people,GOOD 4 PEOPLE]
โ When the user search claims with search criteria 'good people'
โ Then the retreived claims is the following:
[good 3 people,GOOD 4 PEOPLE]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 7: order engine unit 7
โ Given there is the following declared claims:
[third NOPE thing,THIRD LOREM THING]
โ When the user search claims with search criteria 'third thing'
โ Then the retreived claims is the following:
[third NOPE thing,THIRD LOREM THING]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 8: order engine unit 8
โ Given there is the following declared claims:
[third 3 thing,THIRD 4 THING]
โ When the user search claims with search criteria 'third thing'
โ Then the retreived claims is the following:
[third 3 thing,THIRD 4 THING]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 9: order engine unit 9
โ Given there is the following declared claims:
[third thing,THIRD THING]
โ When the user search claims with search criteria 'THIRD THING'
โ Then the retreived claims is the following:
[third thing,THIRD THING]
โ And the user has a 'Searching Claims' notification with 'Success' status and '2 claims found.' message.
Scenario 10: Searching Claims with one word
โ Given there is the following declared claims:
[claim,claim2,claim3,Claim4,CLAIME5,Cloum]
โ When the user search claims with search criteria 'claim'
โ Then the retreived claims is the following:
[claim,claim2,claim3,Claim4,CLAIME5]
โ And the user has a 'Searching Claims' notification with 'Success' status and '5 claims found.' message.
Scenario 11: Searching Claims with multiple words
โ Given there is the following declared claims:
[good people,good people1,good people 2,good 3 people,GOOD 4 PEOPLE,PEOPLE GOOD,Cloum]
โ When the user search claims with search criteria 'good people'
โ Then the retreived claims is the following:
[good people,good people 2,PEOPLE GOOD,good 3 people,GOOD 4 PEOPLE,good people1]
โ And the user has a 'Searching Claims' notification with 'Success' status and '6 claims found.' message.
Scenario 12: Searching Claims with one or multiple words
โ Given there is the following declared claims:
[good,people,good people,good 2 people,GOOD 4 PEOPLE,PEOPLE GOOD,Cloum]
โ When the user search claims with search criteria 'good people'
โ Then the retreived claims is the following:
[good people,PEOPLE GOOD,good 2 people,GOOD 4 PEOPLE,good,people]
โ And the user has a 'Searching Claims' notification with 'Success' status and '6 claims found.' message.
Scenario 13: No claims match search criteria
โ Given there is the following declared claims:
[cloum,cloum2,cloum3,Cloum4,CLOUME5]
โ When the user search claims with search criteria 'claim'
โ Then the retreived claims is the following:
[]
โ And the user has a 'Searching Claims' notification with 'Success' status and '0 claims found.' message.
Scenario 14: Claims found with bad lower/upper case search criteria
โ Given there is the following declared claims:
[cloum2,cloum3,Cloum4,CLOUME5,cloum]
โ When the user search claims with search criteria 'clOUm'
โ Then the retreived claims is the following:
[cloum,cloum2,cloum3,Cloum4,CLOUME5]
โ And the user has a 'Searching Claims' notification with 'Success' status and '5 claims found.' message.
Scenario 15: Claim with punctuation & search criteria without punctuation
โ Given there is the following declared claims:
[Guillermo Lasso est-il le prรฉsident de l'Equateur?]
โ When the user search claims with search criteria 'equateur'
โ Then the retreived claims is the following:
[Guillermo Lasso est-il le prรฉsident de l'Equateur?]
โ And the user has a 'Searching Claims' notification with 'Success' status and '1 claims found.' message.
Feature: Signing In
As a guest
In order to claim
I want to sign in Bangarang
Scenario: User Signing In
โ Given the user is not signed in
โ And there is 'johndoe' Bangarang member with password 'Password'
โ When the user signin as 'johndoe' with password 'Password'
โ Then the user is signed in as a Bangarang member with the following information:
| username | user fullname |
| johndoe | |
โ And the user has a 'Signing In' notification with 'Success' status and 'Signed In.' message.
Scenario: User already signed in
โ Given the user is already SignedIn
โ When the user signin as 'johndoe' with password 'Password'
โ Then the user has a 'Signing In' notification with 'Failed' status and 'Already signed in.' message.
Scenario: User is not a Bangarang member
โ Given the user is not signed in
โ And there is no 'johndoe' Bangarang member'
โ When the user signin as 'johndoe' with password 'Password'
โ Then the user has a 'Signing In' notification with 'Failed' status and 'Bad credentials. Verify credentials or register to Bangarang.' message.
Scenario: Bad credentials
โ Given the user is not signed in
โ And there is 'johndoe' Bangarang member with password 'Password'
โ When the user signin as 'johndoe' with password 'baspassword'
โ Then the user has a 'Signing In' notification with 'Failed' status and 'Bad credentials. Verify credentials or register to Bangarang.' message.
217 passing (113ms)
Bangarang Claim Interactor - Integration Test
Integration Test with 'fake' adapter.
โ claimById - error
โ claimByTitleIncencitiveCase - error
โ isClaimExistByTitleIncensitiveCase - error
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - error
โ saveClaim - error
save claim scenario
โ isClaimExistByTitleIncensitiveCase - The claim 'Claim with impoRtant stuff on It.' don't exist.
โ saveClaim - The claim 'Claim with impoRtant stuff on It.' is saved.
โ isClaimExistByTitleIncensitiveCase - The claim 'Claim with impoRtant stuff on It.' exist.
โ claimById - The claim 'Claim with impoRtant stuff on It.' can be retrieved by Id. โ claimByTitleIncencitiveCase - The claim 'Claim with impoRtant stuff on It.' can be retrieved by it's title.
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - The claim 'Claim with impoRtant stuff on It.' is retrieved with 'imporTant dog toto important' search criteria.
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - No claim is retrieved with 'dog' search criteria.
Integration Test with 'restFake' adapter.
โ claimById - error
โ claimByTitleIncencitiveCase - error
โ isClaimExistByTitleIncensitiveCase - error
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - error
โ saveClaim - error
save claim scenario
โ isClaimExistByTitleIncensitiveCase - The claim 'Claim with impoRtant stuff on It.' don't exist.
โ saveClaim - The claim 'Claim with impoRtant stuff on It.' is saved.
โ isClaimExistByTitleIncensitiveCase - The claim 'Claim with impoRtant stuff on It.' exist.
โ claimById - The claim 'Claim with impoRtant stuff on It.' can be retrieved by Id. โ claimByTitleIncencitiveCase - The claim 'Claim with impoRtant stuff on It.' can be retrieved by it's title.
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - The claim 'Claim with impoRtant stuff on It.' is retrieved with 'imporTant dog toto important' search criteria.
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - No claim is retrieved with 'dog' search criteria.
Integration Test with 'restGcp' adapter.
โ claimById - error (46ms)
โ claimByTitleIncencitiveCase - error (96ms)
โ isClaimExistByTitleIncensitiveCase - error
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - error
โ saveClaim - error
save claim scenario
โ isClaimExistByTitleIncensitiveCase - The claim 'Claim with impoRtant stuff on It.' don't exist. (53ms)
โ saveClaim - The claim 'Claim with impoRtant stuff on It.' is saved. (69ms)
โ isClaimExistByTitleIncensitiveCase - The claim 'Claim with impoRtant stuff on It.' exist. (72ms)
โ claimById - The claim 'Claim with impoRtant stuff on It.' can be retrieved by Id. (50ms)
โ claimByTitleIncencitiveCase - The claim 'Claim with impoRtant stuff on It.' can be retrieved by it's title. (67ms)
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - The claim 'Claim with impoRtant stuff on It.' is retrieved with 'imporTant dog toto important' search criteria. (76ms)
โ retrieveClaimsThatContainInIncensitiveCaseTitleOneOrMoreIncencitiveCaseSearchCriteriaWords - No claim is retrieved with 'dog' search criteria.
Bangarang Member Interactor - Integration Test
Integration Test with 'fake' adapter.
โ retrievePreviousMemberClaimChoiceOnClaim - error
โ retrievePreviousMemberClaimChoiceOnClaim & saveMemberClaim - testclaimId - OK
โ saveMember - error - Member not saved
โ isMemberExistWithUsername & saveMember - OK - Member 'test' saved and exist
โ saveCredentials - OK - Credentials saved
โ saveCredentials - error - Credentials not saved
โ isCredentialsValid - OK - isCredentialsValid with bad password
โ isCredentialsValid - OK - isCredentialsValid with unexisting credentials
โ isCredentialsValid - OK - isCredentialsValid with good credentials
โ retrieveUserContract - Error
โ retrieveUserContract - OK - UserExist
โ retrieveUserContract - OK - User don't exist
Integration Test with 'RESTfake' adapter.
โ retrievePreviousMemberClaimChoiceOnClaim - error
โ retrievePreviousMemberClaimChoiceOnClaim & saveMemberClaim - testclaimId - OK
โ saveMember - error - Member not saved
โ isMemberExistWithUsername & saveMember - OK - Member 'test' saved and exist
โ saveCredentials - OK - Credentials saved
โ saveCredentials - error - Credentials not saved
โ isCredentialsValid - OK - isCredentialsValid with bad password
โ isCredentialsValid - OK - isCredentialsValid with unexisting credentials
โ isCredentialsValid - OK - isCredentialsValid with good credentials
โ retrieveUserContract - Error
โ retrieveUserContract - OK - UserExist
โ retrieveUserContract - OK - User don't exist
Integration Test with 'RESTGCPDatastore' adapter.
โ retrievePreviousMemberClaimChoiceOnClaim - error (40ms)
โ retrievePreviousMemberClaimChoiceOnClaim & saveMemberClaim - testclaimId - OK (126ms)
โ saveMember - error - Member not saved
โ isMemberExistWithUsername & saveMember - OK - Member 'test' saved and exist (113ms) โ saveCredentials - OK - Credentials saved (63ms)
โ saveCredentials - error - Credentials not saved
โ isCredentialsValid - OK - isCredentialsValid with bad password
โ isCredentialsValid - OK - isCredentialsValid with unexisting credentials
โ isCredentialsValid - OK - isCredentialsValid with good credentials
โ retrieveUserContract - Error
โ retrieveUserContract - OK - UserExist
โ retrieveUserContract - OK - User don't exist
72 passing (2s)