Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(MOPLAT-619): Context menu for artwork items #8606

Merged
merged 28 commits into from
May 22, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b1789b3
feat: add react-native-context-menu-view
gkartalis Apr 20, 2023
e35d9d5
chore(bonus): remove artistfixture unused file
gkartalis Apr 20, 2023
d72bc7a
refactor: wip
gkartalis Apr 27, 2023
7850749
refactor: add ff and use it
gkartalis May 2, 2023
14f7941
chore: edit enableContext menu jsdoc
gkartalis May 2, 2023
d24a6e0
refactor: to function
gkartalis May 2, 2023
ffbf300
fix: clean up contextMenuTouchable to prevent rerenders
gkartalis May 2, 2023
1dad7ac
refactor: abstract everything in a hook
gkartalis May 3, 2023
b05274a
refactor: renames and utilize relay types
gkartalis May 4, 2023
3adb6db
refactor: interface to type
gkartalis May 4, 2023
95d7c01
refactor: renaming
gkartalis May 4, 2023
5db87a1
refactor: remove ff hook and move it to useArtworkItemContextMenu
gkartalis May 4, 2023
22d07ed
refactor: more renames
gkartalis May 4, 2023
b149945
feat: add create alert to quick actions
gkartalis May 4, 2023
14344d4
refactor: moving stuff around
gkartalis May 4, 2023
6b23d9a
chore(cleanup): 🧹 remove stray logs
gkartalis May 4, 2023
f902063
refactor: contextMenuArtwork
gkartalis May 4, 2023
b11c035
test: fixes
gkartalis May 4, 2023
ef50b8c
tests(refactor): fix breaking old artwork grid item tests
gkartalis May 4, 2023
074a4a3
refactor: pr comments
gkartalis May 4, 2023
a932e00
refactor(tests): use setupTestWrapper, maybe fix hang?
damassi May 4, 2023
a96c7a2
refactor(context): Decouple create alert and colocate context menu co…
damassi May 8, 2023
7daf50f
point to fork and add padding
brainbicycle May 18, 2023
9b64cce
Merge branch 'main' into gkartalis/MOPLAT-619
gkartalis May 22, 2023
233a111
refactor: tiny refactor after resolving conflicts
gkartalis May 22, 2023
af0f5c6
test: fix testS
gkartalis May 22, 2023
5a2ee87
fix: test issues double mocking
gkartalis May 22, 2023
3480258
feat: mark as ready for release
gkartalis May 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/app/Components/ArtworkGrids/ArtworkGridItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,7 @@ export default createFragmentContainer(Artwork, {
artwork: graphql`
fragment ArtworkGridItem_artwork on Artwork
@argumentDefinitions(includeAllImages: { type: "Boolean", defaultValue: false }) {
...useCreateArtworkAlert_artwork
damassi marked this conversation as resolved.
Show resolved Hide resolved
title
date
saleMessage
Expand Down Expand Up @@ -473,7 +474,6 @@ export default createFragmentContainer(Artwork, {
aspectRatio
}
realizedPrice
...useCreateArtworkAlert_artwork
}
`,
})
Expand Down
2 changes: 1 addition & 1 deletion src/app/Components/ArtworkRail/ArtworkRailCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,7 @@ const RecentlySoldCardSection: React.FC<

