GithubHelp home page GithubHelp logo

php-coder / mystamps Goto Github PK

View Code? Open in Web Editor NEW
20.0 20.0 34.0 24.73 MB

The site about post stamps where you can create a virtual collection

Home Page: https://my-stamps.ru

License: GNU General Public License v2.0

Java 59.62% JavaScript 2.85% CSS 0.17% HTML 14.65% Groovy 13.84% Shell 1.23% RobotFramework 7.26% Dockerfile 0.17% HCL 0.22%

mystamps's People

Contributors

aarexer avatar aleksspb avatar annazarubina avatar asm0dey avatar azorinmsu avatar bahoss avatar benjaminyue avatar bodom91 avatar cssru avatar demianova avatar dependabot-support avatar flexjoy avatar gibg1an avatar ivanosipov95 avatar krivenkoalexander avatar mscibilia avatar mukeshk avatar n583wxdh0j avatar php-coder avatar shagbark avatar shkarin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mystamps's Issues

Register/Login with Facebook

Useful links:

User may add series to own collection

At page with series info page, registered user may add series to own collection. After that at page with collection user can see all series in his collection.

Moving to Spring 4.1

SeriesServiceImpl.findBy(Collection): add unit tests

  • exception should be thrown if collection is null
  • exception should be thrown if collection id is null
  • should call seriesDao.findByAsSeriesInfo() and pass collection id and lang as arguments
  • should pass null when lang is null

