Migrate PRs from archived repos to monorepo

Co-authored-by: Joseph Ngugi <jngugi88@gmail.com>
This commit is contained in:
Matt Rider 2019-03-22 14:40:23 -03:00
parent 3a768a66d5
commit aca3562e22
9 changed files with 148 additions and 0 deletions

View File

@ -57,6 +57,7 @@ const permissions = shield({
UpdateBadge: isAdmin,
DeleteBadge: isAdmin,
AddUserBadges: isAdmin,
addSocialMedia: isAuthenticated,
// AddBadgeRewarded: isAdmin,
// RemoveBadgeRewarded: isAdmin,
reward: isAdmin,

View File

@ -100,6 +100,25 @@ export default {
return encode(currentUser)
}
},
addSocialMedia: async (_, { url }, { driver, user }) => {
const session = driver.session()
const { email } = user
const result = await session.run(
`MATCH (user:User {email: $userEmail})
SET user.socialMedia = [$url]
RETURN user {.socialMedia}`,
{
userEmail: email,
url
}
)
session.close()
const [currentUser] = result.records.map(record => {
return record.get('user')
})
return !!currentUser.socialMedia
}
}
}

View File

@ -26,6 +26,7 @@ type Mutation {
disable(id: ID!): ID
enable(id: ID!): ID
reward(fromBadgeId: ID!, toUserId: ID!): ID
addSocialMedia(url: String!): Boolean!
unreward(fromBadgeId: ID!, toUserId: ID!): ID
"Shout the given Type and ID"
shout(id: ID!, type: ShoutTypeEnum): Boolean! @cypher(statement: """
@ -120,6 +121,7 @@ type User {
location: Location @cypher(statement: "MATCH (this)-[:IS_IN]->(l:Location) RETURN l")
locationName: String
about: String
socialMedia: [String]
createdAt: String
updatedAt: String

View File

@ -0,0 +1,14 @@
Feature: List Social Media Accounts
As a User
I'd like to enter my social media
So I can show them to other users to get in contact
Background:
Given I have a user account
And I am logged in
And I am on the "settings" page
Scenario: Adding Social Media
Given I click on the "My social media" link
Then I should be on the "/settings/my-social-media" page
And I should be able to add a social media link

View File

@ -61,3 +61,30 @@ Then(
'I can see my new name {string} when I click on my profile picture in the top right',
name => matchNameInUserMenu(name)
)
When('I click on the {string} link', link => {
cy.get('a')
.contains(link)
.click()
})
Then('I should be on the {string} page', page => {
cy.location()
.should(loc => {
expect(loc.pathname).to.eq(page)
})
.get('h3')
.should('contain', 'My social media')
})
Then('I should be able to add a social media link', () => {
cy.get("input[name='social-media']")
.type('https://freeradical.zone/@mattwr18')
.get('button')
.contains('Add social media')
.click()
.get('.iziToast-message')
.should('contain', 'Updated user')
.get('a')
.contains("src='https://freeradical.zone/@mattwr18'")
})

View File

@ -47,6 +47,11 @@
},
"languages": {
"name": "Languages"
},
"social-media": {
"name": "My social media",
"submit": "Add social media",
"success": "Updated user"
}
},
"admin": {

View File

@ -54,6 +54,10 @@ export default {
{
name: this.$t('settings.languages.name'),
path: `/settings/languages`
},
{
name: this.$t('settings.social-media.name'),
path: `/settings/my-social-media`
}
]
}

View File

@ -0,0 +1,75 @@
<template>
<ds-card :header="$t('settings.social-media.name')">
<div>
<ds-input
v-model="value"
placeholder="Add social media url"
name="social-media"
:schema="{type: 'url'}"
/>
</div>
<ds-space margin-top="base">
<div>
<ds-button
primary
@click="handleAddSocialMedia"
>
{{ $t('settings.social-media.submit') }}
</ds-button>
</div>
</ds-space>
<ds-space
v-if="currentUser.socialMedia && currentUser.socialMedia.length"
margin-top="base"
margin="x-small"
>
<div>
<img
:src="currentUser.socialMedia[0] + '/favicon.ico'"
alt=""
>
</div>
</ds-space>
</ds-card>
</template>
<script>
import gql from 'graphql-tag'
import { mapGetters } from 'vuex'
export default {
props: {
socialMedia: {
type: Array,
default: () => []
}
},
data() {
return {
value: ''
}
},
computed: {
...mapGetters({
currentUser: 'auth/user'
})
},
methods: {
handleAddSocialMedia() {
this.$apollo
.mutate({
mutation: gql`
mutation($url: String!) {
addSocialMedia(url: $url)
}
`,
variables: {
url: this.value
}
})
.then(() =>
this.$toast.success(this.$t('settings.social-media.success'))
)
}
}
}
</script>

View File

@ -83,6 +83,7 @@ export const actions = {
role
about
locationName
socialMedia
}
}`)
})