const artworkFragment = graphql`
fragment ArtworkRailCard_artwork on Artwork @argumentDefinitions(width: { type: "Int" }) {
...useCreateArtworkAlert_artwork
id
slug
internalID
Expand Down Expand Up @@ -464,7 +465,6 @@ const artworkFragment = graphql`
}
title
realizedPrice
...useCreateArtworkAlert_artwork
}
`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ export const ArtworkScreenHeaderCreateAlert: React.FC<ArtworkScreenHeaderCreateA

const ArtworkScreenHeaderCreateAlert_artwork = graphql`
fragment ArtworkScreenHeaderCreateAlert_artwork on Artwork {
isForSale
...useCreateArtworkAlert_artwork
isForSale
}
`

Expand Down
44 changes: 14 additions & 30 deletions src/app/Scenes/Sale/BuyNowArtworksRail.tests.tsx
Original file line number Diff line number Diff line change
@@ -1,50 +1,34 @@
import { BuyNowArtworksRailTestsQuery } from "__generated__/BuyNowArtworksRailTestsQuery.graphql"
import { renderWithWrappers } from "app/utils/tests/renderWithWrappers"
import { resolveMostRecentRelayOperation } from "app/utils/tests/resolveMostRecentRelayOperation"
import { graphql, QueryRenderer } from "react-relay"
import { createMockEnvironment } from "relay-test-utils"
import { setupTestWrapper } from "app/utils/tests/setupTestWrapper"
import { graphql } from "react-relay"
import { BuyNowArtworksRailContainer } from "./Components/BuyNowArtworksRail"

describe("BuyNowArtworksRail", () => {
let mockEnvironment: ReturnType<typeof createMockEnvironment>
const TestRenderer = () => (
<QueryRenderer<BuyNowArtworksRailTestsQuery>
environment={mockEnvironment}
query={graphql`
query BuyNowArtworksRailTestsQuery($id: String!) @relay_test_operation {
sale(id: $id) {
...BuyNowArtworksRail_sale
}
const { renderWithRelay } = setupTestWrapper({
Component: BuyNowArtworksRailContainer,
query: graphql`
query BuyNowArtworksRailTestsQuery($id: String!) @relay_test_operation {
sale(id: $id) {
...BuyNowArtworksRail_sale
}
`}
variables={{ id: "sale-id" }}
render={({ props }) => {
if (props?.sale) {
return <BuyNowArtworksRailContainer sale={props.sale} />
}
return null
}}
/>
)
beforeEach(() => {
mockEnvironment = createMockEnvironment()
}
`,
variables: { id: "sale-id" },
})

it(`renders title "Buy now"`, () => {
const { getByText } = renderWithWrappers(<TestRenderer />)
resolveMostRecentRelayOperation(mockEnvironment, mockProps)
const { getByText } = renderWithRelay(mockProps)
expect(getByText("Artworks Available to Buy Now")).toBeDefined()
})

it("renders nothing if there are no artworks", () => {
const { queryAllByTestId } = renderWithWrappers(<TestRenderer />)
const noArtworksProps = {
Sale: () => ({
saleArtworksConnection: {
edges: [],
},
}),
}
resolveMostRecentRelayOperation(mockEnvironment, noArtworksProps)
const { queryAllByTestId } = renderWithRelay(noArtworksProps)
expect(queryAllByTestId("bnmo-rail-wrapper")).toHaveLength(0)
})
})
Expand Down
46 changes: 15 additions & 31 deletions src/app/Scenes/Sale/Components/NewBuyNowArtworksRail.tests.tsx
Original file line number Diff line number Diff line change
@@ -1,53 +1,37 @@
import { screen } from "@testing-library/react-native"
import { NewBuyNowArtworksRailTestsQuery } from "__generated__/NewBuyNowArtworksRailTestsQuery.graphql"
import { renderWithWrappers } from "app/utils/tests/renderWithWrappers"
import { resolveMostRecentRelayOperation } from "app/utils/tests/resolveMostRecentRelayOperation"
import { graphql, QueryRenderer } from "react-relay"
import { createMockEnvironment } from "relay-test-utils"
import { setupTestWrapper } from "app/utils/tests/setupTestWrapper"
import { graphql } from "react-relay"
import { NewBuyNowArtworksRailContainer } from "./NewBuyNowArtworksRail"

describe("NewBuyNowArtworksRail", () => {
let mockEnvironment: ReturnType<typeof createMockEnvironment>
const TestRenderer = () => (
<QueryRenderer<NewBuyNowArtworksRailTestsQuery>
environment={mockEnvironment}
query={graphql`
query NewBuyNowArtworksRailTestsQuery($id: String!) @relay_test_operation {
sale(id: $id) {
...NewBuyNowArtworksRail_sale
}
const { renderWithRelay } = setupTestWrapper({
Component: NewBuyNowArtworksRailContainer,
query: graphql`
query NewBuyNowArtworksRailTestsQuery($id: String!) @relay_test_operation {
sale(id: $id) {
...NewBuyNowArtworksRail_sale
}
`}
variables={{ id: "sale-id" }}
render={({ props }) => {
if (props?.sale) {
return <NewBuyNowArtworksRailContainer sale={props.sale} />
}
return null
}}
/>
)
beforeEach(() => {
mockEnvironment = createMockEnvironment()
}
`,
variables: { id: "sale-id" },
})
it(`renders "Buy now" rail and artworks`, () => {
renderWithWrappers(<TestRenderer />)
resolveMostRecentRelayOperation(mockEnvironment, mockProps)

it(`renders "Buy now" rail and artworks`, () => {
renderWithRelay(mockProps)
expect(screen.queryByText("Artworks Available to Buy Now")).toBeDefined()
expect(screen.queryAllByText("Best artwork ever, 2019")).toBeDefined()
})

it("renders nothing if there are no artworks", () => {
const { queryAllByTestId } = renderWithWrappers(<TestRenderer />)
const noArtworksProps = {
Sale: () => ({
artworksConnection: {
edges: [],
},
}),
}
resolveMostRecentRelayOperation(mockEnvironment, noArtworksProps)

const { queryAllByTestId } = renderWithRelay(noArtworksProps)
expect(queryAllByTestId("bnmo-rail-wrapper")).toHaveLength(0)
})
})
Expand Down