Technical Debt for: 227b9a5 (#2)

Show statistic about user's collection

On collection page any user should see a statistic about his collection:

  • categories
  • countries
  • series
  • stamps

If collection is empty then statistic shouldn't be shown.

User may specify country name on Russian

During country's creation, user should have ability to specify country name on Russian. This localized name will be shown later on site for all users with Russian locale.

Validate year of release

Add year field validation at series creation page. It must be inside range [1840, $currentYear].

Show charts on collection page

When any user opens page with non-empty collection he should see 2 pie charts:

  • by categories
  • by countries

We should correctly handle cases when

  • user has series with unknown countries (we should group them together and show in gray color)
  • some of categories/countries represent less than 1% (we should group them together and show in gray color)

May be we could use Google Charts (https://developers.google.com/chart/) for that:

Add integration tests to ensure that lang attribute is changing

We should implement integration tests for such cases:

$ curl -s 'http://localhost:8081/' -H 'Accept-Language: ru' | grep '<body'
    <body lang="ru">
$ curl -s 'http://localhost:8081/' -H 'Accept-Language: en' | grep '<body'
    <body lang="en">
$ curl -s 'http://localhost:8081/' -H 'Accept-Language: fr' | grep '<body'
    <body lang="en">

Tech Debt for fb24a23 (#31)

Replace Apache DBCP with HikariCP

Moving to Bootstrap 3.x

We should port our views to use Bootstrap 3.x instead of 2.x which is a bit outdated.

  • Port views (static + dynamic):
    • account/activate.html
    • account/auth.html
    • account/register.html
    • category/add.html
    • category/info.html
    • collection/info.html
    • country/add.html
    • country/info.html
    • error/401.html
    • error/403.html
    • error/404.html
    • error/500.html
    • series/add.html
    • series/info.html
    • site/index.html
  • Test in IE
  • Update NEWS.txt

Port integration tests to Cucumber-jvm

Cucumber (https://github.com/cucumber/cucumber-jvm) is a great framework for writing acceptance tests. We definitely should use it instead of our's own.

  • Read https://cucumber.io/docs/reference
  • Read https://cucumber.io/docs/reference/jvm
  • Read https://thomassundberg.wordpress.com/2014/05/29/cucumber-jvm-hello-world/
  • Read http://www.slideshare.net/alan_parkinson/test-automation-with-cucumberjvm
  • Watch https://www.youtube.com/playlist?list=PL_noPv5wmuO_t6yYbPfjwhJFOOcio89tI
    • Setting Up Cucumber
    • Writing a Basic Script
    • Writing a Basic WebDriver Script
    • Parameter Handling
    • Scenario Data Tables
    • Scenario Outline Data Tables
    • Scenario Hooks
    • Maven Setup
    • Cucumber Reporting
    • Test Suites
    • Drop Downs, Checkboxes and Radios
    • Background Script
    • Multiple Step Definition Classes
    • Page Objects
  • Port our test
    • WhenAdminAddCategory
      • categoryNameEnShouldNotBeTooShort()
      • categoryNameRuShouldNotBeTooShort()
      • categoryNameEnShouldNotBeTooLong()
      • categoryNameRuShouldNotBeTooLong()
      • categoryNameEnShouldBeUnique()
      • categoryNameRuShouldBeUnique()
      • categoryNameEnWithAllowedCharactersShouldBeAccepted()
      • categoryNameRuWithAllowedCharactersShouldBeAccepted()
      • categoryNameEnWithForbiddenCharactersShouldBeRejected()
      • categoryNameRuWithForbiddenCharactersShouldBeRejected()
      • categoryNameEnShouldNotStartsFromHyphen()
      • categoryNameRuShouldNotStartsFromHyphen()
      • categoryNameEnShouldNotEndsWithHyphen()
      • categoryNameRuShouldNotEndsWithHyphen()
      • categoryNameEnShouldBeStripedFromLeadingAndTrailingSpaces()
      • categoryNameRuShouldBeStripedFromLeadingAndTrailingSpaces()
      • shouldBeRedirectedToPageWithInfoAboutCategoryAfterCreation()
      • categoryShouldBeAvailableForChoosingAtPageWithSeries()
    • WhenAdminAddCountry
      • countryNameEnShouldNotBeTooShort()
      • countryNameRuShouldNotBeTooShort()
      • countryNameEnShouldNotBeTooLong()
      • countryNameRuShouldNotBeTooLong()
      • countryNameEnShouldBeUnique()
      • countryNameRuShouldBeUnique()
      • countryNameEnWithAllowedCharactersShouldBeAccepted()
      • countryNameRuWithAllowedCharactersShouldBeAccepted()
      • countryNameEnWithForbiddenCharactersShouldBeRejected()
      • countryNameRuWithForbiddenCharactersShouldBeRejected()
      • countryNameEnShouldNotStartsFromHyphen()
      • countryNameRuShouldNotStartsFromHyphen()
      • countryNameEnShouldNotEndsWithHyphen()
      • countryNameRuShouldNotEndsWithHyphen()
      • countryNameEnShouldBeStripedFromLeadingAndTrailingSpaces()
      • countryNameRuShouldBeStripedFromLeadingAndTrailingSpaces()
      • shouldBeRedirectedToPageWithInfoAboutCountryAfterCreation()
      • countryShouldBeAvailableForChoosingAtPageWithSeries()
    • WhenAdminAddSeries
      • catalogNumbersShouldAcceptValidValues()
      • quantityShouldBeANumber()
      • quantityShouldBeNotLessThanLimit()
      • quantityShouldNotBeGreaterThanLimit()
      • catalogNumbersShouldRejectInvalidValues()
      • catalogPricesShouldRejectInvalidValues()
      • commentShouldNotBeTooLong()
      • imageSizeMustBeGreaterThanZero()
      • issueYearFieldShouldHaveOptionsForRangeFrom1840ToCurrentYear()
      • catalogNumbersShouldBeStripedFromSpaces()
      • commentShouldBeStripedFromLeadingAndTrailingSpaces()
      • shouldCreateSeriesWithOnlyRequiredFieldsFilled()
      • shouldCreateSeriesWithAllFieldsFilled()
      • shouldIgnoreDuplicatedCatalogNumbers()
      • shouldAllowExistingCatalogNumbers()
    • WhenAdminAtIndexPage
      • shouldExistsWelcomeText()
      • shouldExistsLinkForAddingSeries()
      • shouldExistsLinkForAddingCountries()
      • shouldExistsLinkForAddingCategories()
    • WhenAnonymousUserActivateAccount
      • activationKeyShouldBeAutoFilledFromURL()
      • loginAndPasswordShouldBeDifferent()
      • passwordAndConfirmationShouldMatch()
      • loginShouldNotBeTooShort()
      • mostShortLoginShouldBeAccepted()
      • loginShouldNotBeTooLong()
      • mostLongLoginShouldBeAccepted()
      • loginWithAllowedCharactersShouldBeAccepted()
      • loginWithForbiddenCharactersShouldBeRejected()
      • loginShouldBeUnique()
      • nameShouldNotBeTooLong()
      • nameWithAllowedCharactersShouldBeAccepted()
      • nameWithForbiddenCharactersShouldBeRejected()
      • nameShouldNotStartsFromHyphen()
      • nameShouldNotEndsWithHyphen()
      • nameShouldBeStripedFromLeadingAndTrailingSpaces()
      • passwordShouldNotBeTooShort()
      • mostShortPasswordShouldBeAccepted()
      • passwordWithAllowedCharactersShouldBeAccepted()
      • passwordWithForbiddenCharactersShouldBeRejected()
      • activationKeyShouldNotBeTooShort()
      • activationKeyShouldNotBeTooLong()
      • activationKeyWithForbiddenCharactersShouldBeRejected()
      • wrongActivationKeyShouldBeRejected()
      • afterActivationShouldExistsMessageWithLinkForAuthentication()
      • activationShouldPassWhenUserProvidedEmptyName()
    • WhenAnonymousUserAddCategory
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
    • WhenAnonymousUserAddCountry
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
    • WhenAnonymousUserAddSeries
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
    • WhenAnonymousUserAtForbiddenPage
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
    • WhenAnonymousUserAtIndexPage
      • shouldAbsentWelcomeText()
      • linkForAddingSeriesShouldBeAbsent()
      • linkForAddingCategoriesShouldBeAbsent()
      • linkForAddingCountriesShouldBeAbsent()
    • WhenAnonymousUserAtUnauthorizedPage
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
    • WhenAnonymousUserAuthenticates
      • emptyValuesShouldBeConsideredAsInvalidCredentials()
      • invalidCredentialsShouldBeRejected()
      • validCredentialsShouldAuthenticateUserOnSite()
    • WhenAnonymousUserOpenNotExistingCategoryPage
      • shouldShow404Page()
    • WhenAnonymousUserOpenNotExistingCountryPage
      • shouldShow404Page()
    • WhenAnonymousUserOpenNotExistingSeriesPage
      • shouldShow404Page()
    • WhenAnonymousUserOpenNotExistingPage
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
      • incidentShouldBeLoggedToDatabase()
      • shouldShow404Page()
    • WhenAnonymousUserOpenTogglzConsole
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
    • WhenAnonymousUserRegisterAccount
      • shouldExistsMessageWithLinkToAuthenticationPage()
      • emailShouldNotBeTooLong()
      • emailShouldBeValid()
      • emailShouldBeStripedFromLeadingAndTrailingSpaces()
      • successfulMessageShouldBeShownAfterRegistration()
      • emailWithActivationKeyShouldBeSentAfterRegistration()
    • WhenUserAddSeries
      • catalogNumbersShouldAcceptValidValues()
      • quantityShouldBeANumber()
      • quantityShouldBeNotLessThanLimit()
      • quantityShouldNotBeGreaterThanLimit()
      • catalogNumbersShouldRejectInvalidValues()
      • catalogPricesShouldRejectInvalidValues()
      • imageSizeMustBeGreaterThanZero()
      • issueYearFieldShouldHaveOptionsForRangeFrom1840ToCurrentYear()
      • catalogNumbersShouldBeStripedFromSpaces()
      • shouldCreateSeriesWithOnlyRequiredFieldsFilled()
      • shouldCreateSeriesWithAllFieldsFilled()
      • shouldIgnoreDuplicatedCatalogNumbers()
      • shouldAllowExistingCatalogNumbers()
    • WhenUserAtActivateAccountPage
      • messageShouldBeShown()
      • messageShouldBeShown()
      • formWithLegendShouldBeAbsent()
    • WhenUserAtAuthPage
      • messageShouldBeShown()
      • formWithLegendShouldBeAbsent()
    • WhenUserAtIndexPage
      • shouldExistsWelcomeText()
      • shouldExistsLinkForAddingSeries()
      • linkForAddingCategoriesShouldBeAbsent()
      • linkForAddingCountriesShouldBeAbsent()
    • WhenUserAtRegisterAccountPage
      • messageShouldBeShown()
      • formWithLegendShouldBeAbsent()
    • WhenUserLogsOut.shouldRedirectAndClearSession()
    • WhenUserOpenTogglzConsole
      • shouldExistsErrorMessage()
      • shouldExistsErrorCode()
  • Port checks for required fields
    • add category
    • add country
    • add series
    • registration
    • activation
  • Port standart checks
  • Review and remove branch re_131_thucidies
  • Review and remove branch re_131_thucidies_new
  • Review and remove branch re_131_thucidies_new_new
  • Review and remove branch gh18_serenity
  • Update README.md
  • Add package-info.java files
  • Update wiki if it's required
  • Remove TestNG dependency
  • Remove fest-assert dependency
  • Update src/main/config/checkstyle-suppressions.xml
  • Update src/main/config/checkstyle.xml (remove testng and fest; add junit and hamcrest)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.