I have a page with an article about some party called, lets say, "Dev Party 2018" that will occur next week. The main image test-image.jpg of this article has this url: https://testing.com/test-image.jpg?v=0 .
Now I want Google to display this article with its image as a thumbnail in among the search results for a query "Dev Party 2018".
My page looks like this:
As you can see I am not using my article's main image test-image.jpg on the page. There is only a video that has test-image.jpg as a thumbnail.
On the page I used og:image meta tags:
<meta property="og:image" content="https://testing.com/test-image.jpg?v=0" />
and I also used JSON-ld format for structured data for the article video:
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "VideoObject",
"name" : "Dev party 2018",
"duration" : "T00H02M19S",
"thumbnailUrl" : "https://testing.com/test-image-thumbnail.jpg",
"description" : "dev party 2018 programme",
"uploadDate" : "2018-07-20 11:40:35",
"keywords" : "dev party 2018, progrmme"
}
</script>
My json-ld works fine, I already tested that using Google Structured Data Tester.
Now notice that inside article body there is a block that serves as a link to another related article. This block has its image - GREEN colored.
The problem is Google showed this GREEN-highlighted image (of another article) instead of the image https://testing.com/test-image.jpg that was specified in <meta property="og:image" content="https://testing.com/test-image.jpg?v=0" /> on the page.
Is that caused by not using the main article's image within article itself? How do I fix this issue if I do not want to use that image in the article? Do I need to make json-ld also for the whole article? I thought you need only og:image with the main image specified.

If you create a structured data markup for an image that is hidden from users in the main visible content of the web page then Google can perceive it as a web spam and it has a high risk of getting a fine from Google. The Manual Actions Report => Spammy structured markup informs us:
Probably the most appropriate variant is to delete the image for another link from the main content of the web page. If this does not work for you then you can set the image in the spoiler / accordion. In this case, Google will treat this as less important content than the content visible in the direct stream.
Also note that according to the guide of Google for Articles, the property image is required for application.